OLD | NEW |
---|---|
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 // Tests launched by extensions/renderer/api/serial/data_receiver_unittest.cc | 5 // Tests launched by extensions/renderer/api/serial/data_receiver_unittest.cc |
6 | 6 |
7 var test = require('test').binding; | 7 var test = require('test').binding; |
8 var unittestBindings = require('test_environment_specific_bindings'); | 8 var unittestBindings = require('test_environment_specific_bindings'); |
9 | 9 |
10 var fatalErrorValue = 2; | 10 var fatalErrorValue = 2; |
11 var bufferSize = 10; | 11 var bufferSize = 10; |
12 | 12 |
13 function createReceiver() { | 13 function createReceiver() { |
14 return Promise.all([ | 14 return Promise.all([ |
15 requireAsync('content/public/renderer/service_provider'), | 15 requireAsync('content/public/renderer/service_provider'), |
16 requireAsync('data_receiver'), | 16 requireAsync('data_receiver'), |
17 requireAsync('device/serial/data_stream.mojom'), | 17 requireAsync('device/serial/data_stream.mojom'), |
18 ]).then(test.callbackPass(function(modules) { | 18 ]).then(test.callbackPass(function(modules) { |
19 var serviceProvider = modules[0]; | 19 var serviceProvider = modules[0]; |
20 var dataReceiver = modules[1]; | 20 var dataReceiver = modules[1]; |
21 var dataStream = modules[2]; | 21 var dataStream = modules[2]; |
22 return new dataReceiver.DataReceiver( | 22 return new dataReceiver.DataReceiver( |
23 serviceProvider.connectToService(dataStream.DataSourceProxy.NAME_), | 23 serviceProvider.connectToService(dataStream.DataSourceProxy.NAME_), |
24 bufferSize, | 24 bufferSize, |
25 fatalErrorValue); | 25 fatalErrorValue); |
26 })); | 26 })); |
27 } | 27 } |
28 | 28 |
29 function serializeRoundTrip(receiver) { | |
30 return Promise.all([ | |
31 receiver.serialize(), | |
32 requireAsync('data_receiver'), | |
33 ]).then(function(promises) { | |
34 var serialized = promises[0]; | |
35 var dataReceiver = promises[1]; | |
36 return dataReceiver.DataReceiver.deserialize(serialized); | |
37 }); | |
38 } | |
39 | |
29 unittestBindings.exportTests([ | 40 unittestBindings.exportTests([ |
30 function testReceive() { | 41 function testReceive() { |
31 createReceiver().then(test.callbackPass(function(receiver) { | 42 createReceiver().then(test.callbackPass(function(receiver) { |
32 receiver.receive().then(test.callbackPass(function(data) { | 43 receiver.receive().then(test.callbackPass(function(data) { |
33 test.assertEq(1, data.byteLength); | 44 test.assertEq(1, data.byteLength); |
34 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); | 45 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); |
35 receiver.close(); | 46 receiver.close(); |
36 })); | 47 })); |
37 test.assertThrows( | 48 test.assertThrows( |
38 receiver.receive, receiver, [], 'Receive already in progress.'); | 49 receiver.receive, receiver, [], 'Receive already in progress.'); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
71 test.assertEq(1, error.error); | 82 test.assertEq(1, error.error); |
72 return receiver.receive(); | 83 return receiver.receive(); |
73 })).then(test.callbackPass(function(data) { | 84 })).then(test.callbackPass(function(data) { |
74 test.assertEq(1, data.byteLength); | 85 test.assertEq(1, data.byteLength); |
75 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); | 86 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); |
76 receiver.close(); | 87 receiver.close(); |
77 })); | 88 })); |
78 })); | 89 })); |
79 }, | 90 }, |
80 | 91 |
92 function testReceiveWithSerialization() { | |
93 createReceiver().then(test.callbackPass(function(receiver) { | |
94 return receiver.receive().then(test.callbackPass(function(data) { | |
95 test.assertEq(1, data.byteLength); | |
96 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); | |
97 return receiver; | |
98 })); | |
99 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass( | |
100 function(receiver) { | |
101 receiver.receive().then(test.callbackPass(function(data) { | |
102 test.assertEq(1, data.byteLength); | |
103 test.assertEq('b'.charCodeAt(0), new Int8Array(data)[0]); | |
104 receiver.close(); | |
105 })); | |
106 test.assertThrows( | |
107 receiver.receive, receiver, [], 'Receive already in progress.'); | |
108 })); | |
109 }, | |
raymes
2014/09/17 02:05:04
I find the style that these tests are written in v
Sam McNally
2014/09/17 08:07:14
Done.
| |
110 | |
111 function testReceiveErrorWithSerialization() { | |
112 createReceiver().then(test.callbackPass(function(receiver) { | |
113 return receiver.receive().catch(test.callbackPass(function(error) { | |
114 test.assertEq(1, error.error); | |
115 return receiver; | |
116 })); | |
117 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass( | |
118 function(receiver) { | |
119 receiver.receive().catch(test.callbackPass(function(error) { | |
120 test.assertEq(3, error.error); | |
121 receiver.close(); | |
122 })); | |
123 })); | |
124 }, | |
125 | |
126 function testReceiveDataAndErrorWithSerialization() { | |
127 createReceiver().then(serializeRoundTrip).then(test.callbackPass( | |
128 function(receiver) { | |
129 return receiver.receive().then(test.callbackPass(function(data) { | |
130 test.assertEq(1, data.byteLength); | |
131 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); | |
132 return receiver.receive(); | |
133 })).catch(test.callbackPass(function(error) { | |
134 test.assertEq(1, error.error); | |
135 return receiver; | |
136 })); | |
137 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass( | |
138 function(receiver) { | |
139 receiver.receive().then(test.callbackPass(function(data) { | |
140 test.assertEq(1, data.byteLength); | |
141 test.assertEq('b'.charCodeAt(0), new Int8Array(data)[0]); | |
142 return receiver.receive(); | |
143 })).catch(test.callbackPass(function(error) { | |
144 test.assertEq(3, error.error); | |
145 return receiver.receive(); | |
146 })).then(test.callbackPass(function(data) { | |
147 test.assertEq(1, data.byteLength); | |
148 test.assertEq('c'.charCodeAt(0), new Int8Array(data)[0]); | |
149 receiver.close(); | |
150 })); | |
151 })); | |
152 }, | |
153 | |
154 function testReceiveErrorThenDataWithSerialization() { | |
155 createReceiver().then(test.callbackPass(function(receiver) { | |
156 return receiver.receive().catch(test.callbackPass(function(error) { | |
157 test.assertEq(1, error.error); | |
158 return receiver; | |
159 })); | |
160 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass( | |
161 function(receiver) { | |
162 receiver.receive().then(test.callbackPass(function(data) { | |
163 test.assertEq(1, data.byteLength); | |
164 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); | |
165 receiver.close(); | |
166 })); | |
167 })); | |
168 }, | |
169 | |
170 function testSerializeDuringReceive() { | |
171 createReceiver().then(test.callbackPass(function(receiver) { | |
172 receiver.receive().catch(test.callbackPass(function(error) { | |
173 test.assertEq(fatalErrorValue, error.error); | |
174 })); | |
175 return receiver; | |
176 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass( | |
177 function(receiver) { | |
178 receiver.receive().then(test.callbackPass(function(data) { | |
179 test.assertEq(1, data.byteLength); | |
180 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); | |
181 receiver.close(); | |
182 })); | |
183 })); | |
184 }, | |
185 | |
81 function testSourceShutdown() { | 186 function testSourceShutdown() { |
82 createReceiver().then(test.callbackPass(function(receiver) { | 187 createReceiver().then(test.callbackPass(function(receiver) { |
83 receiver.receive().catch(test.callbackPass(function(error) { | 188 receiver.receive().catch(test.callbackPass(function(error) { |
84 test.assertEq(fatalErrorValue, error.error); | 189 test.assertEq(fatalErrorValue, error.error); |
85 receiver.close(); | 190 receiver.close(); |
86 })); | 191 })); |
87 })); | 192 })); |
88 }, | 193 }, |
89 | 194 |
90 ], test.runTests, exports); | 195 ], test.runTests, exports); |
OLD | NEW |