OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * Description text of the current test group. If multiple groups are nested, | 6 * Description text of the current test group. If multiple groups are nested, |
7 * this will contain all of their text concatenated. | 7 * this will contain all of their text concatenated. |
8 */ | 8 */ |
9 String _currentGroup = ''; | 9 String _currentGroup = ''; |
10 | 10 |
11 /** Tests executed in this suite. */ | 11 /** Tests executed in this suite. */ |
12 List<TestCase> _tests; | 12 List<TestCase> _tests; |
13 | 13 |
| 14 /** |
| 15 * Callback used to run tests. Entrypoints can replace this with their own |
| 16 * if they want. |
| 17 */ |
| 18 Function _testRunner; |
| 19 |
14 /** Whether this is run within dartium layout tests. */ | 20 /** Whether this is run within dartium layout tests. */ |
15 bool _isLayoutTest = false; | 21 bool _isLayoutTest = false; |
16 | 22 |
17 /** Current test being executed. */ | 23 /** Current test being executed. */ |
18 int _currentTest = 0; | 24 int _currentTest = 0; |
19 | 25 |
20 /** Total number of callbacks that have been executed in the current test. */ | 26 /** Total number of callbacks that have been executed in the current test. */ |
21 int _callbacksCalled = 0; | 27 int _callbacksCalled = 0; |
22 | 28 |
23 final _UNINITIALIZED = 0; | 29 final _UNINITIALIZED = 0; |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 } else if (_callbacksCalled > testCase.callbacks) { | 137 } else if (_callbacksCalled > testCase.callbacks) { |
132 final expected = testCase.callbacks; | 138 final expected = testCase.callbacks; |
133 testCase.error( | 139 testCase.error( |
134 'More calls to callbackDone() than expected. ' | 140 'More calls to callbackDone() than expected. ' |
135 + 'Actual: ${_callbacksCalled}, expected: ${expected}', ''); | 141 + 'Actual: ${_callbacksCalled}, expected: ${expected}', ''); |
136 _state = _UNCAUGHT_ERROR; | 142 _state = _UNCAUGHT_ERROR; |
137 } else if ((_callbacksCalled == testCase.callbacks) && | 143 } else if ((_callbacksCalled == testCase.callbacks) && |
138 (_state != _RUNNING_TEST)) { | 144 (_state != _RUNNING_TEST)) { |
139 testCase.pass(); | 145 testCase.pass(); |
140 _currentTest++; | 146 _currentTest++; |
141 _nextBatch(); | 147 _testRunner(); |
142 } | 148 } |
143 } | 149 } |
144 | 150 |
145 void forLayoutTests() { | 151 void forLayoutTests() { |
146 _isLayoutTest = true; | 152 _isLayoutTest = true; |
147 } | 153 } |
148 | 154 |
149 /** Runs all queued tests, one at a time. */ | 155 /** Runs all queued tests, one at a time. */ |
150 _runTests() { | 156 _runTests() { |
151 _platformStartTests(); | 157 _platformStartTests(); |
152 | 158 |
153 _platformDefer(() { | 159 _platformDefer(() { |
154 assert (_currentTest == 0); | 160 assert (_currentTest == 0); |
155 _nextBatch(); | 161 _testRunner(); |
156 }); | 162 }); |
157 } | 163 } |
158 | 164 |
159 /** Runs a single test. */ | 165 /** Runs a single test. */ |
160 _runTest(TestCase testCase) { | 166 _runTest(TestCase testCase) { |
161 try { | 167 try { |
162 _callbacksCalled = 0; | 168 _callbacksCalled = 0; |
163 _state = _RUNNING_TEST; | 169 _state = _RUNNING_TEST; |
164 | 170 |
165 testCase.test(); | 171 testCase.test(); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 | 236 |
231 /** | 237 /** |
232 * Lazily initializes the test library if not already initialized. | 238 * Lazily initializes the test library if not already initialized. |
233 */ | 239 */ |
234 _ensureInitialized() { | 240 _ensureInitialized() { |
235 if (_state != _UNINITIALIZED) return; | 241 if (_state != _UNINITIALIZED) return; |
236 | 242 |
237 _tests = <TestCase>[]; | 243 _tests = <TestCase>[]; |
238 _currentGroup = ''; | 244 _currentGroup = ''; |
239 _state = _READY; | 245 _state = _READY; |
240 | 246 _testRunner = _nextBatch; |
| 247 |
241 _platformInitialize(); | 248 _platformInitialize(); |
242 | 249 |
243 // Immediately queue the suite up. It will run after a timeout (i.e. after | 250 // Immediately queue the suite up. It will run after a timeout (i.e. after |
244 // main() has returned). | 251 // main() has returned). |
245 _platformDefer(_runTests); | 252 _platformDefer(_runTests); |
246 } | 253 } |
247 | 254 |
248 /** | 255 /** |
249 * Wraps an value and provides an "==" operator that can be used to verify that | 256 * Wraps an value and provides an "==" operator that can be used to verify that |
250 * the value matches a given expectation. | 257 * the value matches a given expectation. |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 /** Error or failure message. */ | 327 /** Error or failure message. */ |
321 String message = ''; | 328 String message = ''; |
322 | 329 |
323 /** | 330 /** |
324 * One of [_PASS], [_FAIL], or [_ERROR] or [null] if the test hasn't run yet. | 331 * One of [_PASS], [_FAIL], or [_ERROR] or [null] if the test hasn't run yet. |
325 */ | 332 */ |
326 String result; | 333 String result; |
327 | 334 |
328 /** Stack trace associated with this test, or null if it succeeded. */ | 335 /** Stack trace associated with this test, or null if it succeeded. */ |
329 String stackTrace; | 336 String stackTrace; |
| 337 |
| 338 Date startTime; |
| 339 |
| 340 Duration runningTime; |
330 | 341 |
331 TestCase(this.id, this.description, this.test, this.callbacks); | 342 TestCase(this.id, this.description, this.test, this.callbacks); |
332 | 343 |
333 bool get isComplete() => result != null; | 344 bool get isComplete() => result != null; |
334 | 345 |
335 void pass() { | 346 void pass() { |
336 result = _PASS; | 347 result = _PASS; |
337 } | 348 } |
338 | 349 |
339 void fail(String message, String stackTrace) { | 350 void fail(String message, String stackTrace) { |
340 result = _FAIL; | 351 result = _FAIL; |
341 this.message = message; | 352 this.message = message; |
342 this.stackTrace = stackTrace; | 353 this.stackTrace = stackTrace; |
343 } | 354 } |
344 | 355 |
345 void error(String message, String stackTrace) { | 356 void error(String message, String stackTrace) { |
346 result = _ERROR; | 357 result = _ERROR; |
347 this.message = message; | 358 this.message = message; |
348 this.stackTrace = stackTrace; | 359 this.stackTrace = stackTrace; |
349 } | 360 } |
350 } | 361 } |
351 | 362 |
352 typedef void TestFunction(); | 363 typedef void TestFunction(); |
OLD | NEW |