diff options
author | 2022-10-23 21:30:50 -0700 | |
---|---|---|
committer | 2022-10-23 21:30:50 -0700 | |
commit | 360a007f160b6935140dc75003a503059ff23976 (patch) | |
tree | 3e57d49bae82deae854d976269117609119300f3 /test/bun.js/streams.test.js | |
parent | 76652ac3cad64dbc2fd54e976ce4bad0a37caa03 (diff) | |
download | bun-360a007f160b6935140dc75003a503059ff23976.tar.gz bun-360a007f160b6935140dc75003a503059ff23976.tar.zst bun-360a007f160b6935140dc75003a503059ff23976.zip |
Fix `ReadableStream.prototype.tee`
Diffstat (limited to 'test/bun.js/streams.test.js')
-rw-r--r-- | test/bun.js/streams.test.js | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/test/bun.js/streams.test.js b/test/bun.js/streams.test.js index 8ca424495..6488eb37f 100644 --- a/test/bun.js/streams.test.js +++ b/test/bun.js/streams.test.js @@ -4,7 +4,7 @@ import { readableStreamToArray, readableStreamToText, } from "bun"; -import { expect, it, beforeEach, afterEach } from "bun:test"; +import { expect, it, beforeEach, afterEach, describe } from "bun:test"; import { mkfifo } from "mkfifo"; import { unlinkSync, writeFileSync } from "node:fs"; import { join } from "node:path"; @@ -14,6 +14,53 @@ new Uint8Array(); beforeEach(() => gc()); afterEach(() => gc()); +describe("ReadableStream.prototype.tee", async () => { + it("class", () => { + const [a, b] = new ReadableStream().tee(); + expect(a instanceof ReadableStream).toBe(true); + expect(b instanceof ReadableStream).toBe(true); + }); + + describe("default stream", () => { + it("works", async () => { + var [a, b] = new ReadableStream({ + start(controller) { + controller.enqueue("a"); + controller.enqueue("b"); + controller.enqueue("c"); + controller.close(); + }, + }).tee(); + + expect(await readableStreamToText(a)).toBe("abc"); + expect(await readableStreamToText(b)).toBe("abc"); + }); + }); + + describe("direct stream", () => { + it("works", async () => { + try { + var [a, b] = new ReadableStream({ + pull(controller) { + controller.write("a"); + controller.write("b"); + controller.write("c"); + controller.close(); + }, + type: "direct", + }).tee(); + + expect(await readableStreamToText(a)).toBe("abc"); + expect(await readableStreamToText(b)).toBe("abc"); + } catch (e) { + console.log(e.message); + console.log(e.stack); + throw e; + } + }); + }); +}); + it("ReadableStream.prototype[Symbol.asyncIterator]", async () => { const stream = new ReadableStream({ start(controller) { |