From 6ed058a805021ce310cd397ba992eb96da8a9459 Mon Sep 17 00:00:00 2001 From: Yegor Jbanov Date: Thu, 9 Apr 2020 14:30:13 -0700 Subject: [PATCH] update tests --- .../src/engine/surface/recording_canvas.dart | 1 + lib/web_ui/test/canvas_test.dart | 14 +++++++------ .../test/engine/recording_canvas_test.dart | 21 ++++++++++++------- .../engine/canvas_blend_golden_test.dart | 3 ++- .../engine/canvas_clip_path_test.dart | 3 ++- .../engine/canvas_context_test.dart | 3 ++- .../engine/canvas_draw_image_golden_test.dart | 1 + .../engine/canvas_reuse_test.dart | 6 ++++-- .../engine/conic_golden_test.dart | 3 ++- .../engine/draw_vertices_golden_test.dart | 3 ++- .../engine/linear_gradient_golden_test.dart | 3 ++- .../multiline_text_clipping_golden_test.dart | 7 ++++--- .../engine/path_metrics_test.dart | 3 ++- .../engine/path_to_svg_golden_test.dart | 3 ++- .../engine/path_transform_test.dart | 3 ++- .../engine/radial_gradient_golden_test.dart | 3 ++- 16 files changed, 52 insertions(+), 28 deletions(-) diff --git a/lib/web_ui/lib/src/engine/surface/recording_canvas.dart b/lib/web_ui/lib/src/engine/surface/recording_canvas.dart index 50e326233c72a..0a72b7a5f068b 100644 --- a/lib/web_ui/lib/src/engine/surface/recording_canvas.dart +++ b/lib/web_ui/lib/src/engine/surface/recording_canvas.dart @@ -82,6 +82,7 @@ class RecordingCanvas { /// /// The [clipRect] specifies the clip applied to the picture (screen clip at a minimum). void apply(EngineCanvas engineCanvas, ui.Rect clipRect) { + assert(_debugRecordingEnded); if (_debugDumpPaintCommands) { final StringBuffer debugBuf = StringBuffer(); int skips = 0; diff --git a/lib/web_ui/test/canvas_test.dart b/lib/web_ui/test/canvas_test.dart index ce9d1499caca2..cb7bcd2fbcf57 100644 --- a/lib/web_ui/test/canvas_test.dart +++ b/lib/web_ui/test/canvas_test.dart @@ -36,16 +36,17 @@ void main() { } testCanvas('draws laid out paragraph', (EngineCanvas canvas) { - final RecordingCanvas recordingCanvas = - RecordingCanvas(const ui.Rect.fromLTWH(0, 0, 100, 100)); + final ui.Rect screenRect = const ui.Rect.fromLTWH(0, 0, 100, 100); + final RecordingCanvas recordingCanvas = RecordingCanvas(screenRect); final ui.ParagraphBuilder builder = ui.ParagraphBuilder(ui.ParagraphStyle()); builder.addText('sample'); paragraph = builder.build(); paragraph.layout(const ui.ParagraphConstraints(width: 100)); recordingCanvas.drawParagraph(paragraph, const ui.Offset(10, 10)); + recordingCanvas.endRecording(); canvas.clear(); - recordingCanvas.apply(canvas); + recordingCanvas.apply(canvas, screenRect); }, whenDone: () { expect(mockCanvas.methodCallLog, hasLength(3)); @@ -60,15 +61,16 @@ void main() { testCanvas('ignores paragraphs that were not laid out', (EngineCanvas canvas) { - final RecordingCanvas recordingCanvas = - RecordingCanvas(const ui.Rect.fromLTWH(0, 0, 100, 100)); + final ui.Rect screenRect = const ui.Rect.fromLTWH(0, 0, 100, 100); + final RecordingCanvas recordingCanvas = RecordingCanvas(screenRect); final ui.ParagraphBuilder builder = ui.ParagraphBuilder(ui.ParagraphStyle()); builder.addText('sample'); final ui.Paragraph paragraph = builder.build(); recordingCanvas.drawParagraph(paragraph, const ui.Offset(10, 10)); + recordingCanvas.endRecording(); canvas.clear(); - recordingCanvas.apply(canvas); + recordingCanvas.apply(canvas, screenRect); }, whenDone: () { expect(mockCanvas.methodCallLog, hasLength(2)); expect(mockCanvas.methodCallLog[0].methodName, 'clear'); diff --git a/lib/web_ui/test/engine/recording_canvas_test.dart b/lib/web_ui/test/engine/recording_canvas_test.dart index 2757ba96fd4a4..de3fa3c9c3c92 100644 --- a/lib/web_ui/test/engine/recording_canvas_test.dart +++ b/lib/web_ui/test/engine/recording_canvas_test.dart @@ -12,9 +12,10 @@ import '../mock_engine_canvas.dart'; void main() { RecordingCanvas underTest; MockEngineCanvas mockCanvas; + final Rect screenRect = Rect.largest; setUp(() { - underTest = RecordingCanvas(Rect.largest); + underTest = RecordingCanvas(screenRect); mockCanvas = MockEngineCanvas(); }); @@ -25,7 +26,8 @@ void main() { test('Happy case', () { underTest.drawDRRect(rrect, rrect.deflate(1), somePaint); - underTest.apply(mockCanvas); + underTest.endRecording(); + underTest.apply(mockCanvas, screenRect); _expectDrawCall(mockCanvas, { 'outer': rrect, @@ -36,7 +38,8 @@ void main() { test('Inner RRect > Outer RRect', () { underTest.drawDRRect(rrect, rrect.inflate(1), somePaint); - underTest.apply(mockCanvas); + underTest.endRecording(); + underTest.apply(mockCanvas, screenRect); // Expect nothing to be called expect(mockCanvas.methodCallLog.length, equals(1)); expect(mockCanvas.methodCallLog.single.methodName, 'endOfPaint'); @@ -45,7 +48,8 @@ void main() { test('Inner RRect not completely inside Outer RRect', () { underTest.drawDRRect( rrect, rrect.deflate(1).shift(const Offset(0.0, 10)), somePaint); - underTest.apply(mockCanvas); + underTest.endRecording(); + underTest.apply(mockCanvas, screenRect); // Expect nothing to be called expect(mockCanvas.methodCallLog.length, equals(1)); expect(mockCanvas.methodCallLog.single.methodName, 'endOfPaint'); @@ -53,7 +57,8 @@ void main() { test('Inner RRect same as Outer RRect', () { underTest.drawDRRect(rrect, rrect, somePaint); - underTest.apply(mockCanvas); + underTest.endRecording(); + underTest.apply(mockCanvas, screenRect); // Expect nothing to be called expect(mockCanvas.methodCallLog.length, equals(1)); expect(mockCanvas.methodCallLog.single.methodName, 'endOfPaint'); @@ -72,7 +77,8 @@ void main() { expect(inner.trRadius, equals(Radius.circular(-1))); underTest.drawDRRect(outer, inner, somePaint); - underTest.apply(mockCanvas); + underTest.endRecording(); + underTest.apply(mockCanvas, screenRect); // Expect to draw, even when inner has negative radii (which get ignored by canvas) _expectDrawCall(mockCanvas, { @@ -89,7 +95,8 @@ void main() { RRect.fromRectAndCorners(const Rect.fromLTRB(12, 22, 28, 38)); underTest.drawDRRect(outer, inner, somePaint); - underTest.apply(mockCanvas); + underTest.endRecording(); + underTest.apply(mockCanvas, screenRect); _expectDrawCall(mockCanvas, { 'outer': outer, diff --git a/lib/web_ui/test/golden_tests/engine/canvas_blend_golden_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_blend_golden_test.dart index 694274bfe516e..8407e48766b33 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_blend_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_blend_golden_test.dart @@ -23,7 +23,8 @@ void main() async { double maxDiffRatePercent = 0.0}) async { final EngineCanvas engineCanvas = BitmapCanvas(screenRect); - rc.apply(engineCanvas); + rc.endRecording(); + rc.apply(engineCanvas, screenRect); // Wrap in so that our CSS selectors kick in. final html.Element sceneElement = html.Element.tag('flt-scene'); diff --git a/lib/web_ui/test/golden_tests/engine/canvas_clip_path_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_clip_path_test.dart index 316b6b3467fde..d01620921c1d7 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_clip_path_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_clip_path_test.dart @@ -22,7 +22,8 @@ void main() async { {Rect region = const Rect.fromLTWH(0, 0, 500, 500)}) async { final engine.EngineCanvas engineCanvas = engine.BitmapCanvas(screenRect); - rc.apply(engineCanvas); + rc.endRecording(); + rc.apply(engineCanvas, screenRect); // Wrap in so that our CSS selectors kick in. final html.Element sceneElement = html.Element.tag('flt-scene'); diff --git a/lib/web_ui/test/golden_tests/engine/canvas_context_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_context_test.dart index f0d2f15a08a77..927bf2a300fbd 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_context_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_context_test.dart @@ -22,7 +22,8 @@ void main() async { {Rect region = const Rect.fromLTWH(0, 0, 500, 500)}) async { final engine.EngineCanvas engineCanvas = engine.BitmapCanvas(screenRect); - rc.apply(engineCanvas); + rc.endRecording(); + rc.apply(engineCanvas, screenRect); // Wrap in so that our CSS selectors kick in. final html.Element sceneElement = html.Element.tag('flt-scene'); diff --git a/lib/web_ui/test/golden_tests/engine/canvas_draw_image_golden_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_draw_image_golden_test.dart index 3d25986036217..eba2a01764c6c 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_draw_image_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_draw_image_golden_test.dart @@ -25,6 +25,7 @@ void main() async { {Rect region = const Rect.fromLTWH(0, 0, 500, 500)}) async { final EngineCanvas engineCanvas = BitmapCanvas(screenRect); + rc.endRecording(); rc.apply(engineCanvas, screenRect); // Wrap in so that our CSS selectors kick in. diff --git a/lib/web_ui/test/golden_tests/engine/canvas_reuse_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_reuse_test.dart index e92f55287a252..469cc2f88faf8 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_reuse_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_reuse_test.dart @@ -39,7 +39,8 @@ void main() async { ..moveTo(3, 0) ..lineTo(100, 97); rc.drawPath(path, testPaint); - rc.apply(engineCanvas); + rc.endRecording(); + rc.apply(engineCanvas, screenRect); engineCanvas.endOfPaint(); html.Element sceneElement = html.Element.tag('flt-scene'); @@ -69,7 +70,8 @@ void main() async { ..quadraticBezierTo(100, 0, 100, 100); rc2.drawImage(_createRealTestImage(), Offset(0, 0), Paint()); rc2.drawPath(path2, testPaint); - rc2.apply(engineCanvas); + rc2.endRecording(); + rc2.apply(engineCanvas, screenRect); sceneElement = html.Element.tag('flt-scene'); sceneElement.append(engineCanvas.rootElement); diff --git a/lib/web_ui/test/golden_tests/engine/conic_golden_test.dart b/lib/web_ui/test/golden_tests/engine/conic_golden_test.dart index 0ec9770603d40..bcf69c155e212 100644 --- a/lib/web_ui/test/golden_tests/engine/conic_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/conic_golden_test.dart @@ -31,9 +31,10 @@ void main() async { ..style = PaintingStyle.stroke; canvas.drawPath(path, paint); + canvas.endRecording(); html.document.body.append(bitmapCanvas.rootElement); - canvas.apply(bitmapCanvas); + canvas.apply(bitmapCanvas, canvasBounds); await matchGoldenFile('$scubaFileName.png', region: region); bitmapCanvas.rootElement.remove(); } diff --git a/lib/web_ui/test/golden_tests/engine/draw_vertices_golden_test.dart b/lib/web_ui/test/golden_tests/engine/draw_vertices_golden_test.dart index dc77dbc781ae8..765c614ae4cfc 100644 --- a/lib/web_ui/test/golden_tests/engine/draw_vertices_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/draw_vertices_golden_test.dart @@ -22,7 +22,8 @@ void main() async { {Rect region = const Rect.fromLTWH(0, 0, 500, 500), bool write = false}) async { final EngineCanvas engineCanvas = BitmapCanvas(screenRect); - rc.apply(engineCanvas); + rc.endRecording(); + rc.apply(engineCanvas, screenRect); // Wrap in so that our CSS selectors kick in. final html.Element sceneElement = html.Element.tag('flt-scene'); diff --git a/lib/web_ui/test/golden_tests/engine/linear_gradient_golden_test.dart b/lib/web_ui/test/golden_tests/engine/linear_gradient_golden_test.dart index c535719597045..35b7cae8f9ecf 100644 --- a/lib/web_ui/test/golden_tests/engine/linear_gradient_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/linear_gradient_golden_test.dart @@ -21,7 +21,8 @@ void main() async { {Rect region = const Rect.fromLTWH(0, 0, 500, 500), bool write = false}) async { final EngineCanvas engineCanvas = BitmapCanvas(screenRect); - rc.apply(engineCanvas); + rc.endRecording(); + rc.apply(engineCanvas, screenRect); // Wrap in so that our CSS selectors kick in. final html.Element sceneElement = html.Element.tag('flt-scene'); diff --git a/lib/web_ui/test/golden_tests/engine/multiline_text_clipping_golden_test.dart b/lib/web_ui/test/golden_tests/engine/multiline_text_clipping_golden_test.dart index cec631431b49d..cd3378b569896 100644 --- a/lib/web_ui/test/golden_tests/engine/multiline_text_clipping_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/multiline_text_clipping_golden_test.dart @@ -21,10 +21,11 @@ void main() async { setUpStableTestFonts(); void paintTest(EngineCanvas canvas, PaintTest painter) { - final RecordingCanvas recordingCanvas = - RecordingCanvas(const Rect.fromLTWH(0, 0, 600, 600)); + final Rect screenRect = const Rect.fromLTWH(0, 0, 600, 600); + final RecordingCanvas recordingCanvas = RecordingCanvas(screenRect); painter(recordingCanvas); - recordingCanvas.apply(canvas); + recordingCanvas.endRecording(); + recordingCanvas.apply(canvas, screenRect); } testEachCanvas( diff --git a/lib/web_ui/test/golden_tests/engine/path_metrics_test.dart b/lib/web_ui/test/golden_tests/engine/path_metrics_test.dart index 38379087867e2..b5609c72a43fd 100644 --- a/lib/web_ui/test/golden_tests/engine/path_metrics_test.dart +++ b/lib/web_ui/test/golden_tests/engine/path_metrics_test.dart @@ -25,7 +25,8 @@ void main() async { {Rect region = const Rect.fromLTWH(0, 0, 500, 500), bool write = false}) async { final EngineCanvas engineCanvas = BitmapCanvas(screenRect); - rc.apply(engineCanvas); + rc.endRecording(); + rc.apply(engineCanvas, screenRect); // Wrap in so that our CSS selectors kick in. final html.Element sceneElement = html.Element.tag('flt-scene'); diff --git a/lib/web_ui/test/golden_tests/engine/path_to_svg_golden_test.dart b/lib/web_ui/test/golden_tests/engine/path_to_svg_golden_test.dart index c4a1d07a76e9b..bbfd9df35fc6b 100644 --- a/lib/web_ui/test/golden_tests/engine/path_to_svg_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/path_to_svg_golden_test.dart @@ -37,7 +37,8 @@ void main() async { html.document.body.append(bitmapCanvas.rootElement); html.document.body.append(svgElement); - canvas.apply(bitmapCanvas); + canvas.endRecording(); + canvas.apply(bitmapCanvas, canvasBounds); await matchGoldenFile('$scubaFileName.png', region: region); diff --git a/lib/web_ui/test/golden_tests/engine/path_transform_test.dart b/lib/web_ui/test/golden_tests/engine/path_transform_test.dart index dd53ae3153a17..342ecfd20da68 100644 --- a/lib/web_ui/test/golden_tests/engine/path_transform_test.dart +++ b/lib/web_ui/test/golden_tests/engine/path_transform_test.dart @@ -22,7 +22,8 @@ void main() async { {Rect region = const Rect.fromLTWH(0, 0, 500, 500), bool write = false}) async { final EngineCanvas engineCanvas = BitmapCanvas(screenRect); - rc.apply(engineCanvas); + rc.endRecording(); + rc.apply(engineCanvas, screenRect); // Wrap in so that our CSS selectors kick in. final html.Element sceneElement = html.Element.tag('flt-scene'); diff --git a/lib/web_ui/test/golden_tests/engine/radial_gradient_golden_test.dart b/lib/web_ui/test/golden_tests/engine/radial_gradient_golden_test.dart index 3e40f57aa37c5..4fb58ebc3df94 100644 --- a/lib/web_ui/test/golden_tests/engine/radial_gradient_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/radial_gradient_golden_test.dart @@ -21,7 +21,8 @@ void main() async { {Rect region = const Rect.fromLTWH(0, 0, 500, 500), bool write = false}) async { final EngineCanvas engineCanvas = BitmapCanvas(screenRect); - rc.apply(engineCanvas); + rc.endRecording(); + rc.apply(engineCanvas, screenRect); // Wrap in so that our CSS selectors kick in. final html.Element sceneElement = html.Element.tag('flt-scene');