提交 1339d2bc 编写于 作者: H Hixie

Clean up the tests to be more maintainable.

- removes the unit testing framework from tests that don't use it
- use 'async' where that makes the code less convoluted

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/1192003003.
上级 0d778940
......@@ -3,7 +3,6 @@ CONSOLE:
PAINT FOR FRAME #1 ----------------------------------------------
1 | TestDisplayList() constructor: 800.0 x 600.0
------------------------------------------------------------------------
CONSOLE: unittest-suite-wait-for-done
CONSOLE:
PAINT FOR FRAME #2 ----------------------------------------------
2 | TestDisplayList() constructor: 800.0 x 600.0
......@@ -52,8 +51,4 @@ PAINT FOR FRAME #2 ----------------------------------------------
2 | | | | | TestDisplayList() constructor: 800.0 x 600.0
2 | | | | restore
------------------------------------------------------------------------
CONSOLE: PASS: launching stock app
CONSOLE:
CONSOLE: All 1 tests passed.
CONSOLE: unittest-suite-success
DONE
PAINTED 2 FRAMES
......@@ -9,16 +9,10 @@ import 'package:sky/widgets/widget.dart';
import '../../examples/stocks2/lib/stock_app.dart';
import '../resources/display_list.dart';
import '../resources/third_party/unittest/unittest.dart';
import '../resources/unit.dart';
void main() {
initUnit();
main() async {
TestRenderView testRenderView = new TestRenderView();
test("launching stock app", () {
runApp(new StocksApp(), renderViewOverride: testRenderView);
new Future.microtask(testRenderView.checkFrame);
});
runApp(new StocksApp(), renderViewOverride: testRenderView);
await testRenderView.checkFrame();
testRenderView.endTest();
}
CONSOLE: unittest-suite-wait-for-done
CONSOLE: TestRenderView enabled
CONSOLE:
PAINT FOR FRAME #1 ----------------------------------------------
......@@ -12,8 +11,4 @@ PAINT FOR FRAME #1 ----------------------------------------------
1 | | | | TestDisplayList() constructor: 800.0 x 600.0
1 | | | | drawRect(Rect.fromLTRB(0.0, 0.0, 700.0, 100.0), Paint(Color(0xff00ff00)))
------------------------------------------------------------------------
CONSOLE: PASS: padding
CONSOLE:
CONSOLE: All 1 tests passed.
CONSOLE: unittest-suite-success
DONE
PAINTED 1 FRAMES
......@@ -7,18 +7,12 @@ import 'package:sky/rendering/box.dart';
import 'package:sky/rendering/object.dart';
import '../resources/display_list.dart';
import '../resources/third_party/unittest/unittest.dart';
import '../resources/unit.dart';
void main() {
initUnit();
test("padding", () {
var size = new RenderConstrainedBox(additionalConstraints: new BoxConstraints().applyHeight(100.0));
var inner = new RenderDecoratedBox(decoration: new BoxDecoration(backgroundColor: const sky.Color(0xFF00FF00)), child: size);
var padding = new RenderPadding(padding: new EdgeDims.all(50.0), child: inner);
var block = new RenderBlock(children: [padding]);
var outer = new RenderDecoratedBox(decoration: new BoxDecoration(backgroundColor: const sky.Color(0xFF0000FF)), child: block);
new TestRenderView(outer);
});
var size = new RenderConstrainedBox(additionalConstraints: new BoxConstraints().applyHeight(100.0));
var inner = new RenderDecoratedBox(decoration: new BoxDecoration(backgroundColor: const sky.Color(0xFF00FF00)), child: size);
var padding = new RenderPadding(padding: new EdgeDims.all(50.0), child: inner);
var block = new RenderBlock(children: [padding]);
var outer = new RenderDecoratedBox(decoration: new BoxDecoration(backgroundColor: const sky.Color(0xFF0000FF)), child: block);
new TestRenderView(outer).endTest();
}
......@@ -124,7 +124,7 @@ class TestRenderView extends RenderView {
attach();
rootConstraints = new ViewConstraints(width: 800.0, height: 600.0); // arbitrary figures
scheduleInitialLayout();
checkFrame();
syncCheckFrame();
}
int frame = 0;
......@@ -147,12 +147,16 @@ class TestRenderView extends RenderView {
// TEST API:
void checkFrame() {
void syncCheckFrame() {
RenderObject.flushLayout();
paintFrame();
print(lastPaint); // TODO(ianh): figure out how to make this fit the unit testing framework better
}
Future checkFrame() {
return new Future.microtask(syncCheckFrame);
}
void endTest() {
internals.notifyTestComplete("PAINTED $frame FRAMES");
}
......@@ -174,10 +178,10 @@ class WidgetTester {
Future test(Function builder) {
runApp(new TestApp(builder: builder), renderViewOverride: renderView);
return new Future.microtask(renderView.checkFrame);
return renderView.checkFrame();
}
Future endTest() {
return new Future.microtask(renderView.endTest);
void endTest() {
renderView.endTest();
}
}
......@@ -24,5 +24,5 @@ main() async {
return new Center(child: new FloatingActionButton(child: new Text("+")));
});
await tester.endTest();
tester.endTest();
}
......@@ -18,5 +18,5 @@ main() async {
);
});
await tester.endTest();
tester.endTest();
}
......@@ -81,20 +81,14 @@ class FiddleApp extends App {
}
}
main() {
main() async {
TestRenderView renderViewOverride = new TestRenderView();
FiddleApp app = new FiddleApp();
runApp(app, renderViewOverride: renderViewOverride);
new Future.microtask(() {
renderViewOverride.checkFrame();
app.toggle();
new Future.microtask(() {
renderViewOverride.checkFrame();
app.toggle();
new Future.microtask(() {
renderViewOverride.checkFrame();
renderViewOverride.endTest();
});
});
});
await renderViewOverride.checkFrame();
app.toggle();
await renderViewOverride.checkFrame();
app.toggle();
await renderViewOverride.checkFrame();
renderViewOverride.endTest();
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册