OLD | NEW |
| (Empty) |
1 function createArrayBufferContainingHelloWorld() | |
2 { | |
3 var hello = "Hello, world!"; | |
4 var array = new Uint8Array(hello.length); | |
5 for (var i = 0; i < hello.length; ++i) | |
6 array[i] = hello.charCodeAt(i); | |
7 return array.buffer; | |
8 } | |
9 | |
10 function createEmptyArrayBuffer() | |
11 { | |
12 return new ArrayBuffer(0); | |
13 } | |
14 | |
15 function createArrayBufferContainingAllDistinctBytes() | |
16 { | |
17 var array = new Uint8Array(256); | |
18 for (var i = 0; i < 256; ++i) | |
19 array[i] = i; | |
20 return array.buffer; | |
21 } | |
22 | |
23 var ws = new WebSocket("ws://127.0.0.1:8880/workers/resources/binary-frames"); | |
24 if (ws.binaryType === "blob") | |
25 postMessage("PASS: ws.binaryType is \"blob\""); | |
26 else | |
27 postMessage("FAIL: ws.binaryType should be \"blob\" but was \"" + ws.binaryT
ype + "\""); | |
28 | |
29 var receivedMessages = []; | |
30 var expectedValues = [createArrayBufferContainingHelloWorld(), createEmptyArrayB
uffer(), createArrayBufferContainingAllDistinctBytes()]; | |
31 | |
32 ws.onmessage = function(event) | |
33 { | |
34 receivedMessages.push(event.data); | |
35 }; | |
36 | |
37 ws.onclose = function(closeEvent) | |
38 { | |
39 if (receivedMessages.length === expectedValues.length) | |
40 postMessage("PASS: receivedMessages.length is " + expectedValues.length)
; | |
41 else | |
42 postMessage("FAIL: receivedMessages.length should be " + expectedValues.
length + " but was " + receivedMessages.length); | |
43 check(0); | |
44 }; | |
45 | |
46 function check(index) | |
47 { | |
48 if (index == expectedValues.length) { | |
49 postMessage("DONE"); | |
50 return; | |
51 } | |
52 | |
53 postMessage("INFO: Checking message #" + index + "."); | |
54 var responseType = '' + receivedMessages[index]; | |
55 if (responseType === "[object Blob]") | |
56 postMessage("PASS: responseType is \"[object Blob]\""); | |
57 else | |
58 postMessage("FAIL: responseType should be \"[object Blob]\" but was \""
+ responseType + "\""); | |
59 var reader = new FileReader(); | |
60 reader.readAsArrayBuffer(receivedMessages[index]); | |
61 reader.onload = function(event) | |
62 { | |
63 checkArrayBuffer(index, reader.result, expectedValues[index]); | |
64 check(index + 1); | |
65 }; | |
66 reader.onerror = function(event) | |
67 { | |
68 postMessage("FAIL: Failed to read blob: error code = " + reader.error.co
de); | |
69 check(index + 1); | |
70 }; | |
71 } | |
72 | |
73 function checkArrayBuffer(testIndex, actual, expected) | |
74 { | |
75 var actualArray = new Uint8Array(actual); | |
76 var expectedArray = new Uint8Array(expected); | |
77 if (actualArray.length === expectedArray.length) | |
78 postMessage("PASS: actualArray.length is " + expectedArray.length); | |
79 else | |
80 postMessage("FAIL: actualArray.length should be " + expectedArray.length
+ " but was " + actualArray.length); | |
81 // Print only the first mismatched byte in order not to flood console. | |
82 for (var i = 0; i < expectedArray.length; ++i) { | |
83 if (actualArray[i] != expectedArray[i]) { | |
84 postMessage("FAIL: Value mismatch: actualArray[" + i + "] = " + actu
alArray[i] + ", expectedArray[" + i + "] = " + expectedArray[i]); | |
85 return; | |
86 } | |
87 } | |
88 postMessage("PASS: Passed: Message #" + testIndex + "."); | |
89 } | |
OLD | NEW |