OLD | NEW |
1 | 1 |
2 import 'dart:async'; | 2 import 'dart:async'; |
3 import 'dart:sky' as sky; | 3 import 'dart:sky' as sky; |
4 import "dart:sky.internals" as internals; | 4 import "dart:sky.internals" as internals; |
5 | 5 |
6 import 'package:sky/widgets/basic.dart'; | 6 import 'package:sky/widgets/basic.dart'; |
7 import 'package:sky/rendering/box.dart'; | 7 import 'package:sky/rendering/box.dart'; |
8 import 'package:sky/rendering/object.dart'; | 8 import 'package:sky/rendering/object.dart'; |
9 | 9 |
10 typedef void Logger (String s); | 10 typedef void Logger (String s); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 } | 117 } |
118 } | 118 } |
119 | 119 |
120 class TestRenderView extends RenderView { | 120 class TestRenderView extends RenderView { |
121 | 121 |
122 TestRenderView([ RenderBox child = null ]) : super(child: child) { | 122 TestRenderView([ RenderBox child = null ]) : super(child: child) { |
123 print("TestRenderView enabled"); | 123 print("TestRenderView enabled"); |
124 attach(); | 124 attach(); |
125 rootConstraints = new ViewConstraints(width: 800.0, height: 600.0); // arbit
rary figures | 125 rootConstraints = new ViewConstraints(width: 800.0, height: 600.0); // arbit
rary figures |
126 scheduleInitialLayout(); | 126 scheduleInitialLayout(); |
127 checkFrame(); | 127 syncCheckFrame(); |
128 } | 128 } |
129 | 129 |
130 int frame = 0; | 130 int frame = 0; |
131 | 131 |
132 String lastPaint = ''; | 132 String lastPaint = ''; |
133 void log(String s) { | 133 void log(String s) { |
134 lastPaint += "\n$s"; | 134 lastPaint += "\n$s"; |
135 } | 135 } |
136 | 136 |
137 void paintFrame() { | 137 void paintFrame() { |
138 RenderObject.debugDoingPaint = true; | 138 RenderObject.debugDoingPaint = true; |
139 frame += 1; | 139 frame += 1; |
140 lastPaint = ''; | 140 lastPaint = ''; |
141 log("PAINT FOR FRAME #${frame} ---------------------------------------------
-"); | 141 log("PAINT FOR FRAME #${frame} ---------------------------------------------
-"); |
142 var canvas = new TestDisplayList(rootConstraints.width, rootConstraints.heig
ht, log, indent: "${frame} |"); | 142 var canvas = new TestDisplayList(rootConstraints.width, rootConstraints.heig
ht, log, indent: "${frame} |"); |
143 paint(canvas); | 143 paint(canvas); |
144 log("-----------------------------------------------------------------------
-"); | 144 log("-----------------------------------------------------------------------
-"); |
145 RenderObject.debugDoingPaint = false; | 145 RenderObject.debugDoingPaint = false; |
146 } | 146 } |
147 | 147 |
148 // TEST API: | 148 // TEST API: |
149 | 149 |
150 void checkFrame() { | 150 void syncCheckFrame() { |
151 RenderObject.flushLayout(); | 151 RenderObject.flushLayout(); |
152 paintFrame(); | 152 paintFrame(); |
153 print(lastPaint); // TODO(ianh): figure out how to make this fit the unit te
sting framework better | 153 print(lastPaint); // TODO(ianh): figure out how to make this fit the unit te
sting framework better |
154 } | 154 } |
155 | 155 |
| 156 Future checkFrame() { |
| 157 return new Future.microtask(syncCheckFrame); |
| 158 } |
| 159 |
156 void endTest() { | 160 void endTest() { |
157 internals.notifyTestComplete("PAINTED $frame FRAMES"); | 161 internals.notifyTestComplete("PAINTED $frame FRAMES"); |
158 } | 162 } |
159 | 163 |
160 } | 164 } |
161 | 165 |
162 class TestApp extends App { | 166 class TestApp extends App { |
163 TestApp({ this.builder }); | 167 TestApp({ this.builder }); |
164 | 168 |
165 Function builder; | 169 Function builder; |
166 | 170 |
167 Widget build() { | 171 Widget build() { |
168 return builder(); | 172 return builder(); |
169 } | 173 } |
170 } | 174 } |
171 | 175 |
172 class WidgetTester { | 176 class WidgetTester { |
173 TestRenderView renderView = new TestRenderView(); | 177 TestRenderView renderView = new TestRenderView(); |
174 | 178 |
175 Future test(Function builder) { | 179 Future test(Function builder) { |
176 runApp(new TestApp(builder: builder), renderViewOverride: renderView); | 180 runApp(new TestApp(builder: builder), renderViewOverride: renderView); |
177 return new Future.microtask(renderView.checkFrame); | 181 return renderView.checkFrame(); |
178 } | 182 } |
179 | 183 |
180 Future endTest() { | 184 void endTest() { |
181 return new Future.microtask(renderView.endTest); | 185 renderView.endTest(); |
182 } | 186 } |
183 } | 187 } |
OLD | NEW |