1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/base/test/websocket_hybi/test_receive-blob.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,110 @@ 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(true, 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 +is(ws.binaryType, "blob", "should be 'blob'"); 1.47 + 1.48 +var closeEvent; 1.49 +var receivedMessages = []; 1.50 +var expectedValues = [createArrayBufferContainingHelloWorld(), createEmptyArrayBuffer(), createArrayBufferContainingAllDistinctBytes()]; 1.51 + 1.52 +ws.onmessage = function(event) 1.53 +{ 1.54 + receivedMessages.push(event.data); 1.55 +}; 1.56 + 1.57 +ws.onclose = function(event) 1.58 +{ 1.59 + closeEvent = event; 1.60 + 1.61 + is(receivedMessages.length, expectedValues.length, "lengths not same"); 1.62 + check(0); 1.63 +}; 1.64 + 1.65 +var responseType; 1.66 + 1.67 +function check(index) 1.68 +{ 1.69 + if (index == expectedValues.length) { 1.70 + SimpleTest.finish(); 1.71 + return; 1.72 + } 1.73 + 1.74 + debug("Checking message #" + index + "."); 1.75 + ok(receivedMessages[index] instanceof Blob, 1.76 + "We should be receiving a Blob"); 1.77 + var reader = new FileReader(); 1.78 + reader.readAsArrayBuffer(receivedMessages[index]); 1.79 + reader.onload = function(event) 1.80 + { 1.81 + checkArrayBuffer(index, reader.result, expectedValues[index]); 1.82 + check(index + 1); 1.83 + }; 1.84 + reader.onerror = function(event) 1.85 + { 1.86 + ok(false, "Failed to read blob: error code = " + reader.error.code); 1.87 + check(index + 1); 1.88 + }; 1.89 +} 1.90 + 1.91 +var actualArray; 1.92 +var expectedArray; 1.93 + 1.94 +function checkArrayBuffer(testIndex, actual, expected) 1.95 +{ 1.96 + actualArray = new Uint8Array(actual); 1.97 + expectedArray = new Uint8Array(expected); 1.98 + is(actualArray.length, expectedArray.length, "lengths not same"); 1.99 + // Print only the first mismatched byte in order not to flood console. 1.100 + for (var i = 0; i < expectedArray.length; ++i) { 1.101 + if (actualArray[i] != expectedArray[i]) { 1.102 + ok(false, "Value mismatch: actualArray[" + i + "] = " + actualArray[i] + ", expectedArray[" + i + "] = " + expectedArray[i]); 1.103 + return; 1.104 + } 1.105 + } 1.106 + ok(true, "Passed: Message #" + testIndex + "."); 1.107 +} 1.108 + 1.109 +SimpleTest.waitForExplicitFinish(); 1.110 + 1.111 +</script> 1.112 +</body> 1.113 +</html>