| <!DOCTYPE html><!-- webkit-test-runner [ IPCTestingAPIEnabled=true ] --> | |
| <script> | |
| function arraysAreEqual(a, b) { | |
| if (a.byteLength !== b.byteLength) return false; | |
| return a.every((val, i) => val === b[i]); | |
| } | |
| if (window.testRunner) | |
| testRunner.dumpAsText() | |
| if (window.IPC) { | |
| let headerReadSuccess = false; | |
| let headerWriteSuccess = false; | |
| let dataReadSuccess = false; | |
| let dataWriteSuccess = false; | |
| const testBytes = Uint8Array.from({length: 64}, (x, i) => i + 0x41); | |
| const bufferSizeLog2 = 6; | |
| const defaultTimeout = 1000; | |
| const [streamConnection, serverConnectionHandle] = IPC.createStreamClientConnection(bufferSizeLog2, defaultTimeout); | |
| streamConnection.open(); | |
| let streamBuffer = streamConnection.streamBuffer(); | |
| let initialData = new Uint8Array(streamBuffer.readHeaderBytes(0, 32)); | |
| streamBuffer.writeHeaderBytes(testBytes, 0, 4); | |
| streamBuffer.writeHeaderBytes(testBytes.slice(4,8), 4, 4); | |
| let readResult = new Uint8Array(streamBuffer.readHeaderBytes(0, 32)); | |
| let expected = initialData.slice(); | |
| for(let i=0; i<8; i++){ | |
| expected[i] = testBytes[i]; | |
| } | |
| if(arraysAreEqual(readResult, expected)){ | |
| headerWriteSuccess = true; | |
| readResult = new Uint8Array(streamBuffer.readHeaderBytes(4, 28)); | |
| if(arraysAreEqual(readResult, expected.slice(4, 32))){ | |
| headerReadSuccess = true; | |
| } else { | |
| document.write("FAIL: Header offset read"); | |
| } | |
| } else { | |
| document.write("FAIL: Header write"); | |
| } | |
| if(headerWriteSuccess && headerReadSuccess){ | |
| streamBuffer.writeDataBytes(testBytes.slice(0,8), 0, 8); | |
| streamBuffer.writeDataBytes(testBytes.slice(8,64), 8, 56); | |
| readResult = new Uint8Array(streamBuffer.readDataBytes(0)); | |
| if(arraysAreEqual(readResult, testBytes)){ | |
| dataWriteSuccess = true; | |
| readResult = new Uint8Array(streamBuffer.readDataBytes(3)); | |
| if(arraysAreEqual(readResult, testBytes.slice(3))){ | |
| dataReadSuccess = true; | |
| } else { | |
| document.write("FAIL: Data offset read"); | |
| } | |
| } else { | |
| document.write("FAIL: Data write"); | |
| } | |
| if(dataWriteSuccess && dataReadSuccess){ | |
| document.write("PASS"); | |
| } | |
| streamConnection.invalidate(); | |
| } | |
| } else { | |
| // IPC not enabled so this test passes by default. | |
| document.write("PASS"); | |
| } | |
| </script> | |
| <p>Test passes if it does not crash and has no 'FAIL' output</p> | |
| </body> | |
| </html> |