Files
sdk/tests/lib/async/stream_event_transform_test.dart
T
lrn@google.com faa7227cec Make new StreamController be async by default.
Change all instances, except some tests, to be sync still.
Rename Multiplex to Broadcast everywhere.

R=floitsch@google.com

Review URL: https://codereview.chromium.org//16125005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@23453 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-31 06:07:39 +00:00

82 lines
2.3 KiB
Dart

// Copyright (c) 2011, 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.
library stream_event_transform_test;
import "package:expect/expect.dart";
import 'dart:async';
import '../../../pkg/unittest/lib/unittest.dart';
import 'event_helper.dart';
void handleData(int data, EventSink<int> sink) {
sink.addError("$data");
sink.add(data + 1);
}
void handleError(error, EventSink<int> sink) {
String value = error;
int data = int.parse(value);
sink.add(data);
sink.addError("${data + 1}");
}
void handleDone(EventSink<int> sink) {
sink.add(99);
sink.close();
}
class EventTransformer extends StreamEventTransformer<int,int> {
void handleData(int data, EventSink<int> sink) {
sink.addError("$data");
sink.add(data + 1);
}
void handleError(String value, EventSink<int> sink) {
int data = int.parse(value);
sink.add(data);
sink.addError("${data + 1}");
}
void handleDone(EventSink<int> sink) {
sink.add(99);
sink.close();
}
}
main() {
{
StreamController c = new StreamController(sync: true);
Events expected = new Events()..error("0")..add(1)
..error("1")..add(2)
..add(3)..error("4")
..add(99)..close();
Events input = new Events()..add(0)..add(1)..error("3")..close();
Events actual = new Events.capture(
c.stream.transform(new EventTransformer()));
actual.onDone(() {
Expect.listEquals(expected.events, actual.events);
});
input.replay(c);
}
{
StreamController c = new StreamController(sync: true);
Events expected = new Events()..error("0")..add(1)
..error("1")..add(2)
..add(3)..error("4")
..add(99)..close();
Events input = new Events()..add(0)..add(1)..error("3")..close();
Events actual = new Events.capture(
c.stream.transform(new StreamTransformer(
handleData: handleData,
handleError: handleError,
handleDone: handleDone
)));
actual.onDone(() {
Expect.listEquals(expected.events, actual.events);
});
input.replay(c);
}
}