forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			110 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html>
 | |
| <head>
 | |
|   <script src="/tests/SimpleTest/SimpleTest.js"></script>
 | |
|   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
 | |
| </head>
 | |
| <body>
 | |
| 
 | |
| <p id="display"></p>
 | |
| <div id="content" style="display: none">
 | |
| </div>
 | |
| <pre id="test">
 | |
| 
 | |
| <script class="testbody" type="text/javascript">
 | |
| 
 | |
| function debug(msg) {
 | |
|    ok(true, msg);
 | |
| }
 | |
| 
 | |
| function createArrayBufferContainingHelloWorld()
 | |
| {
 | |
|     var hello = "Hello, world!";
 | |
|     var array = new Uint8Array(hello.length);
 | |
|     for (var i = 0; i < hello.length; ++i)
 | |
|         array[i] = hello.charCodeAt(i);
 | |
|     return array.buffer;
 | |
| }
 | |
| 
 | |
| function createEmptyArrayBuffer()
 | |
| {
 | |
|     return new ArrayBuffer(0);
 | |
| }
 | |
| 
 | |
| function createArrayBufferContainingAllDistinctBytes()
 | |
| {
 | |
|     var array = new Uint8Array(256);
 | |
|     for (var i = 0; i < 256; ++i)
 | |
|         array[i] = i;
 | |
|     return array.buffer;
 | |
| }
 | |
| 
 | |
| var ws = new WebSocket("ws://mochi.test:8888/tests/dom/websocket/tests/websocket_hybi/file_binary-frames");
 | |
| is(ws.binaryType, "blob", "should be 'blob'");
 | |
| 
 | |
| var closeEvent;
 | |
| var receivedMessages = [];
 | |
| var expectedValues = [createArrayBufferContainingHelloWorld(), createEmptyArrayBuffer(), createArrayBufferContainingAllDistinctBytes()];
 | |
| 
 | |
| ws.onmessage = function(event)
 | |
| {
 | |
|     receivedMessages.push(event.data);
 | |
| };
 | |
| 
 | |
| ws.onclose = function(event)
 | |
| {
 | |
|     closeEvent = event;
 | |
| 
 | |
|     is(receivedMessages.length, expectedValues.length, "lengths not same");
 | |
|     check(0);
 | |
| };
 | |
| 
 | |
| var responseType;
 | |
| 
 | |
| function check(index)
 | |
| {
 | |
|     if (index == expectedValues.length) {
 | |
|         SimpleTest.finish();
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     debug("Checking message #" + index + ".");
 | |
|     ok(receivedMessages[index] instanceof Blob,
 | |
|        "We should be receiving a Blob");
 | |
|     var reader = new FileReader();
 | |
|     reader.readAsArrayBuffer(receivedMessages[index]);
 | |
|     reader.onload = function(event)
 | |
|     {
 | |
|         checkArrayBuffer(index, reader.result, expectedValues[index]);
 | |
|         check(index + 1);
 | |
|     };
 | |
|     reader.onerror = function(event)
 | |
|     {
 | |
|         ok(false, "Failed to read blob: error code = " + reader.error.code);
 | |
|         check(index + 1);
 | |
|     };
 | |
| }
 | |
| 
 | |
| var actualArray;
 | |
| var expectedArray;
 | |
| 
 | |
| function checkArrayBuffer(testIndex, actual, expected)
 | |
| {
 | |
|     actualArray = new Uint8Array(actual);
 | |
|     expectedArray = new Uint8Array(expected);
 | |
|     is(actualArray.length, expectedArray.length, "lengths not same");
 | |
|     // Print only the first mismatched byte in order not to flood console.
 | |
|     for (var i = 0; i < expectedArray.length; ++i) {
 | |
|         if (actualArray[i] != expectedArray[i]) {
 | |
|             ok(false, "Value mismatch: actualArray[" + i + "] = " + actualArray[i] + ", expectedArray[" + i + "] = " + expectedArray[i]);
 | |
|             return;
 | |
|         }
 | |
|     }
 | |
|     ok(true, "Passed: Message #" + testIndex + ".");
 | |
| }
 | |
| 
 | |
| SimpleTest.waitForExplicitFinish();
 | |
| 
 | |
| </script>
 | |
| </body>
 | |
| </html>
 | 
