flutter/packages/unit/test/rendering/rendering_tester.dart
Adam Barth 07d96a2314 Rename layout_utils.dart to rendering_tester.dart
Also, rename build_utils.dart to widget_tester.dart. These files are now named
for their most commonly used classes.

Finally, add a .analysis_options to silence the (intentional) analyzer warnings
in append_child_test.dart.
2015-08-26 15:49:04 -07:00

53 lines
1.3 KiB
Dart

import 'package:sky/rendering.dart';
const Size _kTestViewSize = const Size(800.0, 600.0);
class TestRenderView extends RenderView {
TestRenderView({ RenderBox child }) : super(child: child) {
attach();
rootConstraints = new ViewConstraints(size: _kTestViewSize);
scheduleInitialLayout();
scheduleInitialPaint(new TransformLayer(transform: new Matrix4.identity()));
}
}
enum EnginePhase {
layout,
paint,
composite
}
class RenderingTester {
RenderingTester({ RenderBox root }) {
renderView = new TestRenderView(child: root);
}
RenderView renderView;
void pumpFrame({ EnginePhase phase: EnginePhase.composite }) {
RenderObject.flushLayout();
if (phase == EnginePhase.layout)
return;
renderView.updateCompositingBits();
RenderObject.flushPaint();
if (phase == EnginePhase.paint)
return;
renderView.compositeFrame();
}
}
RenderingTester layout(RenderBox box, { BoxConstraints constraints }) {
if (constraints != null) {
box = new RenderPositionedBox(
child: new RenderConstrainedBox(
additionalConstraints: constraints,
child: box
)
);
}
RenderingTester tester = new RenderingTester(root: box);
tester.pumpFrame(phase: EnginePhase.layout);
return tester;
}