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, }); }), ); });