1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/base/test/websocket_hybi/test_receive-arraybuffer.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,97 @@ 1.4 +<!DOCTYPE html> 1.5 +<html> 1.6 +<head> 1.7 + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.8 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 1.9 +</head> 1.10 +<body> 1.11 + 1.12 +<p id="display"></p> 1.13 +<div id="content" style="display: none"> 1.14 +</div> 1.15 +<pre id="test"> 1.16 + 1.17 +<script class="testbody" type="text/javascript"> 1.18 + 1.19 +function debug(msg) { 1.20 + ok(1, msg); 1.21 +} 1.22 + 1.23 +function createArrayBufferContainingHelloWorld() 1.24 +{ 1.25 + var hello = "Hello, world!"; 1.26 + var array = new Uint8Array(hello.length); 1.27 + for (var i = 0; i < hello.length; ++i) 1.28 + array[i] = hello.charCodeAt(i); 1.29 + return array.buffer; 1.30 +} 1.31 + 1.32 +function createEmptyArrayBuffer() 1.33 +{ 1.34 + return new ArrayBuffer(0); 1.35 +} 1.36 + 1.37 +function createArrayBufferContainingAllDistinctBytes() 1.38 +{ 1.39 + var array = new Uint8Array(256); 1.40 + for (var i = 0; i < 256; ++i) 1.41 + array[i] = i; 1.42 + return array.buffer; 1.43 +} 1.44 + 1.45 +var ws = new WebSocket("ws://mochi.test:8888/tests/content/base/test/websocket_hybi/file_binary-frames"); 1.46 +ws.binaryType = "arraybuffer"; 1.47 +is(ws.binaryType, "arraybuffer", "should be equal to 'arraybuffer'"); 1.48 + 1.49 +var closeEvent; 1.50 +var receivedMessages = []; 1.51 +var expectedValues = [createArrayBufferContainingHelloWorld(), createEmptyArrayBuffer(), createArrayBufferContainingAllDistinctBytes()]; 1.52 + 1.53 +ws.onmessage = function(event) 1.54 +{ 1.55 + receivedMessages.push(event.data); 1.56 +}; 1.57 + 1.58 +ws.onclose = function(event) 1.59 +{ 1.60 + closeEvent = event; 1.61 + 1.62 + is(receivedMessages.length, expectedValues.length, "lengths not equal"); 1.63 + for (var i = 0; i < expectedValues.length; ++i) 1.64 + check(i); 1.65 + SimpleTest.finish(); 1.66 +}; 1.67 + 1.68 +var responseType; 1.69 + 1.70 +function check(index) 1.71 +{ 1.72 + debug("Checking message #" + index + "."); 1.73 + ok(receivedMessages[index] instanceof ArrayBuffer, 1.74 + "Should receive an arraybuffer!"); 1.75 + checkArrayBuffer(index, receivedMessages[index], expectedValues[index]); 1.76 +} 1.77 + 1.78 +var actualArray; 1.79 +var expectedArray; 1.80 + 1.81 +function checkArrayBuffer(testIndex, actual, expected) 1.82 +{ 1.83 + actualArray = new Uint8Array(actual); 1.84 + expectedArray = new Uint8Array(expected); 1.85 + is(actualArray.length, expectedArray.length, "lengths not equal"); 1.86 + // Print only the first mismatched byte in order not to flood console. 1.87 + for (var i = 0; i < expectedArray.length; ++i) { 1.88 + if (actualArray[i] != expectedArray[i]) { 1.89 + ok(false, "Value mismatch: actualArray[" + i + "] = " + actualArray[i] + ", expectedArray[" + i + "] = " + expectedArray[i]); 1.90 + return; 1.91 + } 1.92 + } 1.93 + ok(true, "Passed: Message #" + testIndex + "."); 1.94 +} 1.95 + 1.96 +SimpleTest.waitForExplicitFinish(); 1.97 + 1.98 +</script> 1.99 +</body> 1.100 +</html>