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

Side by Side Diff: extensions/test/data/serial_unittest.js

Issue 423403002: Implement more of chrome.serial on the Mojo SerialConnection. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@js-serial
Patch Set: add missed GN change Created 6 years, 4 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 | « extensions/renderer/resources/serial_service.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /**
6 * Unit tests for the JS serial service client.
7 *
8 * These test that configuration and data are correctly transmitted between the
9 * client and the service.
10 */
11
5 var test = require('test').binding; 12 var test = require('test').binding;
6 var serial = require('serial').binding; 13 var serial = require('serial').binding;
7 var unittestBindings = require('test_environment_specific_bindings'); 14 var unittestBindings = require('test_environment_specific_bindings');
8 15
16 var connectionId = null;
17
18 function connect(callback, options) {
19 options = options || {
20 name: 'test connection',
21 bufferSize: 8192,
22 receiveTimeout: 12345,
23 sendTimeout: 6789,
24 persistent: true,
25 }
26 serial.connect('device', options, test.callbackPass(function(connectionInfo) {
27 connectionId = connectionInfo.connectionId;
28 callback(connectionInfo);
29 }));
30 }
31
32 function disconnect() {
33 serial.disconnect(connectionId, test.callbackPass(function(success) {
34 test.assertTrue(success);
35 connectionId = null;
36 }));
37 }
38
39 function checkClientConnectionInfo(connectionInfo) {
40 test.assertFalse(connectionInfo.persistent);
41 test.assertEq('test connection', connectionInfo.name);
42 test.assertEq(12345, connectionInfo.receiveTimeout);
43 test.assertEq(6789, connectionInfo.sendTimeout);
44 test.assertEq(8192, connectionInfo.bufferSize);
45 test.assertFalse(connectionInfo.paused);
46 }
47
48 function checkServiceConnectionInfo(connectionInfo) {
49 test.assertEq(9600, connectionInfo.bitrate);
50 test.assertEq('eight', connectionInfo.dataBits);
51 test.assertEq('no', connectionInfo.parityBit);
52 test.assertEq('one', connectionInfo.stopBits);
53 test.assertFalse(connectionInfo.ctsFlowControl);
54 }
55
56 function checkConnectionInfo(connectionInfo) {
57 checkClientConnectionInfo(connectionInfo);
58 checkServiceConnectionInfo(connectionInfo);
59 }
60
9 unittestBindings.exportTests([ 61 unittestBindings.exportTests([
10 function testGetDevices() { 62 function testGetDevices() {
11 serial.getDevices(test.callbackPass(function(devices) { 63 serial.getDevices(test.callbackPass(function(devices) {
12 test.assertEq(3, devices.length); 64 test.assertEq(3, devices.length);
13 test.assertEq(4, $Object.keys(devices[0]).length); 65 test.assertEq(4, $Object.keys(devices[0]).length);
14 test.assertEq('device', devices[0].path); 66 test.assertEq('device', devices[0].path);
15 test.assertEq(1234, devices[0].vendorId); 67 test.assertEq(1234, devices[0].vendorId);
16 test.assertEq(5678, devices[0].productId); 68 test.assertEq(5678, devices[0].productId);
17 test.assertEq('foo', devices[0].displayName); 69 test.assertEq('foo', devices[0].displayName);
18 test.assertEq(1, $Object.keys(devices[1]).length); 70 test.assertEq(1, $Object.keys(devices[1]).length);
19 test.assertEq('another_device', devices[1].path); 71 test.assertEq('another_device', devices[1].path);
20 test.assertEq(1, $Object.keys(devices[2]).length); 72 test.assertEq(1, $Object.keys(devices[2]).length);
21 test.assertEq('', devices[2].path); 73 test.assertEq('', devices[2].path);
22 })); 74 }));
23 }, 75 },
76
77 function testConnectFail() {
78 serial.connect('device',
79 test.callbackFail('Failed to connect to the port.'));
80 },
81
82 function testGetInfoFailOnConnect() {
83 serial.connect('device',
84 test.callbackFail('Failed to connect to the port.'));
85 },
86
87 function testConnectInvalidBitrate() {
88 serial.connect('device', {bitrate: -1}, test.callbackFail(
89 'Failed to connect to the port.'));
90 },
91
92 function testConnect() {
93 connect(function(connectionInfo) {
94 disconnect();
95 checkConnectionInfo(connectionInfo);
96 });
97 },
98
99 function testConnectDefaultOptions() {
100 connect(function(connectionInfo) {
101 disconnect();
102 test.assertEq(9600, connectionInfo.bitrate);
103 test.assertEq('eight', connectionInfo.dataBits);
104 test.assertEq('no', connectionInfo.parityBit);
105 test.assertEq('one', connectionInfo.stopBits);
106 test.assertFalse(connectionInfo.ctsFlowControl);
107 test.assertFalse(connectionInfo.persistent);
108 test.assertEq('', connectionInfo.name);
109 test.assertEq(0, connectionInfo.receiveTimeout);
110 test.assertEq(0, connectionInfo.sendTimeout);
111 test.assertEq(4096, connectionInfo.bufferSize);
112 }, {});
113 },
114
115 function testGetInfo() {
116 connect(function() {
117 serial.getInfo(connectionId,
118 test.callbackPass(function(connectionInfo) {
119 disconnect();
120 checkConnectionInfo(connectionInfo);
121 }));
122 });
123 },
124
125 function testGetInfoFailToGetPortInfo() {
126 connect(function() {
127 serial.getInfo(connectionId,
128 test.callbackPass(function(connectionInfo) {
129 disconnect();
130 checkClientConnectionInfo(connectionInfo);
131 test.assertFalse('bitrate' in connectionInfo);
132 test.assertFalse('dataBits' in connectionInfo);
133 test.assertFalse('parityBit' in connectionInfo);
134 test.assertFalse('stopBit' in connectionInfo);
135 test.assertFalse('ctsFlowControl' in connectionInfo);
136 }));
137 });
138 },
139
140 function testGetConnections() {
141 connect(function() {
142 serial.getConnections(test.callbackPass(function(connections) {
143 disconnect();
144 test.assertEq(1, connections.length);
145 checkConnectionInfo(connections[0]);
146 }));
147 });
148 },
149
150 function testGetControlSignals() {
151 connect(function() {
152 var calls = 0;
153 function checkControlSignals(signals) {
154 if (calls == 15) {
155 disconnect();
156 } else {
157 serial.getControlSignals(
158 connectionId,
159 test.callbackPass(checkControlSignals));
160 }
161 test.assertEq(!!(calls & 1), signals.dcd);
162 test.assertEq(!!(calls & 2), signals.cts);
163 test.assertEq(!!(calls & 4), signals.ri);
164 test.assertEq(!!(calls & 8), signals.dsr);
165 calls++;
166 }
167 serial.getControlSignals(connectionId,
168 test.callbackPass(checkControlSignals));
169 });
170 },
171
172 function testSetControlSignals() {
173 connect(function() {
174 var signalsValues = [
175 {},
176 {dtr: false},
177 {dtr: true},
178 {rts: false},
179 {dtr: false, rts: false},
180 {dtr: true, rts: false},
181 {rts: true},
182 {dtr: false, rts: true},
183 {dtr: true, rts: true},
184 ];
185 var calls = 0;
186 function setControlSignals(success) {
187 if (calls == signalsValues.length) {
188 disconnect();
189 } else {
190 serial.setControlSignals(connectionId,
191 signalsValues[calls++],
192 test.callbackPass(setControlSignals));
193 }
194 test.assertTrue(success);
195 }
196 setControlSignals(true);
197 });
198 },
199
200 function testUpdate() {
201 connect(function() {
202 var optionsValues = [
203 {}, // SetPortOptions is called once during connection.
204 {bitrate: 57600},
205 {dataBits: 'seven'},
206 {dataBits: 'eight'},
207 {parityBit: 'no'},
208 {parityBit: 'odd'},
209 {parityBit: 'even'},
210 {stopBits: 'one'},
211 {stopBits: 'two'},
212 {ctsFlowControl: false},
213 {ctsFlowControl: true},
214 {bufferSize: 1},
215 {sendTimeout: 0},
216 {receiveTimeout: 0},
217 {persistent: false},
218 {name: 'name'},
219 ];
220 var calls = 0;
221 function checkInfo(info) {
222 for (var key in optionsValues[calls]) {
223 test.assertEq(optionsValues[calls][key], info[key]);
224 }
225 setOptions();
226 }
227 function setOptions() {
228 if (++calls == optionsValues.length) {
229 disconnect();
230 } else {
231 serial.update(connectionId,
232 optionsValues[calls],
233 test.callbackPass(function(success) {
234 serial.getInfo(connectionId, test.callbackPass(checkInfo));
235 test.assertTrue(success);
236 }));
237 }
238 }
239 setOptions();
240 });
241 },
242
243 function testUpdateInvalidBitrate() {
244 connect(function() {
245 serial.update(connectionId,
246 {bitrate: -1},
247 test.callbackPass(function(success) {
248 disconnect();
249 test.assertFalse(success);
250 }));
251 });
252 },
253
254 function testFlush() {
255 connect(function() {
256 serial.flush(connectionId,
257 test.callbackPass(function(success) {
258 disconnect();
259 test.assertTrue(success);
260 }));
261 });
262 },
263
264 function testSetPaused() {
265 connect(function() {
266 serial.setPaused(connectionId, true, test.callbackPass(function() {
267 serial.getInfo(connectionId, test.callbackPass(function(info) {
268 serial.setPaused(connectionId, false, test.callbackPass(function() {
269 serial.getInfo(connectionId, test.callbackPass(function(info) {
270 test.assertFalse(info.paused);
271 disconnect();
272 }));
273 }));
274 test.assertTrue(info.paused);
275 }));
276 }));
277 });
278 },
279
280 function testDisconnectUnknownConnectionId() {
281 serial.disconnect(-1, test.callbackFail('Serial connection not found.'));
282 },
283
284 function testGetInfoUnknownConnectionId() {
285 serial.getInfo(-1, test.callbackFail('Serial connection not found.'));
286 },
287
288 function testUpdateUnknownConnectionId() {
289 serial.update(-1, {}, test.callbackFail('Serial connection not found.'));
290 },
291
292 function testSetControlSignalsUnknownConnectionId() {
293 serial.setControlSignals(-1, {}, test.callbackFail(
294 'Serial connection not found.'));
295 },
296
297 function testGetControlSignalsUnknownConnectionId() {
298 serial.getControlSignals(-1, test.callbackFail(
299 'Serial connection not found.'));
300 },
301
302 function testFlushUnknownConnectionId() {
303 serial.flush(-1, test.callbackFail('Serial connection not found.'));
304 },
305
306 function testSetPausedUnknownConnectionId() {
307 serial.setPaused(
308 -1, true, test.callbackFail('Serial connection not found.'));
309 serial.setPaused(
310 -1, false, test.callbackFail('Serial connection not found.'));
311 },
24 ], test.runTests, exports); 312 ], test.runTests, exports);
OLDNEW
« no previous file with comments | « extensions/renderer/resources/serial_service.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698