| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| // Test the basic StreamController and StreamController.singleSubscription. | |
| library stream_join_test; | |
| import 'dart:async'; | |
| import 'package:expect/expect.dart'; | |
| import 'package:expect/legacy/async_minitest.dart'; // ignore: deprecated_member_use | |
| import 'event_helper.dart'; | |
| main() { | |
| test("join-empty", () { | |
| StreamController c = new StreamController(); | |
| c.stream.join("X").then(expectAsync((String s) => expect(s, equals("")))); | |
| c.close(); | |
| }); | |
| test("join-single", () { | |
| StreamController c = new StreamController(); | |
| c.stream | |
| .join("X") | |
| .then(expectAsync((String s) => expect(s, equals("foo")))); | |
| c.add("foo"); | |
| c.close(); | |
| }); | |
| test("join-three", () { | |
| StreamController c = new StreamController(); | |
| c.stream | |
| .join("X") | |
| .then(expectAsync((String s) => expect(s, equals("fooXbarXbaz")))); | |
| c.add("foo"); | |
| c.add("bar"); | |
| c.add("baz"); | |
| c.close(); | |
| }); | |
| test("join-three-non-string", () { | |
| StreamController c = new StreamController(); | |
| c.stream | |
| .join("X") | |
| .then(expectAsync((String s) => expect(s, equals("fooXbarXbaz")))); | |
| c.add(new Foo("foo")); | |
| c.add(new Foo("bar")); | |
| c.add(new Foo("baz")); | |
| c.close(); | |
| }); | |
| test("join-error", () { | |
| StreamController c = new StreamController(); | |
| Future<String?>.value(c.stream.join("X")) | |
| .catchError(expectAsync((String s) => expect(s, equals("BAD!")))); | |
| c.add(new Foo("foo")); | |
| c.add(new Foo("bar")); | |
| c.add(new Bad()); | |
| c.add(new Foo("baz")); | |
| c.close(); | |
| }); | |
| } | |
| class Foo { | |
| String value; | |
| Foo(this.value); | |
| String toString() => value; | |
| } | |
| class Bad { | |
| Bad(); | |
| String toString() => throw "BAD!"; | |
| } |