aboutsummaryrefslogtreecommitdiff
path: root/test/js/web/streams/streams.test.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-07-31 06:17:56 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-07-31 06:17:56 -0700
commitf2983e50b7004277800a14c4bf9371906884693c (patch)
treef4f97db8720b4a4a4c8dc957eafdbfec715e0ac9 /test/js/web/streams/streams.test.js
parente47a448434acc6c5ebfcaf2d22ed1c96a979e761 (diff)
downloadbun-f2983e50b7004277800a14c4bf9371906884693c.tar.gz
bun-f2983e50b7004277800a14c4bf9371906884693c.tar.zst
bun-f2983e50b7004277800a14c4bf9371906884693c.zip
Add a test for TransformStream
Diffstat (limited to 'test/js/web/streams/streams.test.js')
-rw-r--r--test/js/web/streams/streams.test.js47
1 files changed, 43 insertions, 4 deletions
diff --git a/test/js/web/streams/streams.test.js b/test/js/web/streams/streams.test.js
index 55843cb23..7359009b7 100644
--- a/test/js/web/streams/streams.test.js
+++ b/test/js/web/streams/streams.test.js
@@ -5,6 +5,48 @@ import { realpathSync, unlinkSync, writeFileSync } from "node:fs";
import { join } from "node:path";
import { tmpdir } from "os";
+it("TransformStream", async () => {
+ // https://developer.mozilla.org/en-US/docs/Web/API/TransformStream
+ const TextEncoderStreamInterface = {
+ start() {
+ this.encoder = new TextEncoder();
+ },
+ transform(chunk, controller) {
+ controller.enqueue(this.encoder.encode(chunk));
+ },
+ };
+
+ let instances = new WeakMap();
+ class JSTextEncoderStream extends TransformStream {
+ constructor() {
+ super(TextEncoderStreamInterface);
+ instances.set(this, TextEncoderStreamInterface);
+ }
+ get encoding() {
+ return instances.get(this).encoder.encoding;
+ }
+ }
+
+ const stream = new JSTextEncoderStream();
+ const { writable, readable } = stream;
+
+ const writer = writable.getWriter();
+ writer.write("hello");
+ writer.write("world");
+ writer.close();
+
+ const reader = readable.getReader();
+ const chunks = [];
+ while (true) {
+ const { done, value } = await reader.read();
+ if (done) break;
+ chunks.push(value);
+ }
+ reader.cancel();
+
+ expect(Buffer.concat(chunks).toString()).toEqual("helloworld");
+});
+
describe("readableStreamToFormData", () => {
const fixtures = {
withTextFile: [
@@ -171,10 +213,7 @@ describe("WritableStream", () => {
write(chunk, controller) {
chunks.push(chunk);
},
- close(er) {
- console.log("closed");
- console.log(er);
- },
+ close(er) {},
abort(reason) {
console.log("aborted!");
console.log(reason);