Chromium Code Reviews| 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 |