| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 import 'dart:async'; | 5 import 'dart:async'; |
| 6 import "package:expect/expect.dart"; | 6 import "package:expect/expect.dart"; |
| 7 import "package:async_helper/async_helper.dart"; | 7 import "package:async_helper/async_helper.dart"; |
| 8 | 8 |
| 9 class A { const A(); } | 9 class A { |
| 10 class B extends A { const B(); } | 10 const A(); |
| 11 } |
| 12 |
| 13 class B extends A { |
| 14 const B(); |
| 15 } |
| 11 | 16 |
| 12 /// Stream which emits an error if it's not canceled at the correct time. | 17 /// Stream which emits an error if it's not canceled at the correct time. |
| 13 /// | 18 /// |
| 14 /// Must be canceled after at most [maxEvents] events. | 19 /// Must be canceled after at most [maxEvents] events. |
| 15 Stream makeStream(int maxEvents) { | 20 Stream makeStream(int maxEvents) { |
| 16 var c; | 21 var c; |
| 17 int event = 0; | 22 int event = 0; |
| 18 bool canceled = false; | 23 bool canceled = false; |
| 19 c = new StreamController(onListen: () { | 24 c = new StreamController(onListen: () { |
| 20 new Timer.periodic(const Duration(milliseconds: 10), (t) { | 25 new Timer.periodic(const Duration(milliseconds: 10), (t) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 31 } | 36 } |
| 32 }); | 37 }); |
| 33 }, onCancel: () { | 38 }, onCancel: () { |
| 34 canceled = true; | 39 canceled = true; |
| 35 }); | 40 }); |
| 36 return c.stream; | 41 return c.stream; |
| 37 } | 42 } |
| 38 | 43 |
| 39 main() { | 44 main() { |
| 40 asyncStart(); | 45 asyncStart(); |
| 41 tests().then((_) { asyncEnd(); }); | 46 tests().then((_) { |
| 47 asyncEnd(); |
| 48 }); |
| 42 } | 49 } |
| 43 | 50 |
| 44 tests() async { | 51 tests() async { |
| 45 await expectThrowsAsync(makeStream(4).take(5).toList(), "5/4"); | 52 await expectThrowsAsync(makeStream(4).take(5).toList(), "5/4"); |
| 46 await expectThrowsAsync(makeStream(0).take(1).toList(), "1/0"); | 53 await expectThrowsAsync(makeStream(0).take(1).toList(), "1/0"); |
| 47 | 54 |
| 48 Expect.listEquals([0, 1, 2, 3, 4], await makeStream(5).take(5).toList()); | 55 Expect.listEquals([0, 1, 2, 3, 4], await makeStream(5).take(5).toList()); |
| 49 | 56 |
| 50 Expect.listEquals([0, 1, 2, 3], await makeStream(5).take(4).toList()); | 57 Expect.listEquals([0, 1, 2, 3], await makeStream(5).take(4).toList()); |
| 51 | 58 |
| 52 Expect.listEquals([0], await makeStream(5).take(1).toList()); | 59 Expect.listEquals([0], await makeStream(5).take(1).toList()); |
| 53 | 60 |
| 54 Expect.listEquals([], await makeStream(5).take(0).toList()); | 61 Expect.listEquals([], await makeStream(5).take(0).toList()); |
| 55 | 62 |
| 56 Expect.listEquals([], await makeStream(0).take(0).toList()); | 63 Expect.listEquals([], await makeStream(0).take(0).toList()); |
| 57 } | 64 } |
| 58 | 65 |
| 59 Future expectThrowsAsync(Future computation, String name) { | 66 Future expectThrowsAsync(Future computation, String name) { |
| 60 return computation.then((_) { | 67 return computation.then((_) { |
| 61 Expect.fail("$name: Did not throw"); | 68 Expect.fail("$name: Did not throw"); |
| 62 }, onError: (e, s){}); | 69 }, onError: (e, s) {}); |
| 63 } | 70 } |
| OLD | NEW |