Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Side by Side Diff: sky/tests/events/dispatcher.sky

Issue 936973002: Dispatcher tests (tests the code in events.md) (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/tests/TestExpectations ('k') | sky/tests/events/dispatcher-expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 <script>
2 import "../resources/third_party/unittest/unittest.dart";
3 import "../resources/unit.dart";
4 import "dart:sky";
5 import 'dart:async';
6
7 void send20IntegersToDispatcherController(DispatcherController d) {
8 for (var index = 0; index < 20; index += 1)
9 d.add(index);
10 }
11
12 void main() {
13 initUnit();
14
15 group('Dispatcher', () {
16
17 test('simple listen', () {
18 var d = new DispatcherController();
19 var result = new List();
20 d.dispatcher.listen((v) => result.add(v));
21 send20IntegersToDispatcherController(d);
22 expect(result, orderedEquals([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, 18,19]));
23 });
24
25 test('firstWhere', () {
26 var d = new DispatcherController();
27 var result = new List();
28 d.dispatcher.firstWhere((n) => n > 15).then((v) => result.add(v));
29 send20IntegersToDispatcherController(d);
30 new Timer(new Duration(), expectAsync(() => expect(result, orderedEquals([ 16]))));
31 });
32
33 test('where', () {
34 var d = new DispatcherController();
35 var result = new List();
36 d.dispatcher.where((n) => n % 2 == 0).until((n) => n > 10).listen((v) => r esult.add(v));
37 send20IntegersToDispatcherController(d);
38 expect(result, orderedEquals([0,2,4,6,8,10]));
39 });
40
41 test('where without listener', () {
42 var d = new DispatcherController();
43 var result = new List();
44 d.dispatcher.where((n) => result.add(n));
45 send20IntegersToDispatcherController(d);
46 expect(result, orderedEquals([]));
47 });
48
49 test('where with listeners removed', () {
50 var d = new DispatcherController();
51 var result = new List();
52 var w = d.dispatcher.where((n) { result.add(n); return true; });
53 d.add(0);
54 var f1 = (v) => result.add(100 + v);
55 w.listen(f1);
56 d.add(1);
57 var f2 = (v) => result.add(200 + v);
58 w.listen(f2);
59 d.add(2);
60 w.unlisten(f1);
61 d.add(3);
62 w.unlisten(f2);
63 d.add(4);
64 expect(result, orderedEquals([1, 101, 2, 102, 202, 3, 203]));
65 });
66
67 test('double listeners', () {
68 var d = new DispatcherController();
69 var result = new List();
70 d.dispatcher..listen((v) => result.add(v))
71 ..where((n) => n < 3).listen((v) => result.add(v*100));
72 send20IntegersToDispatcherController(d);
73 expect(result, orderedEquals([0,0,1,100,2,200,3,4,5,6,7,8,9,10,11,12,13,14 ,15,16,17,18,19]));
74 });
75
76 test('zones', () {
77 var d = new DispatcherController();
78 var result = new List();
79 runZoned(() {
80 var zoneA = Zone.current;
81 var listener;
82 listener = (v) {
83 if (Zone.current == zoneA)
84 result.add(v + 0.1);
85 if (v >= 18)
86 d.dispatcher.unlisten(listener);
87 };
88 d.dispatcher.listen(listener);
89 });
90 runZoned(() {
91 var zoneB = Zone.current;
92 d.dispatcher.until((n) => n >= 10).listen((v) {
93 if (Zone.current == zoneB)
94 result.add(v + 0.2);
95 });
96 });
97 send20IntegersToDispatcherController(d);
98 expect(result, orderedEquals([0.1,0.2,1.1,1.2,2.1,2.2,3.1,3.2,4.1,4.2,5.1, 5.2,6.1,6.2,7.1,7.2,8.1,8.2,9.1,9.2,10.1,11.1,12.1,13.1,14.1,15.1,16.1,17.1,18.1 ]));
99 });
100
101 });
102 }
103 </script>
OLDNEW
« no previous file with comments | « sky/tests/TestExpectations ('k') | sky/tests/events/dispatcher-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698