aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/streams.test.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-23 21:30:50 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-23 21:30:50 -0700
commit360a007f160b6935140dc75003a503059ff23976 (patch)
tree3e57d49bae82deae854d976269117609119300f3 /test/bun.js/streams.test.js
parent76652ac3cad64dbc2fd54e976ce4bad0a37caa03 (diff)
downloadbun-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.js49
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) {