Skip to content

Commit

Permalink
update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
yjbanov committed Apr 10, 2020
1 parent 8d6c063 commit 6ed058a
Show file tree
Hide file tree
Showing 16 changed files with 52 additions and 28 deletions.
1 change: 1 addition & 0 deletions lib/web_ui/lib/src/engine/surface/recording_canvas.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
14 changes: 8 additions & 6 deletions lib/web_ui/test/canvas_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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));

Expand All @@ -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');
Expand Down
21 changes: 14 additions & 7 deletions lib/web_ui/test/engine/recording_canvas_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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();
});

Expand All @@ -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, <String, dynamic>{
'outer': rrect,
Expand All @@ -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');
Expand All @@ -45,15 +48,17 @@ 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');
});

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');
Expand All @@ -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, <String, dynamic>{
Expand All @@ -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, <String, dynamic>{
'outer': outer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 <flt-scene> so that our CSS selectors kick in.
final html.Element sceneElement = html.Element.tag('flt-scene');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 <flt-scene> so that our CSS selectors kick in.
final html.Element sceneElement = html.Element.tag('flt-scene');
Expand Down
3 changes: 2 additions & 1 deletion lib/web_ui/test/golden_tests/engine/canvas_context_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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 <flt-scene> so that our CSS selectors kick in.
final html.Element sceneElement = html.Element.tag('flt-scene');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 <flt-scene> so that our CSS selectors kick in.
Expand Down
6 changes: 4 additions & 2 deletions lib/web_ui/test/golden_tests/engine/canvas_reuse_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down Expand Up @@ -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);
Expand Down
3 changes: 2 additions & 1 deletion lib/web_ui/test/golden_tests/engine/conic_golden_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 <flt-scene> so that our CSS selectors kick in.
final html.Element sceneElement = html.Element.tag('flt-scene');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 <flt-scene> so that our CSS selectors kick in.
final html.Element sceneElement = html.Element.tag('flt-scene');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
3 changes: 2 additions & 1 deletion lib/web_ui/test/golden_tests/engine/path_metrics_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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 <flt-scene> so that our CSS selectors kick in.
final html.Element sceneElement = html.Element.tag('flt-scene');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
3 changes: 2 additions & 1 deletion lib/web_ui/test/golden_tests/engine/path_transform_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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 <flt-scene> so that our CSS selectors kick in.
final html.Element sceneElement = html.Element.tag('flt-scene');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 <flt-scene> so that our CSS selectors kick in.
final html.Element sceneElement = html.Element.tag('flt-scene');
Expand Down

0 comments on commit 6ed058a

Please sign in to comment.