blob: e6dfa69eeda7754d1a5e3f7f10485f03822cb5a2 [file] [log] [blame]
<!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: 16}, (x, i) => i + 0x41);
const bufferSize = 48;
const streamConnection = IPC.createStreamClientConnection('GPU', bufferSize);
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,16), 8, 8);
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");
}
}
} 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>