Chromium Code Reviews| Index: tests/lib/async/stream_sink_adapter_test.dart |
| diff --git a/tests/lib/async/stream_sink_adapter_test.dart b/tests/lib/async/stream_sink_adapter_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..95ebd8e2b05ffb9b242ce2c5a61814b6319a689b |
| --- /dev/null |
| +++ b/tests/lib/async/stream_sink_adapter_test.dart |
| @@ -0,0 +1,111 @@ |
| +// Copyright (c) 2014, 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. |
| + |
| +import "package:expect/expect.dart"; |
| +import "package:async_helper/async_helper.dart"; |
| +import 'dart:async'; |
| + |
| + |
| +class StreamConsumerImpl implements StreamConsumer { |
|
Lasse Reichstein Nielsen
2014/03/19 13:27:20
Impl isn't saying anything. How about ExpectingStr
Anders Johnsen
2014/03/19 13:56:39
Done.
|
| + final List expectedEvents; |
| + final List events = []; |
| + |
| + StreamConsumerImpl(this.expectedEvents); |
| + |
| + Future addStream(Stream stream) { |
| + return stream.listen((event) { |
|
Lasse Reichstein Nielsen
2014/03/19 13:27:20
return stream.listen(events.add).asFuture();
Anders Johnsen
2014/03/19 13:56:39
Done.
|
| + events.add(event); |
| + }).asFuture(); |
| + } |
| + |
| + Future close() { |
| + check(); |
| + return new Future.value(); |
| + } |
| + |
| + void check() { |
| + Expect.listEquals(expectedEvents, events); |
| + } |
| +} |
| + |
| + |
|
Lasse Reichstein Nielsen
2014/03/19 13:27:20
Add documentation for tests: What is it testing, h
Anders Johnsen
2014/03/19 13:56:39
Done.
|
| +void testAddClose() { |
| + asyncStart(); |
| + var sink = new StreamSinkAdapter(new StreamConsumerImpl([1, 2, 3])); |
| + sink.add(1); |
| + sink.add(2); |
| + sink.add(3); |
| + sink.close().then((_) { |
| + asyncEnd(); |
| + }); |
| +} |
| + |
| + |
| +void testAddFlush() { |
| + asyncStart(); |
| + var consumer = new StreamConsumerImpl([1, 2, 3]); |
| + var sink = new StreamSinkAdapter(consumer); |
| + sink.add(1); |
| + sink.add(2); |
| + sink.add(3); |
| + sink.flush().then((_) { |
| + consumer.check(); |
| + asyncEnd(); |
| + }); |
| + // Not valid while flush. |
|
Lasse Reichstein Nielsen
2014/03/19 13:27:20
while flush -> during flush.
(or "while flushing",
Anders Johnsen
2014/03/19 13:56:39
Done.
|
| + Expect.throws(() => sink.add(4)); |
| + Expect.throws(() => sink.addError("error")); |
| + Expect.throws(() => sink.addStream(new Stream.fromIterable([]))); |
| + Expect.throws(() => sink.close()); |
| + sink.done; // No error. |
| +} |
| + |
| + |
| +void testAddStreamClose() { |
| + asyncStart(); |
| + var list = [1, 2, 3]; |
| + var sink = new StreamSinkAdapter(new StreamConsumerImpl(list)); |
| + new Stream.fromIterable(list).pipe(sink).then((_) { |
| + asyncEnd(); |
| + }); |
| + // Not valid while addStream. |
| + Expect.throws(() => sink.add(4)); |
| + Expect.throws(() => sink.addError("error")); |
| + Expect.throws(() => sink.addStream(new Stream.fromIterable([]))); |
| + Expect.throws(() => sink.close()); |
| + sink.done; // No error. |
| +} |
| + |
| + |
| +void testAddAddStreamClose() { |
| + asyncStart(); |
| + var list = [1, 2, 3, 4, 5, 6]; |
| + var sink = new StreamSinkAdapter(new StreamConsumerImpl(list)); |
| + sink.add(1); |
| + sink.add(2); |
| + sink.add(3); |
| + new Stream.fromIterable(list.skip(3)).pipe(sink).then((_) { |
| + asyncEnd(); |
| + }); |
|
Lasse Reichstein Nielsen
2014/03/19 13:27:20
What happens if you do "sink.add(0);" here? Does i
Anders Johnsen
2014/03/19 13:56:39
Done.
|
| +} |
| + |
| + |
| +void testAddError() { |
| + asyncStart(); |
| + var sink = new StreamSinkAdapter(new StreamConsumerImpl([])); |
| + new Future.error("error").asStream().pipe(sink).catchError((error) { |
| + Expect.equals("error", error); |
| + sink.close(); |
| + asyncEnd(); |
| + }); |
| +} |
| + |
| + |
| +void main() { |
|
Lasse Reichstein Nielsen
2014/03/19 13:27:20
Add "asyncStart()" before calling the tests, and "
Anders Johnsen
2014/03/19 13:56:39
Done.
|
| + testAddClose(); |
| + testAddFlush(); |
| + testAddStreamClose(); |
| + testAddAddStreamClose(); |
| + testAddError(); |
| +} |