mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 13:47:45 +00:00
LibWeb/Tests: Add a test to cover byte stream enqueue and respond
This commit is contained in:
parent
48aa9fbe07
commit
a8caa3edbc
2 changed files with 57 additions and 0 deletions
|
@ -0,0 +1,14 @@
|
|||
Enqueuing array 60,61,62,63,64,65,66,67,68,69 onto [object ReadableByteStreamController]
|
||||
[object ReadableStreamBYOBRequest] view: '11,12,13,14,15,16'
|
||||
Got view of buffer: 60,61,62,63,64,65,66,67,68,69,11,12,13,14,15,16, offset 10, length 6
|
||||
[object ReadableStreamBYOBRequest] view: '12,13,14,15,16'
|
||||
Got view of buffer: 60,61,62,63,64,65,66,67,68,69,11,12,13,14,15,16, offset 11, length 5
|
||||
[object ReadableStreamBYOBRequest] view: '13,14,15,16'
|
||||
Got view of buffer: 60,61,62,63,64,65,66,67,68,69,11,12,13,14,15,16, offset 12, length 4
|
||||
[object ReadableStreamBYOBRequest] view: '14,15,16'
|
||||
Got view of buffer: 60,61,62,63,64,65,66,67,68,69,11,12,13,14,15,16, offset 13, length 3
|
||||
[object ReadableStreamBYOBRequest] view: '15,16'
|
||||
Got view of buffer: 60,61,62,63,64,65,66,67,68,69,11,12,13,14,15,16, offset 14, length 2
|
||||
[object ReadableStreamBYOBRequest] view: '16'
|
||||
Got view of buffer: 60,61,62,63,64,65,66,67,68,69,11,12,13,14,15,16, offset 15, length 1
|
||||
Final data: 60,61,62,63,64,65,66,67,68,69,11,12,13,14,15,16
|
43
Tests/LibWeb/Text/input/Streams/ReadableByteStream-enqueue-respond.html
Executable file
43
Tests/LibWeb/Text/input/Streams/ReadableByteStream-enqueue-respond.html
Executable file
|
@ -0,0 +1,43 @@
|
|||
<script src="../include.js"></script>
|
||||
<script>
|
||||
function makeReadableByteStream() {
|
||||
return new ReadableStream({
|
||||
type: "bytes",
|
||||
start(controller) {
|
||||
const array = new Uint8Array([60, 61, 62, 63, 64, 65, 66, 67, 68, 69]);
|
||||
println(`Enqueuing array ${array} onto ${controller}`);
|
||||
controller.enqueue(array);
|
||||
},
|
||||
async pull(controller) {
|
||||
println(`${controller.byobRequest} view: '${controller.byobRequest.view}'`);
|
||||
const v = controller.byobRequest.view;
|
||||
println(`Got view of buffer: ${new Uint8Array(v.buffer)}, offset ${v.byteOffset}, length ${v.byteLength}`);
|
||||
controller.byobRequest.respond(1);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
asyncTest(async done => {
|
||||
let readableStream = makeReadableByteStream();
|
||||
const reader = readableStream.getReader({ mode: "byob" });
|
||||
let startingAB = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
|
||||
const buffer = await readInto(startingAB);
|
||||
println(`Final data: ${new Uint8Array(buffer)}`);
|
||||
done();
|
||||
|
||||
async function readInto(buffer) {
|
||||
let offset = 0;
|
||||
while (offset < buffer.byteLength) {
|
||||
let u8 = new Uint8Array(buffer, offset, buffer.byteLength - offset)
|
||||
const { value: view, done } = await reader.read(u8);
|
||||
buffer = view.buffer;
|
||||
if (done) {
|
||||
break;
|
||||
}
|
||||
offset += view.byteLength;
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
});
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue