mirror of
https://github.com/denoland/std.git
synced 2024-11-21 20:50:22 +00:00
78 lines
1.7 KiB
TypeScript
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));
|
|
});
|