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_sender_unittest.cc | 5 // Tests launched by extensions/renderer/api/serial/data_sender_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 BUFFER_SIZE = 11; | 10 var BUFFER_SIZE = 11; |
| 11 var FATAL_ERROR = 2; | 11 var FATAL_ERROR = 2; |
| 12 | 12 |
| 13 function generateData(size, pattern) { | 13 function generateData(size, pattern) { |
| 14 if (!pattern) | 14 if (!pattern) |
| 15 pattern = 'a'; | 15 pattern = 'a'; |
| 16 var buffer = new ArrayBuffer(size); | 16 var buffer = new ArrayBuffer(size); |
| 17 var intView = new Int8Array(buffer); | 17 var intView = new Int8Array(buffer); |
| 18 for (var i = 0; i < size; i++) { | 18 for (var i = 0; i < size; i++) { |
| 19 intView[i] = pattern.charCodeAt(i % pattern.length); | 19 intView[i] = pattern.charCodeAt(i % pattern.length); |
| 20 } | 20 } |
| 21 return buffer; | 21 return buffer; |
| 22 } | 22 } |
| 23 | 23 |
| 24 function createSender() { | 24 function createSender() { |
| 25 return Promise.all([ | 25 return Promise.all([ |
| 26 requireAsync('content/public/renderer/service_provider'), | 26 requireAsync('content/public/renderer/service_provider'), |
| 27 requireAsync('data_sender'), | 27 requireAsync('data_sender'), |
| 28 requireAsync('device/serial/data_stream.mojom'), | 28 requireAsync('device/serial/data_stream.mojom'), |
| 29 ]).then(test.callbackPass(function(modules) { | 29 ]).then(function(modules) { |
| 30 var serviceProvider = modules[0]; | 30 var serviceProvider = modules[0]; |
| 31 var dataSender = modules[1]; | 31 var dataSender = modules[1]; |
| 32 var dataStream = modules[2]; | 32 var dataStream = modules[2]; |
| 33 return new dataSender.DataSender( | 33 return new dataSender.DataSender( |
| 34 serviceProvider.connectToService(dataStream.DataSinkProxy.NAME_), | 34 serviceProvider.connectToService(dataStream.DataSinkProxy.NAME_), |
| 35 BUFFER_SIZE, | 35 BUFFER_SIZE, |
| 36 FATAL_ERROR); | 36 FATAL_ERROR); |
| 37 })); | 37 }); |
| 38 } | |
| 39 | |
| 40 function sendAndExpectSuccess(data, expectedBytesSent) { | |
|
raymes
2014/09/18 03:16:07
Please add comments for the helpers here too
Sam McNally
2014/09/19 04:58:48
Done.
| |
| 41 return function(sender) { | |
| 42 return sender.send(data).then(function(bytesSent) { | |
| 43 test.assertEq(expectedBytesSent, bytesSent); | |
| 44 return sender; | |
| 45 }); | |
| 46 }; | |
| 47 } | |
| 48 | |
| 49 function sendAndExpectError(data, expectedError, expectedBytesSent) { | |
| 50 return function(sender) { | |
| 51 return sender.send(data).catch(function(result) { | |
| 52 test.assertEq(expectedError, result.error); | |
| 53 test.assertEq(expectedBytesSent, result.bytesSent); | |
| 54 return sender; | |
| 55 }); | |
| 56 }; | |
| 57 } | |
| 58 | |
| 59 function cancelSend(cancelReason) { | |
| 60 return function(sender) { | |
| 61 return sender.cancel(cancelReason).then(function() { | |
| 62 return sender; | |
| 63 }); | |
| 64 }; | |
| 65 } | |
| 66 | |
| 67 function expectOrder(promises) { | |
| 68 var nextIndex = 0; | |
| 69 function createOrderChecker(promise, expectedIndex) { | |
| 70 return promise.then(function(sender) { | |
| 71 test.assertEq(nextIndex, expectedIndex); | |
| 72 nextIndex++; | |
| 73 return sender; | |
| 74 }); | |
| 75 } | |
| 76 var wrappedPromises = []; | |
| 77 for (var i = 0; i < promises.length; i++) { | |
| 78 wrappedPromises.push(createOrderChecker(promises[i], i)); | |
| 79 } | |
| 80 return Promise.all(wrappedPromises).then(function(results) { | |
| 81 return results[0]; | |
| 82 }); | |
| 83 } | |
| 84 | |
| 85 function serializeRoundTrip(sender) { | |
| 86 return Promise.all([ | |
| 87 sender.serialize(), | |
| 88 requireAsync('data_sender'), | |
| 89 ]).then(function(promises) { | |
| 90 var serialized = promises[0]; | |
| 91 var dataSender = promises[1]; | |
|
raymes
2014/09/18 03:16:07
dataSenderModule
Sam McNally
2014/09/19 04:58:47
Done.
| |
| 92 return promises[1].DataSender.deserialize(promises[0]); | |
|
raymes
2014/09/18 03:16:07
same here, use the variable names :)
Sam McNally
2014/09/19 04:58:48
Done.
| |
| 93 }); | |
| 94 } | |
| 95 | |
| 96 function closeSender(sender) { | |
| 97 sender.close(); | |
| 98 return sender; | |
| 38 } | 99 } |
| 39 | 100 |
| 40 unittestBindings.exportTests([ | 101 unittestBindings.exportTests([ |
| 41 function testSend() { | 102 function testSend() { |
| 42 createSender().then(test.callbackPass(function(sender) { | 103 var sender = createSender(); |
| 43 var seen = null; | 104 expectOrder([ |
| 44 sender.send(generateData(1)).then(test.callbackPass(function(bytesSent) { | 105 sender.then(sendAndExpectSuccess(generateData(1), 1)), |
| 45 test.assertEq(1, bytesSent); | 106 sender.then(sendAndExpectSuccess(generateData(1), 1)), |
| 46 test.assertEq(null, seen); | 107 ]).then(closeSender).then(test.succeed, test.fail); |
| 47 seen = 'first'; | |
| 48 })); | |
| 49 sender.send(generateData(1)).then(test.callbackPass(function(bytesSent) { | |
| 50 sender.close(); | |
| 51 test.assertEq(1, bytesSent); | |
| 52 test.assertEq('first', seen); | |
| 53 seen = 'second'; | |
| 54 })); | |
| 55 })); | |
| 56 }, | 108 }, |
| 57 | 109 |
| 58 function testLargeSend() { | 110 function testLargeSend() { |
| 59 createSender().then(test.callbackPass(function(sender) { | 111 createSender() |
| 60 sender.send(generateData(BUFFER_SIZE * 3, '123')).then( | 112 .then(sendAndExpectSuccess(generateData(BUFFER_SIZE * 3, '123'), |
| 61 test.callbackPass(function(bytesSent) { | 113 BUFFER_SIZE * 3)) |
|
raymes
2014/09/18 03:16:07
I think the indentation should be 2 spaces less he
Sam McNally
2014/09/19 04:58:47
Done.
| |
| 62 test.assertEq(BUFFER_SIZE * 3, bytesSent); | 114 .then(closeSender).then(test.succeed, test.fail); |
| 63 sender.close(); | |
| 64 })); | |
| 65 })); | |
| 66 }, | 115 }, |
| 67 | 116 |
| 68 function testSendError() { | 117 function testSendError() { |
| 69 createSender().then(test.callbackPass(function(sender) { | 118 createSender() |
| 70 sender.send(generateData(BUFFER_SIZE * 3, 'b')).catch(test.callbackPass( | 119 .then(sendAndExpectError(generateData(BUFFER_SIZE * 3, 'b'), 1, 0)) |
| 71 function(e) { | 120 .then(sendAndExpectSuccess(generateData(1), 1)) |
| 72 test.assertEq(1, e.error); | 121 .then(closeSender).then(test.succeed, test.fail); |
| 73 test.assertEq(0, e.bytesSent); | |
| 74 sender.send(generateData(1)).then(test.callbackPass( | |
| 75 function(bytesSent) { | |
| 76 test.assertEq(1, bytesSent); | |
| 77 sender.close(); | |
| 78 })); | |
| 79 })); | |
| 80 })); | |
| 81 }, | 122 }, |
| 82 | 123 |
| 83 function testSendErrorPartialSuccess() { | 124 function testSendErrorPartialSuccess() { |
| 84 createSender().then(test.callbackPass(function(sender) { | 125 createSender() |
| 85 sender.send(generateData(BUFFER_SIZE * 3, 'b')).catch(test.callbackPass( | 126 .then(sendAndExpectError(generateData(BUFFER_SIZE * 3, 'b'), 1, 5)) |
| 86 function(e) { | 127 .then(sendAndExpectSuccess(generateData(1), 1)) |
| 87 test.assertEq(1, e.error); | 128 .then(closeSender).then(test.succeed, test.fail); |
| 88 test.assertEq(5, e.bytesSent); | |
| 89 sender.send(generateData(1)).then(test.callbackPass( | |
| 90 function(bytesSent) { | |
| 91 test.assertEq(1, bytesSent); | |
| 92 sender.close(); | |
| 93 })); | |
| 94 })); | |
| 95 })); | |
| 96 }, | 129 }, |
| 97 | 130 |
| 98 function testSendErrorBetweenPackets() { | 131 function testSendErrorBetweenPackets() { |
| 99 createSender().then(test.callbackPass(function(sender) { | 132 var sender = createSender(); |
| 100 sender.send(generateData(2, 'b')).catch(test.callbackPass(function(e) { | 133 expectOrder([ |
| 101 test.assertEq(1, e.error); | 134 sender.then(sendAndExpectError(generateData(2, 'b'), 1, 2)), |
| 102 test.assertEq(2, e.bytesSent); | 135 sender.then(sendAndExpectError(generateData(2, 'b'), 1, 0)), |
| 103 })); | 136 ]) |
| 104 // After an error, all sends in progress will be cancelled. | 137 .then(sendAndExpectSuccess(generateData(1), 1)) |
| 105 sender.send(generateData(2, 'b')).catch(test.callbackPass(function(e) { | 138 .then(closeSender).then(test.succeed, test.fail); |
| 106 test.assertEq(1, e.error); | |
| 107 test.assertEq(0, e.bytesSent); | |
| 108 sender.send(generateData(1)).then(test.callbackPass( | |
| 109 function(bytesSent) { | |
| 110 test.assertEq(1, bytesSent); | |
| 111 sender.close(); | |
| 112 })); | |
| 113 })); | |
| 114 })); | |
| 115 }, | 139 }, |
| 116 | 140 |
| 117 function testSendErrorInSecondPacket() { | 141 function testSendErrorInSecondPacket() { |
| 118 createSender().then(test.callbackPass(function(sender) { | 142 var sender = createSender(); |
| 119 sender.send(generateData(2, 'b')).then(test.callbackPass( | 143 expectOrder([ |
| 120 function(bytesSent) { | 144 sender.then(sendAndExpectSuccess(generateData(2, 'b'), 2)), |
| 121 test.assertEq(2, bytesSent); | 145 sender.then(sendAndExpectError(generateData(2, 'b'), 1, 1)), |
| 122 })); | 146 ]) |
| 123 sender.send(generateData(2, 'b')).catch(test.callbackPass(function(e) { | 147 .then(sendAndExpectSuccess(generateData(1), 1)) |
| 124 test.assertEq(1, e.error); | 148 .then(closeSender).then(test.succeed, test.fail); |
|
raymes
2014/09/18 03:16:07
I think the indentation is wrong here - it looks d
Sam McNally
2014/09/19 04:58:48
Done.
| |
| 125 test.assertEq(1, e.bytesSent); | |
| 126 sender.send(generateData(1)).then(test.callbackPass( | |
| 127 function(bytesSent) { | |
| 128 test.assertEq(1, bytesSent); | |
| 129 sender.close(); | |
| 130 })); | |
| 131 })); | |
| 132 })); | |
| 133 }, | 149 }, |
| 134 | 150 |
| 135 function testSendErrorInLargeSend() { | 151 function testSendErrorInLargeSend() { |
| 136 createSender().then(test.callbackPass(function(sender) { | 152 createSender() |
| 137 sender.send(generateData(BUFFER_SIZE * 3, '1234567890')).catch( | 153 .then(sendAndExpectError( |
| 138 test.callbackPass(function(e) { | 154 generateData(BUFFER_SIZE * 3, '1234567890'), 1, 12)) |
| 139 test.assertEq(1, e.error); | 155 .then(sendAndExpectSuccess(generateData(1), 1)) |
| 140 test.assertEq(12, e.bytesSent); | 156 .then(closeSender).then(test.succeed, test.fail); |
| 141 sender.send(generateData(1)).then(test.callbackPass( | |
| 142 function(bytesSent) { | |
| 143 test.assertEq(1, bytesSent); | |
| 144 sender.close(); | |
| 145 })); | |
| 146 })); | |
| 147 })); | |
| 148 }, | 157 }, |
| 149 | 158 |
| 150 function testSendErrorBeforeLargeSend() { | 159 function testSendErrorBeforeLargeSend() { |
| 151 createSender().then(test.callbackPass(function(sender) { | 160 var sender = createSender(); |
| 152 sender.send(generateData(5, 'b')).catch(test.callbackPass(function(e) { | 161 expectOrder([ |
| 153 test.assertEq(1, e.error); | 162 sender.then(sendAndExpectError(generateData(5, 'b'), 1, 2)), |
| 154 test.assertEq(2, e.bytesSent); | 163 sender.then(sendAndExpectError( |
| 155 })); | 164 generateData(BUFFER_SIZE * 3, '1234567890'), 1, 0)), |
| 156 sender.send(generateData(BUFFER_SIZE * 3, '1234567890')).catch( | 165 ]) |
| 157 test.callbackPass(function(e) { | 166 .then(sendAndExpectSuccess(generateData(1), 1)) |
| 158 test.assertEq(1, e.error); | 167 .then(closeSender).then(test.succeed, test.fail); |
| 159 test.assertEq(0, e.bytesSent); | |
| 160 sender.send(generateData(1)).then(test.callbackPass( | |
| 161 function(bytesSent) { | |
| 162 test.assertEq(1, bytesSent); | |
| 163 sender.close(); | |
| 164 })); | |
| 165 })); | |
| 166 })); | |
| 167 }, | 168 }, |
| 168 | 169 |
| 169 function testCancelWithoutSend() { | 170 function testCancelWithoutSend() { |
| 170 createSender().then(test.callbackPass(function(sender) { | 171 createSender() |
| 171 sender.cancel(3).then(test.callbackPass(function() { | 172 .then(cancelSend(3)) |
| 172 sender.close(); | 173 .then(closeSender).then(test.succeed, test.fail); |
| 173 })); | |
| 174 })); | |
| 175 }, | 174 }, |
| 176 | 175 |
| 177 function testCancel() { | 176 function testCancel() { |
| 178 createSender().then(test.callbackPass(function(sender) { | 177 var sender = createSender(); |
| 179 var seen = null; | 178 expectOrder([ |
| 180 sender.send(generateData(1, 'b')).catch(test.callbackPass(function(e) { | 179 sender.then(sendAndExpectError(generateData(1, 'b'), 3, 0)), |
| 181 test.assertEq(3, e.error); | 180 sender.then(cancelSend(3)), |
| 182 test.assertEq(0, e.bytesSent); | 181 ]) |
| 183 test.assertEq(null, seen); | 182 .then(closeSender).then(test.succeed, test.fail); |
| 184 seen = 'send'; | 183 sender.then(function(sender) { |
| 185 })); | |
| 186 sender.cancel(3).then(test.callbackPass(function() { | |
| 187 test.assertEq('send', seen); | |
| 188 seen = 'cancel'; | |
| 189 sender.close(); | |
| 190 })); | |
| 191 test.assertThrows( | 184 test.assertThrows( |
| 192 sender.cancel, sender, [], 'Cancel already in progress'); | 185 sender.cancel, sender, [], 'Cancel already in progress'); |
| 193 test.assertThrows(sender.send, sender, [], 'Cancel in progress'); | 186 test.assertThrows(sender.send, sender, [], 'Cancel in progress'); |
| 194 })); | 187 }); |
| 195 }, | 188 }, |
| 196 | 189 |
| 197 function testClose() { | 190 function testClose() { |
| 198 createSender().then(test.callbackPass(function(sender) { | 191 var sender = createSender(); |
| 199 var seen = null; | 192 expectOrder([ |
| 200 sender.send(generateData(1, 'b')).catch(test.callbackPass(function(e) { | 193 sender.then(sendAndExpectError(generateData(1, 'b'), FATAL_ERROR, 0)), |
| 201 test.assertEq(FATAL_ERROR, e.error); | 194 sender.then(cancelSend(3)), |
| 202 test.assertEq(0, e.bytesSent); | 195 ]); |
| 203 test.assertEq(null, seen); | 196 sender.then(closeSender).then(test.succeed, test.fail) |
|
raymes
2014/09/18 03:16:07
I like having every .then on a separate line :)
Sam McNally
2014/09/19 04:58:47
Done.
| |
| 204 seen = 'send'; | 197 .then(function(sender) { |
|
raymes
2014/09/18 03:16:07
Won't this run after the test has passed or failed
Sam McNally
2014/09/19 04:58:47
Done.
| |
| 205 })); | |
| 206 sender.cancel(3).then(test.callbackPass(function() { | |
| 207 test.assertEq('send', seen); | |
| 208 seen = 'cancel'; | |
| 209 sender.close(); | |
| 210 })); | |
| 211 sender.close(); | |
| 212 test.assertThrows( | 198 test.assertThrows( |
| 213 sender.cancel, sender, [], 'DataSender has been closed'); | 199 sender.cancel, sender, [], 'DataSender has been closed'); |
| 214 test.assertThrows(sender.send, sender, [], 'DataSender has been closed'); | 200 test.assertThrows(sender.send, sender, [], 'DataSender has been closed'); |
| 215 })); | 201 }); |
| 202 }, | |
| 203 | |
| 204 function testSendWithSerialization() { | |
| 205 var sender = createSender() | |
| 206 .then(sendAndExpectSuccess(generateData(1), 1)) | |
| 207 .then(serializeRoundTrip); | |
| 208 expectOrder([ | |
| 209 sender.then(sendAndExpectSuccess(generateData(1), 1)), | |
| 210 sender.then(sendAndExpectSuccess(generateData(1), 1)), | |
| 211 ]).then(closeSender).then(test.succeed, test.fail); | |
|
raymes
2014/09/18 03:16:07
.then on a new line (and lots below)
Sam McNally
2014/09/19 04:58:48
Done.
| |
| 212 }, | |
| 213 | |
| 214 function testSendErrorWithSerialization() { | |
| 215 createSender() | |
| 216 .then(sendAndExpectError(generateData(BUFFER_SIZE * 3, 'b'), 1, 0)) | |
| 217 .then(sendAndExpectSuccess(generateData(1), 1)) | |
| 218 .then(serializeRoundTrip) | |
| 219 .then(sendAndExpectError(generateData(BUFFER_SIZE * 3, 'b'), 3, 0)) | |
| 220 .then(sendAndExpectSuccess(generateData(1, 'c'), 1)) | |
| 221 .then(closeSender).then(test.succeed, test.fail); | |
| 222 }, | |
| 223 | |
| 224 function testSendErrorPartialSuccessWithSerialization() { | |
| 225 createSender() | |
| 226 .then(sendAndExpectError(generateData(BUFFER_SIZE * 3, 'b'), 1, 5)) | |
| 227 .then(sendAndExpectSuccess(generateData(1), 1)) | |
| 228 .then(serializeRoundTrip) | |
| 229 .then(sendAndExpectError(generateData(BUFFER_SIZE * 3, 'c'), 3, 5)) | |
| 230 .then(sendAndExpectSuccess(generateData(1, 'd'), 1)) | |
| 231 .then(closeSender).then(test.succeed, test.fail); | |
| 232 }, | |
| 233 | |
| 234 function testSendErrorBetweenPacketsWithSerialization() { | |
|
raymes
2014/09/18 03:16:07
Do this test and the next one test something subst
Sam McNally
2014/09/19 04:58:48
Removed these.
| |
| 235 var sender = createSender(); | |
| 236 sender = expectOrder([ | |
| 237 sender.then(sendAndExpectError(generateData(2, 'b'), 1, 2)), | |
| 238 sender.then(sendAndExpectError(generateData(2, 'b'), 1, 0)), | |
| 239 ]) | |
| 240 .then(sendAndExpectSuccess(generateData(1), 1)) | |
| 241 .then(serializeRoundTrip); | |
| 242 expectOrder([ | |
| 243 sender.then(sendAndExpectError(generateData(2, 'c'), 3, 2)), | |
| 244 sender.then(sendAndExpectError(generateData(2, 'c'), 3, 0)), | |
| 245 ]) | |
| 246 .then(sendAndExpectSuccess(generateData(1, 'd'), 1)) | |
| 247 .then(closeSender).then(test.succeed, test.fail); | |
| 248 }, | |
| 249 | |
| 250 function testSendErrorInSecondPacketWithSerialization() { | |
| 251 var sender = createSender(); | |
| 252 sender = expectOrder([ | |
| 253 sender.then(sendAndExpectSuccess(generateData(2, 'b'), 2)), | |
| 254 sender.then(sendAndExpectError(generateData(2, 'b'), 1, 1)), | |
| 255 ]) | |
| 256 .then(sendAndExpectSuccess(generateData(1), 1)) | |
| 257 .then(serializeRoundTrip); | |
| 258 expectOrder([ | |
| 259 sender.then(sendAndExpectSuccess(generateData(2, 'c'), 2)), | |
| 260 sender.then(sendAndExpectError(generateData(2, 'c'), 3, 1)), | |
| 261 ]) | |
| 262 .then(sendAndExpectSuccess(generateData(1, 'd'), 1)) | |
| 263 .then(closeSender).then(test.succeed, test.fail); | |
| 264 | |
| 265 }, | |
| 266 | |
| 267 function testCancelWithSerialization() { | |
|
raymes
2014/09/18 03:16:07
does this test actually check anything?
Sam McNally
2014/09/19 04:58:47
Just that cancel still works the same after serial
| |
| 268 var sender = createSender(); | |
| 269 sender = expectOrder([ | |
| 270 sender.then(sendAndExpectError(generateData(1, 'b'), 3, 0)), | |
| 271 sender.then(cancelSend(3)), | |
| 272 ]).then(serializeRoundTrip); | |
| 273 expectOrder([ | |
| 274 sender.then(sendAndExpectError(generateData(1, 'b'), 4, 0)), | |
| 275 sender.then(cancelSend(4)), | |
| 276 ]).then(closeSender).then(test.succeed, test.fail); | |
| 277 sender.then(function(sender) { | |
| 278 test.assertThrows( | |
| 279 sender.cancel, sender, [], 'Cancel already in progress'); | |
| 280 test.assertThrows(sender.send, sender, [], 'Cancel in progress'); | |
| 281 }); | |
| 282 }, | |
| 283 | |
| 284 function testSerializeWithSendsInProgress() { | |
|
raymes
2014/09/18 03:16:07
does this test actually check anything?
Sam McNally
2014/09/19 04:58:48
Yes. This checks that serialize() cancels any send
| |
| 285 var sender = createSender(); | |
| 286 expectOrder([ | |
| 287 sender.then(sendAndExpectError(generateData(1, 'b'), FATAL_ERROR, 0)), | |
| 288 sender.then(sendAndExpectError(generateData(1, 'b'), FATAL_ERROR, 0)), | |
| 289 sender.then(serializeRoundTrip), | |
| 290 ]).then(closeSender).then(test.succeed, test.fail); | |
| 291 }, | |
| 292 | |
| 293 function testSerializeWithSendAndCancelInProgress() { | |
| 294 var sender = createSender(); | |
| 295 expectOrder([ | |
| 296 sender.then(sendAndExpectError(generateData(1, 'b'), 3, 0)), | |
| 297 sender.then(cancelSend(3)), | |
| 298 sender.then(serializeRoundTrip), | |
|
raymes
2014/09/18 03:16:07
does this test actually check anything?
Sam McNally
2014/09/19 04:58:47
Yes. This checks that serialize() doesn't override
| |
| 299 ]).then(closeSender).then(test.succeed, test.fail); | |
| 300 }, | |
| 301 | |
| 302 function testSerializeAfterClose() { | |
| 303 function sendAfterClose(sender) { | |
| 304 test.assertThrows(sender.send, sender, [], 'DataSender has been closed'); | |
| 305 } | |
| 306 | |
| 307 createSender() | |
| 308 .then(closeSender) | |
| 309 .then(serializeRoundTrip) | |
| 310 .then(sendAfterClose).then(test.succeed, test.fail); | |
| 216 }, | 311 }, |
| 217 | 312 |
| 218 ], test.runTests, exports); | 313 ], test.runTests, exports); |
| OLD | NEW |