std/streams/byte_slice_stream_test.ts

78 lines
1.7 KiB
TypeScript

// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
import { assertEquals, assertThrows } from "../assert/mod.ts";
import { ByteSliceStream } from "./byte_slice_stream.ts";
Deno.test("[streams] ByteSliceStream", async function () {
function createStream(start = 0, end = Infinity) {
return ReadableStream.from([
new Uint8Array([0, 1]),
new Uint8Array([2, 3]),
]).pipeThrough(new ByteSliceStream(start, end));
}
let chunks = [];
for await (const chunk of createStream(0, 3)) {
chunks.push(chunk);
}
assertEquals(chunks, [
new Uint8Array([0, 1]),
new Uint8Array([2, 3]),
]);
chunks = [];
for await (const chunk of createStream(0, 1)) {
chunks.push(chunk);
}
assertEquals(chunks, [
new Uint8Array([0, 1]),
]);
chunks = [];
for await (const chunk of createStream(0, 2)) {
chunks.push(chunk);
}
assertEquals(chunks, [
new Uint8Array([0, 1]),
new Uint8Array([2]),
]);
chunks = [];
for await (const chunk of createStream(0, 3)) {
chunks.push(chunk);
}
assertEquals(chunks, [
new Uint8Array([0, 1]),
new Uint8Array([2, 3]),
]);
chunks = [];
for await (const chunk of createStream(1, 3)) {
chunks.push(chunk);
}
assertEquals(chunks, [
new Uint8Array([1]),
new Uint8Array([2, 3]),
]);
chunks = [];
for await (const chunk of createStream(2, 3)) {
chunks.push(chunk);
}
assertEquals(chunks, [
new Uint8Array([2, 3]),
]);
chunks = [];
for await (const chunk of createStream(0, 10)) {
chunks.push(chunk);
}
assertEquals(chunks, [
new Uint8Array([0, 1]),
new Uint8Array([2, 3]),
]);
assertThrows(() => createStream(-1, Infinity));
});