| 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 // Test that transformations like `map` and `where` preserve broadcast flag. |
| 6 library stream_join_test; |
| 7 |
| 8 import 'dart:async'; |
| 9 import 'event_helper.dart'; |
| 10 import 'package:unittest/unittest.dart'; |
| 11 import "package:expect/expect.dart"; |
| 12 |
| 13 void testStream(String name, |
| 14 StreamController create(), |
| 15 Stream getStream(controller)) { |
| 16 test("$name-map", () { |
| 17 var c = create(); |
| 18 var s = getStream(c); |
| 19 Stream newStream = s.map((x) => x + 1); |
| 20 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 21 newStream.single.then(expectAsync((v) { |
| 22 Expect.equals(43, v); |
| 23 })); |
| 24 c.add(42); |
| 25 c.close(); |
| 26 }); |
| 27 test("$name-where", () { |
| 28 var c = create(); |
| 29 var s = getStream(c); |
| 30 Stream newStream = s.where((x) => x.isEven); |
| 31 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 32 newStream.single.then(expectAsync((v) { |
| 33 Expect.equals(42, v); |
| 34 })); |
| 35 c.add(37); |
| 36 c.add(42); |
| 37 c.add(87); |
| 38 c.close(); |
| 39 }); |
| 40 test("$name-handleError", () { |
| 41 var c = create(); |
| 42 var s = getStream(c); |
| 43 Stream newStream = s.handleError((x, s) {}); |
| 44 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 45 newStream.single.then(expectAsync((v) { |
| 46 Expect.equals(42, v); |
| 47 })); |
| 48 c.addError("BAD1"); |
| 49 c.add(42); |
| 50 c.addError("BAD2"); |
| 51 c.close(); |
| 52 }); |
| 53 test("$name-expand", () { |
| 54 var c = create(); |
| 55 var s = getStream(c); |
| 56 Stream newStream = s.expand((x) => x.isEven ? [x] : []); |
| 57 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 58 newStream.single.then(expectAsync((v) { |
| 59 Expect.equals(42, v); |
| 60 })); |
| 61 c.add(37); |
| 62 c.add(42); |
| 63 c.add(87); |
| 64 c.close(); |
| 65 }); |
| 66 test("$name-transform", () { |
| 67 var c = create(); |
| 68 var s = getStream(c); |
| 69 // TODO: find name of default transformer |
| 70 var t = new StreamTransformer.fromHandlers( |
| 71 handleData: (value, EventSink sink) { sink.add(value); } |
| 72 ); |
| 73 Stream newStream = s.transform(t); |
| 74 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 75 newStream.single.then(expectAsync((v) { |
| 76 Expect.equals(42, v); |
| 77 })); |
| 78 c.add(42); |
| 79 c.close(); |
| 80 }); |
| 81 test("$name-take", () { |
| 82 var c = create(); |
| 83 var s = getStream(c); |
| 84 Stream newStream = s.take(1); |
| 85 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 86 newStream.single.then(expectAsync((v) { |
| 87 Expect.equals(42, v); |
| 88 })); |
| 89 c.add(42); |
| 90 c.add(37); |
| 91 c.close(); |
| 92 }); |
| 93 test("$name-takeWhile", () { |
| 94 var c = create(); |
| 95 var s = getStream(c); |
| 96 Stream newStream = s.takeWhile((x) => x.isEven); |
| 97 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 98 newStream.single.then(expectAsync((v) { |
| 99 Expect.equals(42, v); |
| 100 })); |
| 101 c.add(42); |
| 102 c.add(37); |
| 103 c.close(); |
| 104 }); |
| 105 test("$name-skip", () { |
| 106 var c = create(); |
| 107 var s = getStream(c); |
| 108 Stream newStream = s.skip(1); |
| 109 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 110 newStream.single.then(expectAsync((v) { |
| 111 Expect.equals(42, v); |
| 112 })); |
| 113 c.add(37); |
| 114 c.add(42); |
| 115 c.close(); |
| 116 }); |
| 117 test("$name-skipWhile", () { |
| 118 var c = create(); |
| 119 var s = getStream(c); |
| 120 Stream newStream = s.skipWhile((x) => x.isOdd); |
| 121 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 122 newStream.single.then(expectAsync((v) { |
| 123 Expect.equals(42, v); |
| 124 })); |
| 125 c.add(37); |
| 126 c.add(42); |
| 127 c.close(); |
| 128 }); |
| 129 test("$name-distinct", () { |
| 130 var c = create(); |
| 131 var s = getStream(c); |
| 132 Stream newStream = s.distinct(); |
| 133 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 134 newStream.single.then(expectAsync((v) { |
| 135 Expect.equals(42, v); |
| 136 })); |
| 137 c.add(42); |
| 138 c.add(42); |
| 139 c.close(); |
| 140 }); |
| 141 test("$name-timeout", () { |
| 142 var c = create(); |
| 143 var s = getStream(c); |
| 144 Stream newStream = s.timeout(const Duration(seconds: 1)); |
| 145 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 146 newStream.single.then(expectAsync((v) { |
| 147 Expect.equals(42, v); |
| 148 })); |
| 149 c.add(42); |
| 150 c.close(); |
| 151 }); |
| 152 test("$name-asyncMap", () { |
| 153 var c = create(); |
| 154 var s = getStream(c); |
| 155 Stream newStream = s.asyncMap((x) => new Future.value(x + 1)); |
| 156 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 157 newStream.single.then(expectAsync((v) { |
| 158 Expect.equals(43, v); |
| 159 })); |
| 160 c.add(42); |
| 161 c.close(); |
| 162 }); |
| 163 test("$name-asyncExpand", () { |
| 164 var c = create(); |
| 165 var s = getStream(c); |
| 166 Stream newStream = s.asyncExpand((x) => new Stream.fromIterable([x + 1])); |
| 167 Expect.equals(s.isBroadcast, newStream.isBroadcast); |
| 168 newStream.single.then(expectAsync((v) { |
| 169 Expect.equals(43, v); |
| 170 })); |
| 171 c.add(42); |
| 172 c.close(); |
| 173 }); |
| 174 } |
| 175 |
| 176 main() { |
| 177 testStream("singlesub", () => new StreamController(), (c) => c.stream); |
| 178 testStream("broadcast", () => new StreamController.broadcast(), |
| 179 (c) => c.stream); |
| 180 testStream("asBroadcast", () => new StreamController(), |
| 181 (c) => c.stream.asBroadcastStream()); |
| 182 testStream("broadcast.asBroadcast", () => new StreamController.broadcast(), |
| 183 (c) => c.stream.asBroadcastStream()); |
| 184 } |
| OLD | NEW |