| Index: pkg/unittest/test/unittest_test.dart
|
| ===================================================================
|
| --- pkg/unittest/test/unittest_test.dart (revision 19080)
|
| +++ 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));
|
| }
|
|
|
| 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 Timer') {
|
| + 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 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 = [];
|
|
|