| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 // Test the basic StreamController and StreamController.singleSubscription. | 5 // Test the basic StreamController and StreamController.singleSubscription. |
| 6 library stream_controller_async_test; | 6 library stream_controller_async_test; |
| 7 | 7 |
| 8 import 'dart:async'; | 8 import 'dart:async'; |
| 9 import 'dart:isolate'; | 9 import 'dart:isolate'; |
| 10 import '../../../pkg/unittest/lib/unittest.dart'; | 10 import '../../../pkg/unittest/lib/unittest.dart'; |
| 11 import 'event_helper.dart'; | 11 import 'event_helper.dart'; |
| 12 | 12 |
| 13 testController() { | 13 testController() { |
| 14 // Test reduce | 14 // Test reduce |
| 15 test("StreamController.reduce", () { | 15 test("StreamController.reduce", () { |
| 16 StreamController c = new StreamController(); | 16 StreamController c = new StreamController(); |
| 17 c.reduce(0, (a,b) => a + b) | 17 c.reduce(0, (a,b) => a + b) |
| 18 .then(expectAsync1((int v) { | 18 .then(expectAsync1((int v) { |
| 19 Expect.equals(42, v); | 19 Expect.equals(42, v); |
| 20 })); | 20 })); |
| 21 c.add(10); | 21 c.add(10); |
| 22 c.add(32); | 22 c.add(32); |
| 23 c.close(); | 23 c.close(); |
| 24 }); | 24 }); |
| 25 | 25 |
| 26 test("StreamController.reduce throws", () { | 26 test("StreamController.reduce throws", () { |
| 27 StreamController c = new StreamController(); | 27 StreamController c = new StreamController(); |
| 28 c.reduce(0, (a,b) { throw "Fnyf!"; }) | 28 c.reduce(0, (a,b) { throw "Fnyf!"; }) |
| 29 .catchError(expectAsync1((e) { | 29 .catchError(expectAsync1((e) { Expect.equals("Fnyf!", e.error); })); |
| 30 Expect.equals("Fnyf!", e.error); | |
| 31 })); | |
| 32 c.add(42); | 30 c.add(42); |
| 33 }); | 31 }); |
| 34 | 32 |
| 35 test("StreamController.pipeInto", () { | 33 test("StreamController.pipeInto", () { |
| 36 StreamController c = new StreamController(); | 34 StreamController c = new StreamController(); |
| 37 var list = <int>[]; | 35 var list = <int>[]; |
| 38 c.pipeInto(new CollectionSink<int>(list)) | 36 c.pipeInto(new CollectionSink<int>(list)) |
| 39 .then(expectAsync0(() { Expect.listEquals(<int>[1,2,9,3,9], list); })); | 37 .whenComplete(expectAsync0(() { |
| 38 Expect.listEquals(<int>[1,2,9,3,9], list); |
| 39 })); |
| 40 c.add(1); | 40 c.add(1); |
| 41 c.add(2); | 41 c.add(2); |
| 42 c.add(9); | 42 c.add(9); |
| 43 c.add(3); | 43 c.add(3); |
| 44 c.add(9); | 44 c.add(9); |
| 45 c.close(); | 45 c.close(); |
| 46 }); | 46 }); |
| 47 } | 47 } |
| 48 | 48 |
| 49 testSingleController() { | 49 testSingleController() { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 60 StreamController c = new StreamController.singleSubscription(); | 60 StreamController c = new StreamController.singleSubscription(); |
| 61 c.reduce(0, (a,b) { throw "Fnyf!"; }) | 61 c.reduce(0, (a,b) { throw "Fnyf!"; }) |
| 62 .catchError(expectAsync1((e) { Expect.equals("Fnyf!", e.error); })); | 62 .catchError(expectAsync1((e) { Expect.equals("Fnyf!", e.error); })); |
| 63 c.add(42); | 63 c.add(42); |
| 64 }); | 64 }); |
| 65 | 65 |
| 66 test("Single-subscription StreamController.pipeInto", () { | 66 test("Single-subscription StreamController.pipeInto", () { |
| 67 StreamController c = new StreamController.singleSubscription(); | 67 StreamController c = new StreamController.singleSubscription(); |
| 68 var list = <int>[]; | 68 var list = <int>[]; |
| 69 c.pipeInto(new CollectionSink<int>(list)) | 69 c.pipeInto(new CollectionSink<int>(list)) |
| 70 .then(expectAsync0(() { Expect.listEquals(<int>[1,2,9,3,9], list); })); | 70 .whenComplete(expectAsync0(() { |
| 71 Expect.listEquals(<int>[1,2,9,3,9], list); |
| 72 })); |
| 71 c.add(1); | 73 c.add(1); |
| 72 c.add(2); | 74 c.add(2); |
| 73 c.add(9); | 75 c.add(9); |
| 74 c.add(3); | 76 c.add(3); |
| 75 c.add(9); | 77 c.add(9); |
| 76 c.close(); | 78 c.close(); |
| 77 }); | 79 }); |
| 78 | 80 |
| 79 test("Single-subscription StreamController subscription changes", () { | 81 test("Single-subscription StreamController subscription changes", () { |
| 80 StreamController c = new StreamController.singleSubscription(); | 82 StreamController c = new StreamController.singleSubscription(); |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 } | 285 } |
| 284 | 286 |
| 285 testPause() { | 287 testPause() { |
| 286 test("pause event-unpause", () { | 288 test("pause event-unpause", () { |
| 287 StreamController c = new StreamController(); | 289 StreamController c = new StreamController(); |
| 288 Events actualEvents = new Events.capture(c); | 290 Events actualEvents = new Events.capture(c); |
| 289 Events expectedEvents = new Events(); | 291 Events expectedEvents = new Events(); |
| 290 expectedEvents.add(42); | 292 expectedEvents.add(42); |
| 291 c.add(42); | 293 c.add(42); |
| 292 Expect.listEquals(expectedEvents.events, actualEvents.events); | 294 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 293 SignalCompleter completer = new SignalCompleter(); | 295 Completer completer = new Completer(); |
| 294 actualEvents.pause(completer.signal); | 296 actualEvents.pause(completer.future); |
| 295 c..add(43)..add(44)..close(); | 297 c..add(43)..add(44)..close(); |
| 296 Expect.listEquals(expectedEvents.events, actualEvents.events); | 298 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 297 completer.complete(); | 299 completer.complete(); |
| 298 expectedEvents..add(43)..add(44)..close(); | 300 expectedEvents..add(43)..add(44)..close(); |
| 299 actualEvents.onDone(expectAsync0(() { | 301 actualEvents.onDone(expectAsync0(() { |
| 300 Expect.listEquals(expectedEvents.events, actualEvents.events); | 302 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 301 })); | 303 })); |
| 302 }); | 304 }); |
| 303 | 305 |
| 304 test("pause twice event-unpause", () { | 306 test("pause twice event-unpause", () { |
| 305 StreamController c = new StreamController(); | 307 StreamController c = new StreamController(); |
| 306 Events actualEvents = new Events.capture(c); | 308 Events actualEvents = new Events.capture(c); |
| 307 Events expectedEvents = new Events(); | 309 Events expectedEvents = new Events(); |
| 308 expectedEvents.add(42); | 310 expectedEvents.add(42); |
| 309 c.add(42); | 311 c.add(42); |
| 310 Expect.listEquals(expectedEvents.events, actualEvents.events); | 312 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 311 SignalCompleter completer = new SignalCompleter(); | 313 Completer completer = new Completer(); |
| 312 SignalCompleter completer2 = new SignalCompleter(); | 314 Completer completer2 = new Completer(); |
| 313 actualEvents.pause(completer.signal); | 315 actualEvents.pause(completer.future); |
| 314 actualEvents.pause(completer2.signal); | 316 actualEvents.pause(completer2.future); |
| 315 c..add(43)..add(44)..close(); | 317 c..add(43)..add(44)..close(); |
| 316 Expect.listEquals(expectedEvents.events, actualEvents.events); | 318 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 317 completer.complete(); | 319 completer.complete(); |
| 318 Expect.listEquals(expectedEvents.events, actualEvents.events); | 320 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 319 completer2.complete(); | 321 completer2.complete(); |
| 320 expectedEvents..add(43)..add(44)..close(); | 322 expectedEvents..add(43)..add(44)..close(); |
| 321 actualEvents.onDone(expectAsync0((){ | 323 actualEvents.onDone(expectAsync0((){ |
| 322 Expect.listEquals(expectedEvents.events, actualEvents.events); | 324 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 323 })); | 325 })); |
| 324 }); | 326 }); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 345 actualEvents.resume(); | 347 actualEvents.resume(); |
| 346 }); | 348 }); |
| 347 | 349 |
| 348 test("pause twice direct-event-unpause", () { | 350 test("pause twice direct-event-unpause", () { |
| 349 StreamController c = new StreamController(); | 351 StreamController c = new StreamController(); |
| 350 Events actualEvents = new Events.capture(c); | 352 Events actualEvents = new Events.capture(c); |
| 351 Events expectedEvents = new Events(); | 353 Events expectedEvents = new Events(); |
| 352 expectedEvents.add(42); | 354 expectedEvents.add(42); |
| 353 c.add(42); | 355 c.add(42); |
| 354 Expect.listEquals(expectedEvents.events, actualEvents.events); | 356 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 355 SignalCompleter completer = new SignalCompleter(); | 357 Completer completer = new Completer(); |
| 356 actualEvents.pause(completer.signal); | 358 actualEvents.pause(completer.future); |
| 357 actualEvents.pause(); | 359 actualEvents.pause(); |
| 358 c.add(43); | 360 c.add(43); |
| 359 c.add(44); | 361 c.add(44); |
| 360 c.close(); | 362 c.close(); |
| 361 Expect.listEquals(expectedEvents.events, actualEvents.events); | 363 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 362 actualEvents.resume(); | 364 actualEvents.resume(); |
| 363 Expect.listEquals(expectedEvents.events, actualEvents.events); | 365 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 364 expectedEvents..add(43)..add(44)..close(); | 366 expectedEvents..add(43)..add(44)..close(); |
| 365 actualEvents.onDone(expectAsync0(() { | 367 actualEvents.onDone(expectAsync0(() { |
| 366 Expect.listEquals(expectedEvents.events, actualEvents.events); | 368 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 367 })); | 369 })); |
| 368 completer.complete(); | 370 completer.complete(); |
| 369 }); | 371 }); |
| 370 | 372 |
| 371 test("pause twice direct-unpause", () { | 373 test("pause twice direct-unpause", () { |
| 372 StreamController c = new StreamController(); | 374 StreamController c = new StreamController(); |
| 373 Events actualEvents = new Events.capture(c); | 375 Events actualEvents = new Events.capture(c); |
| 374 Events expectedEvents = new Events(); | 376 Events expectedEvents = new Events(); |
| 375 expectedEvents.add(42); | 377 expectedEvents.add(42); |
| 376 c.add(42); | 378 c.add(42); |
| 377 Expect.listEquals(expectedEvents.events, actualEvents.events); | 379 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 378 SignalCompleter completer = new SignalCompleter(); | 380 Completer completer = new Completer(); |
| 379 actualEvents.pause(completer.signal); | 381 actualEvents.pause(completer.future); |
| 380 actualEvents.pause(); | 382 actualEvents.pause(); |
| 381 c.add(43); | 383 c.add(43); |
| 382 c.add(44); | 384 c.add(44); |
| 383 c.close(); | 385 c.close(); |
| 384 Expect.listEquals(expectedEvents.events, actualEvents.events); | 386 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 385 completer.complete(); | 387 completer.complete(); |
| 386 Expect.listEquals(expectedEvents.events, actualEvents.events); | 388 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 387 expectedEvents..add(43)..add(44)..close(); | 389 expectedEvents..add(43)..add(44)..close(); |
| 388 actualEvents.onDone(expectAsync0(() { | 390 actualEvents.onDone(expectAsync0(() { |
| 389 Expect.listEquals(expectedEvents.events, actualEvents.events); | 391 Expect.listEquals(expectedEvents.events, actualEvents.events); |
| 390 })); | 392 })); |
| 391 actualEvents.resume(); | 393 actualEvents.resume(); |
| 392 }); | 394 }); |
| 393 } | 395 } |
| 394 | 396 |
| 395 main() { | 397 main() { |
| 396 testController(); | 398 testController(); |
| 397 testSingleController(); | 399 testSingleController(); |
| 398 testExtraMethods(); | 400 testExtraMethods(); |
| 399 testPause(); | 401 testPause(); |
| 400 } | 402 } |
| OLD | NEW |