diff --git a/lib/web_ui/test/canvaskit/image_test.dart b/lib/web_ui/test/canvaskit/image_test.dart new file mode 100644 index 0000000000000..f6ba8031cf1a4 --- /dev/null +++ b/lib/web_ui/test/canvaskit/image_test.dart @@ -0,0 +1,37 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:async'; + +import 'package:test/bootstrap/browser.dart'; +import 'package:test/test.dart'; +import 'package:ui/src/engine.dart'; +import 'package:ui/ui.dart' as ui; + +import 'common.dart'; + +void main() { + internalBootstrapBrowserTest(() => testMain); +} + +void testMain() { + setUpCanvasKitTest(); + + test('toImage succeeds', () async { + final ui.Image image = await _createImage(); + expect(image.runtimeType.toString(), equals('CkImage')); + image.dispose(); + // TODO(hterkelsen): https://github.com/flutter/flutter/issues/109265 + }, skip: isFirefox); +} + +Future _createImage() => _createPicture().toImage(10, 10); + +ui.Picture _createPicture() { + final ui.PictureRecorder recorder = ui.PictureRecorder(); + final ui.Canvas canvas = ui.Canvas(recorder); + const ui.Rect rect = ui.Rect.fromLTWH(0.0, 0.0, 100.0, 100.0); + canvas.clipRect(rect); + return recorder.endRecording(); +} diff --git a/lib/web_ui/test/engine/image/image_test.dart b/lib/web_ui/test/engine/image/image_test.dart new file mode 100644 index 0000000000000..8d690483a7ea6 --- /dev/null +++ b/lib/web_ui/test/engine/image/image_test.dart @@ -0,0 +1,32 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:test/bootstrap/browser.dart'; +import 'package:test/test.dart'; +import 'package:ui/ui.dart' as ui; + +void main() { + internalBootstrapBrowserTest(() => testMain); +} + +Future testMain() async { + + test('toImage succeeds', () async { + final ui.Image image = await _createImage(); + expect(image.runtimeType.toString(), equals('HtmlImage')); + image.dispose(); + // TODO(polina-c): unskip the test when bug is fixed: + // https://github.com/flutter/engine/pull/35791 + }, skip: true); +} + +Future _createImage() => _createPicture().toImage(10, 10); + +ui.Picture _createPicture() { + final ui.PictureRecorder recorder = ui.PictureRecorder(); + final ui.Canvas canvas = ui.Canvas(recorder); + const ui.Rect rect = ui.Rect.fromLTWH(0.0, 0.0, 100.0, 100.0); + canvas.clipRect(rect); + return recorder.endRecording(); +} diff --git a/testing/dart/BUILD.gn b/testing/dart/BUILD.gn index 4321cd37f55ae..712bae0f1d56d 100644 --- a/testing/dart/BUILD.gn +++ b/testing/dart/BUILD.gn @@ -25,6 +25,7 @@ tests = [ "image_filter_test.dart", "image_resize_test.dart", "image_shader_test.dart", + "image_test.dart", "isolate_name_server_test.dart", "isolate_test.dart", "lerp_test.dart", diff --git a/testing/dart/image_test.dart b/testing/dart/image_test.dart new file mode 100644 index 0000000000000..4cb44267b6f25 --- /dev/null +++ b/testing/dart/image_test.dart @@ -0,0 +1,26 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:async'; +import 'dart:ui'; + +import 'package:litetest/litetest.dart'; + +void main() { + test('toImage succeeds', () async { + final Image image = await _createImage(); + expect(image.runtimeType.toString(), equals('Image')); + image.dispose(); + }); +} + +Future _createImage() => _createPicture().toImage(10, 10); + +Picture _createPicture() { + final PictureRecorder recorder = PictureRecorder(); + final Canvas canvas = Canvas(recorder); + const Rect rect = Rect.fromLTWH(0.0, 0.0, 100.0, 100.0); + canvas.clipRect(rect); + return recorder.endRecording(); +}