Chromium Code Reviews| Index: pkg/unittest/test/unittest_test.dart |
| =================================================================== |
| --- pkg/unittest/test/unittest_test.dart (revision 18992) |
| +++ pkg/unittest/test/unittest_test.dart (working copy) |
| @@ -20,14 +20,7 @@ |
| var _testconfig; // test configuration to capture onDone |
| _defer(void fn()) { |
| - // Exploit isolate ports as a platform-independent mechanism to queue a |
| - // message at the end of the event loop. Stolen from unittest.dart. |
| - final port = new ReceivePort(); |
| - port.receive((msg, reply) { |
| - fn(); |
| - port.close(); |
| - }); |
| - port.toSendPort().send(null, null); |
| + return (new Future.immediate(null)).then((_)=>guardAsync(fn)); |
|
Siggi Cherem (dart-lang)
2013/02/26 00:25:29
style nit: add spaces around =>
gram
2013/03/04 19:51:52
Done.
|
| } |
| String buildStatusString(int passed, int failed, int errors, |
| @@ -234,6 +227,107 @@ |
| // The next test is just to make sure we make steady progress |
| // through the tests. |
| test('post groups', () {}); |
| + } else if (testName == 'test returning future') { |
| + test("successful", () { |
| + return _defer(() { |
| + expect(true, true); |
| + }); |
| + }); |
| + // We repeat the fail and error tests, because during development |
| + // I had a situation where either worked fine on their own, and |
| + // error/fail worked, but fail/error would time out. |
| + test("error1", () { |
| + var callback = expectAsync0((){}); |
| + var excesscallback = expectAsync0((){}); |
| + return _defer(() { |
| + excesscallback(); |
| + excesscallback(); |
| + excesscallback(); |
| + callback(); |
| + }); |
| + }); |
| + test("fail1", () { |
| + return _defer(() { |
| + expect(true, false); |
| + }); |
| + }); |
| + test("error2", () { |
| + var callback = expectAsync0((){}); |
| + var excesscallback = expectAsync0((){}); |
| + return _defer(() { |
| + excesscallback(); |
| + excesscallback(); |
| + callback(); |
| + }); |
| + }); |
| + test("fail2", () { |
| + return _defer(() { |
| + expect(false, true); |
| + }); |
| + }); |
| + test('foo5', () { |
| + }); |
| + } else if (testName == 'test returning future using isolate (Timer)') { |
|
Siggi Cherem (dart-lang)
2013/02/26 00:25:29
nit: I'd just say '... future using Timer'?
gram
2013/03/04 19:51:52
Done.
|
| + test("successful", () { |
| + return _defer(() { |
| + Timer.run(() { |
| + guardAsync(() { |
| + expect(true, true); |
| + }); |
| + }); |
| + }); |
| + }); |
| + test("fail1", () { |
| + var callback = expectAsync0((){}); |
| + return _defer(() { |
| + Timer.run(() { |
| + guardAsync(() { |
| + expect(true, false); |
| + callback(); |
| + }); |
| + }); |
| + }); |
| + }); |
| + test('error1', () { |
| + var callback = expectAsync0((){}); |
| + var excesscallback = expectAsync0((){}); |
| + return _defer(() { |
| + Timer.run(() { |
| + guardAsync(() { |
| + excesscallback(); |
| + excesscallback(); |
| + excesscallback(); |
| + callback(); |
| + }); |
| + }); |
| + }); |
| + }); |
| + test("fail2", () { |
| + var callback = expectAsync0((){}); |
| + return _defer(() { |
| + Timer.run(() { |
| + guardAsync(() { |
| + expect(false, true); |
| + callback(); |
| + }); |
| + }); |
| + }); |
| + }); |
| + test('error2', () { |
| + var callback = expectAsync0((){}); |
| + var excesscallback = expectAsync0((){}); |
| + return _defer(() { |
| + Timer.run(() { |
| + guardAsync(() { |
| + excesscallback(); |
| + excesscallback(); |
| + callback(); |
| + }); |
| + }); |
| + }); |
| + }); |
| + test('foo6', () { |
| + }); |
| } |
| }); |
| } |
| @@ -267,7 +361,9 @@ |
| 'async exception test', |
| 'late exception test', |
| 'middle exception test', |
| - 'async setup/teardown test' |
| + 'async setup/teardown test', |
| + 'test returning future', |
| + 'test returning future using isolate (Timer)' |
| ]; |
| expected = [ |
| @@ -299,7 +395,21 @@ |
| 'foo3: Test setup failed: Failed to complete setUp:' |
| 'bad setup/bad teardown foo4:bad setup/bad teardown ' |
| 'foo4: Test teardown failed: Failed to complete tearDown:' |
| - 'post groups') |
| + 'post groups'), |
| + buildStatusString(2, 2, 2, |
| + 'successful::' |
| + 'error1:Callback called more times than expected (3 > 1).:' |
| + 'fail1:Expected: <false> but: was <true>.:' |
| + 'error2:Callback called more times than expected (2 > 1).:' |
| + 'fail2:Expected: <true> but: was <false>.:' |
| + 'foo5'), |
| + buildStatusString(2, 2, 2, |
| + 'successful::' |
| + 'fail1:Expected: <false> but: was <true>.:' |
| + 'error1:Callback called more times than expected (3 > 1).:' |
| + 'fail2:Expected: <true> but: was <false>.:' |
| + 'error2:Callback called more times than expected (2 > 1).:' |
| + 'foo6'), |
| ]; |
| actual = []; |