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) { |