| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
| 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. | |
| 4 | |
| 5 part of unittestTest; | |
| 6 | |
| 7 Future _defer(void fn()) { | |
| 8 return new Future.sync(fn); | |
| 9 } | |
| 10 | |
| 11 String buildStatusString(int passed, int failed, int errors, | |
| 12 var results, | |
| 13 {int count: 0, | |
| 14 String setup: '', String teardown: '', | |
| 15 String uncaughtError: null, | |
| 16 String message: ''}) { | |
| 17 var totalTests = 0; | |
| 18 var testDetails = new StringBuffer(); | |
| 19 if (results == null) { | |
| 20 // no op | |
| 21 assert(message == ''); | |
| 22 } else if (results is String) { | |
| 23 totalTests = passed + failed + errors; | |
| 24 testDetails.write(':$results:$message'); | |
| 25 } else { | |
| 26 totalTests = results.length; | |
| 27 for (var i = 0; i < results.length; i++) { | |
| 28 testDetails.write(':${results[i].description}:' | |
| 29 '${collapseWhitespace(results[i].message)}'); | |
| 30 } | |
| 31 } | |
| 32 return '$passed:$failed:$errors:$totalTests:$count:' | |
| 33 '$setup:$teardown:$uncaughtError$testDetails'; | |
| 34 } | |
| 35 | |
| 36 class TestConfiguration extends Configuration { | |
| 37 | |
| 38 // Some test state that is captured. | |
| 39 int count = 0; // A count of callbacks. | |
| 40 String setup = ''; // The name of the test group setup function, if any. | |
| 41 String teardown = ''; // The name of the group teardown function, if any. | |
| 42 | |
| 43 // The port to communicate with the parent isolate | |
| 44 final SendPort _port; | |
| 45 String _result; | |
| 46 | |
| 47 TestConfiguration(this._port): super.blank(); | |
| 48 | |
| 49 void onSummary(int passed, int failed, int errors, List<TestCase> results, | |
| 50 String uncaughtError) { | |
| 51 _result = buildStatusString(passed, failed, errors, results, | |
| 52 count: count, setup: setup, teardown: teardown, | |
| 53 uncaughtError: uncaughtError); | |
| 54 } | |
| 55 | |
| 56 void onDone(bool success) { | |
| 57 _port.send(_result); | |
| 58 } | |
| 59 } | |
| 60 | |
| 61 Function makeDelayedSetup(index, s) => () { | |
| 62 return new Future.delayed(new Duration(milliseconds: 1), () { | |
| 63 s.write('l$index U '); | |
| 64 }); | |
| 65 }; | |
| 66 | |
| 67 Function makeDelayedTeardown(index, s) => () { | |
| 68 return new Future.delayed(new Duration(milliseconds: 1), () { | |
| 69 s.write('l$index D '); | |
| 70 }); | |
| 71 }; | |
| 72 | |
| 73 Function makeImmediateSetup(index, s) => () { | |
| 74 s.write('l$index U '); | |
| 75 }; | |
| 76 | |
| 77 Function makeImmediateTeardown(index, s) => () { | |
| 78 s.write('l$index D '); | |
| 79 }; | |
| 80 | |
| 81 void runTestInIsolate(sendport) { | |
| 82 var testConfig = new TestConfiguration(sendport); | |
| 83 unittestConfiguration = testConfig; | |
| 84 testFunction(testConfig); | |
| 85 } | |
| 86 | |
| 87 void main() { | |
| 88 var replyPort = new ReceivePort(); | |
| 89 Isolate.spawn(runTestInIsolate, replyPort.sendPort); | |
| 90 replyPort.first.then((String msg) { | |
| 91 expect(msg.trim(), expected); | |
| 92 }); | |
| 93 } | |
| OLD | NEW |