OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // Tests launched by extensions/renderer/api/serial/data_sender_unittest.cc | |
6 | |
7 var test = require('test').binding; | |
8 var unittestBindings = require('test_environment_specific_bindings'); | |
9 | |
10 function wrapAsyncTest(func) { | |
11 Promise.all([ | |
12 requireAsync('content/public/renderer/service_provider'), | |
13 requireAsync('data_sender'), | |
14 requireAsync('device/serial/data_stream.mojom'), | |
15 ]).then(test.callbackPass(function(modules) { | |
16 func(modules[0], modules[1], modules[2]); | |
17 })); | |
18 } | |
19 | |
20 function generateData(size, character) { | |
21 if (!character) | |
22 character = 'a'; | |
23 var buffer = new ArrayBuffer(size); | |
24 var intView = new Int8Array(buffer); | |
25 for (var i = 0; i < size; i++) { | |
26 intView[i] = character.charCodeAt(0); | |
27 } | |
28 return buffer; | |
29 } | |
30 | |
31 unittestBindings.exportTests([ | |
32 function testSend() { | |
33 wrapAsyncTest( | |
34 function testSend(serviceProvider, dataSender, mojom) { | |
raymes
2014/08/20 04:23:13
Couldn't we define all of the real test bodies in
Sam McNally
2014/08/20 04:50:15
exportTests uses the function names to decide the
| |
35 var sender = new dataSender.DataSender( | |
36 serviceProvider.connectToService(mojom.DataSinkProxy.NAME_), 10, 2); | |
raymes
2014/08/20 04:23:13
use constants for construction. If it's easier, pu
Sam McNally
2014/08/20 04:50:16
Done.
| |
37 var seen = null; | |
38 sender.send(generateData(1)).then(test.callbackPass(function(bytesSent) { | |
39 test.assertEq(1, bytesSent); | |
40 test.assertEq(null, seen); | |
41 seen = 'first'; | |
42 })); | |
43 sender.send(generateData(1)).then(test.callbackPass(function(bytesSent) { | |
44 sender.close(); | |
45 test.assertEq(1, bytesSent); | |
46 test.assertEq('first', seen); | |
47 seen = 'second'; | |
48 })); | |
49 }); | |
50 }, | |
51 | |
52 function testLargeSend() { | |
53 wrapAsyncTest( | |
54 function testSend(serviceProvider, dataSender, mojom) { | |
55 var sender = new dataSender.DataSender( | |
56 serviceProvider.connectToService(mojom.DataSinkProxy.NAME_), 10, 2); | |
57 sender.send(generateData(100)).then(test.callbackPass( | |
58 function(bytesSent) { | |
59 test.assertEq(100, bytesSent); | |
raymes
2014/08/20 04:23:13
As before consider using a multiple of the buffer
Sam McNally
2014/08/20 04:50:16
Done.
| |
60 sender.close(); | |
61 })); | |
62 }); | |
63 }, | |
64 | |
65 function testSendError() { | |
66 wrapAsyncTest( | |
67 function testSend(serviceProvider, dataSender, mojom) { | |
68 var sender = new dataSender.DataSender( | |
69 serviceProvider.connectToService(mojom.DataSinkProxy.NAME_), 10, 2); | |
70 sender.send(generateData(100, 'b')).catch(test.callbackPass(function(e) { | |
71 test.assertEq(1, e.error); | |
72 test.assertEq(0, e.bytesSent); | |
73 sender.send(generateData(1)).then(test.callbackPass( | |
74 function(bytesSent) { | |
75 test.assertEq(1, bytesSent); | |
76 sender.close(); | |
77 })); | |
78 })); | |
79 }); | |
80 }, | |
81 | |
82 function testSendErrorPartialSuccess() { | |
83 wrapAsyncTest( | |
84 function testSend(serviceProvider, dataSender, mojom) { | |
85 var sender = new dataSender.DataSender( | |
86 serviceProvider.connectToService(mojom.DataSinkProxy.NAME_), 10, 2); | |
87 sender.send(generateData(100, 'b')).catch(test.callbackPass(function(e) { | |
88 test.assertEq(1, e.error); | |
89 test.assertEq(5, e.bytesSent); | |
90 sender.send(generateData(1)).then(test.callbackPass( | |
91 function(bytesSent) { | |
92 test.assertEq(1, bytesSent); | |
93 sender.close(); | |
94 })); | |
95 })); | |
96 }); | |
97 }, | |
98 | |
99 function testSendErrorBetweenPackets() { | |
100 wrapAsyncTest( | |
101 function testSend(serviceProvider, dataSender, mojom) { | |
102 var sender = new dataSender.DataSender( | |
103 serviceProvider.connectToService(mojom.DataSinkProxy.NAME_), 10, 2); | |
104 sender.send(generateData(2, 'b')).catch(test.callbackPass(function(e) { | |
105 test.assertEq(1, e.error); | |
106 test.assertEq(2, e.bytesSent); | |
107 })); | |
108 sender.send(generateData(2, 'b')).catch(test.callbackPass(function(e) { | |
raymes
2014/08/20 04:23:13
It's easy to forget why this is expected to fail.
Sam McNally
2014/08/20 04:50:16
Done.
| |
109 test.assertEq(1, e.error); | |
110 test.assertEq(0, e.bytesSent); | |
111 sender.send(generateData(1)).then(test.callbackPass( | |
112 function(bytesSent) { | |
113 test.assertEq(1, bytesSent); | |
114 sender.close(); | |
115 })); | |
116 })); | |
117 }); | |
118 }, | |
119 | |
120 function testSendErrorInSecondPacket() { | |
121 wrapAsyncTest( | |
122 function testSend(serviceProvider, dataSender, mojom) { | |
123 var sender = new dataSender.DataSender( | |
124 serviceProvider.connectToService(mojom.DataSinkProxy.NAME_), 10, 2); | |
125 sender.send(generateData(2, 'b')).then(test.callbackPass( | |
126 function(bytesSent) { | |
127 test.assertEq(2, bytesSent); | |
128 })); | |
129 sender.send(generateData(2, 'b')).catch(test.callbackPass(function(e) { | |
130 test.assertEq(1, e.error); | |
131 test.assertEq(1, e.bytesSent); | |
132 sender.send(generateData(1)).then(test.callbackPass( | |
133 function(bytesSent) { | |
134 test.assertEq(1, bytesSent); | |
135 sender.close(); | |
136 })); | |
137 })); | |
138 }); | |
139 }, | |
140 | |
141 function testSendErrorBeforeLargeSend() { | |
142 wrapAsyncTest( | |
143 function testSend(serviceProvider, dataSender, mojom) { | |
144 var sender = new dataSender.DataSender( | |
145 serviceProvider.connectToService(mojom.DataSinkProxy.NAME_), 10, 2); | |
146 sender.send(generateData(5, 'b')).catch(test.callbackPass(function(e) { | |
147 test.assertEq(1, e.error); | |
148 test.assertEq(2, e.bytesSent); | |
149 })); | |
150 sender.send(generateData(1000, 'b')).catch(test.callbackPass(function(e) { | |
151 test.assertEq(1, e.error); | |
152 test.assertEq(0, e.bytesSent); | |
153 sender.send(generateData(1)).then(test.callbackPass( | |
154 function(bytesSent) { | |
155 test.assertEq(1, bytesSent); | |
156 sender.close(); | |
157 })); | |
158 })); | |
159 }); | |
160 }, | |
161 | |
162 function testCancelWithoutSend() { | |
163 wrapAsyncTest( | |
164 function testSend(serviceProvider, dataSender, mojom) { | |
165 var sender = new dataSender.DataSender( | |
166 serviceProvider.connectToService(mojom.DataSinkProxy.NAME_), 10, 2); | |
167 sender.cancel(3).then(test.callbackPass(function() { | |
168 sender.close(); | |
169 })); | |
170 }); | |
171 }, | |
172 | |
173 function testCancel() { | |
174 wrapAsyncTest( | |
175 function testSend(serviceProvider, dataSender, mojom) { | |
176 var seen = null; | |
177 var sender = new dataSender.DataSender( | |
178 serviceProvider.connectToService(mojom.DataSinkProxy.NAME_), 10, 2); | |
179 sender.send(generateData(1, 'b')).catch(test.callbackPass(function(e) { | |
180 test.assertEq(3, e.error); | |
181 test.assertEq(0, e.bytesSent); | |
182 test.assertEq(null, seen); | |
183 seen = 'send'; | |
184 })); | |
185 sender.cancel(3).then(test.callbackPass(function() { | |
186 test.assertEq('send', seen); | |
187 seen = 'cancel'; | |
188 sender.close(); | |
189 })); | |
190 test.assertThrows( | |
191 sender.cancel, sender, [], 'Cancel already in progress'); | |
192 test.assertThrows(sender.send, sender, [], 'Cancel in progress'); | |
193 }); | |
194 }, | |
195 | |
196 ], test.runTests, exports); | |
OLD | NEW |