4 <script src=
"/js-test-resources/js-test.js"></script>
7 <div id=
"description"></div>
8 <div id=
"console"></div>
10 description("WebSocket: Receive ArrayBuffers.");
12 window
.jsTestIsAsync
= true;
14 function createArrayBufferContainingHelloWorld()
16 var hello
= "Hello, world!";
17 var array
= new Uint8Array(hello
.length
);
18 for (var i
= 0; i
< hello
.length
; ++i
)
19 array
[i
] = hello
.charCodeAt(i
);
23 function createEmptyArrayBuffer()
25 return new ArrayBuffer(0);
28 function createArrayBufferContainingAllDistinctBytes()
30 var array
= new Uint8Array(256);
31 for (var i
= 0; i
< 256; ++i
)
36 var ws
= new WebSocket("ws://127.0.0.1:8880/binary-frames");
37 ws
.binaryType
= "arraybuffer";
38 shouldBeEqualToString("ws.binaryType", "arraybuffer");
41 var receivedMessages
= [];
42 var expectedValues
= [createArrayBufferContainingHelloWorld(), createEmptyArrayBuffer(), createArrayBufferContainingAllDistinctBytes()];
44 ws
.onmessage = function(event
)
46 receivedMessages
.push(event
.data
);
49 ws
.onclose = function(event
)
53 shouldEvaluateTo("receivedMessages.length", expectedValues
.length
);
54 for (var i
= 0; i
< expectedValues
.length
; ++i
)
63 debug("Checking message #" + index
+ ".");
64 responseType
= '' + receivedMessages
[index
];
65 shouldBeEqualToString("responseType", "[object ArrayBuffer]");
66 checkArrayBuffer(index
, receivedMessages
[index
], expectedValues
[index
]);
72 function checkArrayBuffer(testIndex
, actual
, expected
)
74 actualArray
= new Uint8Array(actual
);
75 expectedArray
= new Uint8Array(expected
);
76 shouldEvaluateTo("actualArray.length", expectedArray
.length
);
77 // Print only the first mismatched byte in order not to flood console.
78 for (var i
= 0; i
< expectedArray
.length
; ++i
) {
79 if (actualArray
[i
] != expectedArray
[i
]) {
80 testFailed("Value mismatch: actualArray[" + i
+ "] = " + actualArray
[i
] + ", expectedArray[" + i
+ "] = " + expectedArray
[i
]);
84 testPassed("Passed: Message #" + testIndex
+ ".");