std/streams/byte_slice_stream_test.ts

56 lines
1.4 KiB
TypeScript
Raw Permalink Normal View History

// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
import { assertEquals, assertThrows } from "@std/assert";
import { ByteSliceStream } from "./byte_slice_stream.ts";
Deno.test("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 = await Array.fromAsync(createStream(0, 3));
assertEquals(chunks, [
new Uint8Array([0, 1]),
new Uint8Array([2, 3]),
]);
chunks = await Array.fromAsync(createStream(0, 1));
assertEquals(chunks, [
new Uint8Array([0, 1]),
]);
chunks = await Array.fromAsync(createStream(0, 2));
assertEquals(chunks, [
new Uint8Array([0, 1]),
new Uint8Array([2]),
]);
chunks = await Array.fromAsync(createStream(0, 3));
assertEquals(chunks, [
new Uint8Array([0, 1]),
new Uint8Array([2, 3]),
]);
chunks = await Array.fromAsync(createStream(1, 3));
assertEquals(chunks, [
new Uint8Array([1]),
new Uint8Array([2, 3]),
]);
chunks = await Array.fromAsync(createStream(2, 3));
assertEquals(chunks, [
new Uint8Array([2, 3]),
]);
chunks = await Array.fromAsync(createStream(0, 10));
assertEquals(chunks, [
new Uint8Array([0, 1]),
new Uint8Array([2, 3]),
]);
assertThrows(() => createStream(-1, Infinity));
});