Chromium Code Reviews| Index: extensions/test/data/data_receiver_unittest.js |
| diff --git a/extensions/test/data/data_receiver_unittest.js b/extensions/test/data/data_receiver_unittest.js |
| index 1bdda9663e687c01e1f70bdfb5c0496b34eef0ff..36fcab00cb7ea4b0de53de044e69f2cf8d17168b 100644 |
| --- a/extensions/test/data/data_receiver_unittest.js |
| +++ b/extensions/test/data/data_receiver_unittest.js |
| @@ -26,6 +26,17 @@ function createReceiver() { |
| })); |
| } |
| +function serializeRoundTrip(receiver) { |
| + return Promise.all([ |
| + receiver.serialize(), |
| + requireAsync('data_receiver'), |
| + ]).then(function(promises) { |
| + var serialized = promises[0]; |
| + var dataReceiver = promises[1]; |
| + return dataReceiver.DataReceiver.deserialize(serialized); |
| + }); |
| +} |
| + |
| unittestBindings.exportTests([ |
| function testReceive() { |
| createReceiver().then(test.callbackPass(function(receiver) { |
| @@ -78,6 +89,100 @@ unittestBindings.exportTests([ |
| })); |
| }, |
| + function testReceiveWithSerialization() { |
| + createReceiver().then(test.callbackPass(function(receiver) { |
| + return receiver.receive().then(test.callbackPass(function(data) { |
| + test.assertEq(1, data.byteLength); |
| + test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); |
| + return receiver; |
| + })); |
| + })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass( |
| + function(receiver) { |
| + receiver.receive().then(test.callbackPass(function(data) { |
| + test.assertEq(1, data.byteLength); |
| + test.assertEq('b'.charCodeAt(0), new Int8Array(data)[0]); |
| + receiver.close(); |
| + })); |
| + test.assertThrows( |
| + receiver.receive, receiver, [], 'Receive already in progress.'); |
| + })); |
| + }, |
|
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.
|
| + |
| + function testReceiveErrorWithSerialization() { |
| + createReceiver().then(test.callbackPass(function(receiver) { |
| + return receiver.receive().catch(test.callbackPass(function(error) { |
| + test.assertEq(1, error.error); |
| + return receiver; |
| + })); |
| + })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass( |
| + function(receiver) { |
| + receiver.receive().catch(test.callbackPass(function(error) { |
| + test.assertEq(3, error.error); |
| + receiver.close(); |
| + })); |
| + })); |
| + }, |
| + |
| + function testReceiveDataAndErrorWithSerialization() { |
| + createReceiver().then(serializeRoundTrip).then(test.callbackPass( |
| + function(receiver) { |
| + return receiver.receive().then(test.callbackPass(function(data) { |
| + test.assertEq(1, data.byteLength); |
| + test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); |
| + return receiver.receive(); |
| + })).catch(test.callbackPass(function(error) { |
| + test.assertEq(1, error.error); |
| + return receiver; |
| + })); |
| + })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass( |
| + function(receiver) { |
| + receiver.receive().then(test.callbackPass(function(data) { |
| + test.assertEq(1, data.byteLength); |
| + test.assertEq('b'.charCodeAt(0), new Int8Array(data)[0]); |
| + return receiver.receive(); |
| + })).catch(test.callbackPass(function(error) { |
| + test.assertEq(3, error.error); |
| + return receiver.receive(); |
| + })).then(test.callbackPass(function(data) { |
| + test.assertEq(1, data.byteLength); |
| + test.assertEq('c'.charCodeAt(0), new Int8Array(data)[0]); |
| + receiver.close(); |
| + })); |
| + })); |
| + }, |
| + |
| + function testReceiveErrorThenDataWithSerialization() { |
| + createReceiver().then(test.callbackPass(function(receiver) { |
| + return receiver.receive().catch(test.callbackPass(function(error) { |
| + test.assertEq(1, error.error); |
| + return receiver; |
| + })); |
| + })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass( |
| + function(receiver) { |
| + receiver.receive().then(test.callbackPass(function(data) { |
| + test.assertEq(1, data.byteLength); |
| + test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); |
| + receiver.close(); |
| + })); |
| + })); |
| + }, |
| + |
| + function testSerializeDuringReceive() { |
| + createReceiver().then(test.callbackPass(function(receiver) { |
| + receiver.receive().catch(test.callbackPass(function(error) { |
| + test.assertEq(fatalErrorValue, error.error); |
| + })); |
| + return receiver; |
| + })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass( |
| + function(receiver) { |
| + receiver.receive().then(test.callbackPass(function(data) { |
| + test.assertEq(1, data.byteLength); |
| + test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); |
| + receiver.close(); |
| + })); |
| + })); |
| + }, |
| + |
| function testSourceShutdown() { |
| createReceiver().then(test.callbackPass(function(receiver) { |
| receiver.receive().catch(test.callbackPass(function(error) { |