OLD | NEW |
| (Empty) |
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 | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 library stream_event_transform_test; | |
6 | |
7 import "package:expect/expect.dart"; | |
8 import 'dart:async'; | |
9 import '../../../pkg/unittest/lib/unittest.dart'; | |
10 import 'event_helper.dart'; | |
11 | |
12 void handleData(int data, EventSink<int> sink) { | |
13 sink.addError("$data"); | |
14 sink.add(data + 1); | |
15 } | |
16 | |
17 void handleError(error, EventSink<int> sink) { | |
18 String value = error; | |
19 int data = int.parse(value); | |
20 sink.add(data); | |
21 sink.addError("${data + 1}"); | |
22 } | |
23 | |
24 void handleDone(EventSink<int> sink) { | |
25 sink.add(99); | |
26 sink.close(); | |
27 } | |
28 | |
29 class EventTransformer extends StreamEventTransformer<int,int> { | |
30 void handleData(int data, EventSink<int> sink) { | |
31 sink.addError("$data"); | |
32 sink.add(data + 1); | |
33 } | |
34 | |
35 void handleError(String value, EventSink<int> sink) { | |
36 int data = int.parse(value); | |
37 sink.add(data); | |
38 sink.addError("${data + 1}"); | |
39 } | |
40 | |
41 void handleDone(EventSink<int> sink) { | |
42 sink.add(99); | |
43 sink.close(); | |
44 } | |
45 } | |
46 | |
47 main() { | |
48 { | |
49 StreamController c = new StreamController(sync: true); | |
50 Events expected = new Events()..error("0")..add(1) | |
51 ..error("1")..add(2) | |
52 ..add(3)..error("4") | |
53 ..add(99)..close(); | |
54 Events input = new Events()..add(0)..add(1)..error("3")..close(); | |
55 Events actual = new Events.capture( | |
56 c.stream.transform(new EventTransformer())); | |
57 actual.onDone(() { | |
58 Expect.listEquals(expected.events, actual.events); | |
59 }); | |
60 input.replay(c); | |
61 } | |
62 | |
63 { | |
64 StreamController c = new StreamController(sync: true); | |
65 Events expected = new Events()..error("0")..add(1) | |
66 ..error("1")..add(2) | |
67 ..add(3)..error("4") | |
68 ..add(99)..close(); | |
69 Events input = new Events()..add(0)..add(1)..error("3")..close(); | |
70 Events actual = new Events.capture( | |
71 c.stream.transform(new StreamTransformer( | |
72 handleData: handleData, | |
73 handleError: handleError, | |
74 handleDone: handleDone | |
75 ))); | |
76 actual.onDone(() { | |
77 Expect.listEquals(expected.events, actual.events); | |
78 }); | |
79 input.replay(c); | |
80 } | |
81 } | |
OLD | NEW |