import { assert, describe, it } from "@effect/vitest";import * as Effect from "effect/Effect";import * as Stream from "effect/Stream"; import { collectUint8StreamText } from "./collectUint8StreamText.ts"; const encoder = new TextEncoder(); describe("collectUint8StreamText", () => { it.effect("collects Uint8Array chunks into decoded text", () => Effect.gen(function* () { const result = yield* collectUint8StreamText({ stream: Stream.make(encoder.encode("hello "), encoder.encode("world")), }); assert.deepStrictEqual(result, { text: "hello world", bytes: 11, truncated: false, }); }), ); it.effect("truncates by bytes and appends an optional marker once", () => Effect.gen(function* () { const result = yield* collectUint8StreamText({ stream: Stream.make(encoder.encode("abcdef"), encoder.encode("ghij")), maxBytes: 5, truncatedMarker: "[truncated]", }); assert.deepStrictEqual(result, { text: "abcde[truncated]", bytes: 5, truncated: true, }); }), );});
import { assert, describe, it } from "@effect/vitest";
import * as Effect from "effect/Effect";
import * as Stream from "effect/Stream";
import { collectUint8StreamText } from "./collectUint8StreamText.ts";
const encoder = new TextEncoder();
describe("collectUint8StreamText", () => {
it.effect("collects Uint8Array chunks into decoded text", () =>
Effect.gen(function* () {
const result = yield* collectUint8StreamText({
stream: Stream.make(encoder.encode("hello "), encoder.encode("world")),
});
assert.deepStrictEqual(result, {
text: "hello world",
bytes: 11,
truncated: false,
});
}),
);
it.effect("truncates by bytes and appends an optional marker once", () =>
Effect.gen(function* () {
const result = yield* collectUint8StreamText({
stream: Stream.make(encoder.encode("abcdef"), encoder.encode("ghij")),
maxBytes: 5,
truncatedMarker: "[truncated]",
});
assert.deepStrictEqual(result, {
text: "abcde[truncated]",
bytes: 5,
truncated: true,
});
}),
);
});