diff options
author | 2023-03-07 12:22:34 -0800 | |
---|---|---|
committer | 2023-03-07 12:22:34 -0800 | |
commit | f7e4eb83694aa007a492ef66c28ffbe6a2dae791 (patch) | |
tree | 7af25aa5c42a2e1b2b47ba1df35f8caa9054cbeb /test/js/node/stream/node-stream.test.js | |
parent | 36275a44ce7a33587bd26aad120042ab95470ff3 (diff) | |
download | bun-f7e4eb83694aa007a492ef66c28ffbe6a2dae791.tar.gz bun-f7e4eb83694aa007a492ef66c28ffbe6a2dae791.tar.zst bun-f7e4eb83694aa007a492ef66c28ffbe6a2dae791.zip |
Reorganize tests (#2332)
Diffstat (limited to 'test/js/node/stream/node-stream.test.js')
-rw-r--r-- | test/js/node/stream/node-stream.test.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/test/js/node/stream/node-stream.test.js b/test/js/node/stream/node-stream.test.js new file mode 100644 index 000000000..6bff28b94 --- /dev/null +++ b/test/js/node/stream/node-stream.test.js @@ -0,0 +1,86 @@ +import { expect, describe, it } from "bun:test"; +import { Readable, Writable, Duplex, Transform, PassThrough } from "node:stream"; + +describe("Readable", () => { + it("should be able to be created without _construct method defined", done => { + const readable = new Readable({ + read() { + this.push("Hello World!\n"); + this.push(null); + }, + }); + expect(readable instanceof Readable).toBe(true); + let data = ""; + readable.on("data", chunk => { + data += chunk.toString(); + }); + readable.on("end", () => { + expect(data).toBe("Hello World!\n"); + done(); + }); + }); + + it("should be able to be piped via .pipe", done => { + const readable = new Readable({ + read() { + this.push("Hello World!"); + this.push(null); + }, + }); + + const writable = new Writable({ + write(chunk, encoding, callback) { + expect(chunk.toString()).toBe("Hello World!"); + callback(); + done(); + }, + }); + + readable.pipe(writable); + }); +}); + +describe("Duplex", () => { + it("should allow subclasses to be derived via .call() on class", () => { + function Subclass(opts) { + if (!(this instanceof Subclass)) return new Subclass(opts); + Duplex.call(this, opts); + } + + Object.setPrototypeOf(Subclass.prototype, Duplex.prototype); + Object.setPrototypeOf(Subclass, Duplex); + + const subclass = new Subclass(); + expect(subclass instanceof Duplex).toBe(true); + }); +}); + +describe("Transform", () => { + it("should allow subclasses to be derived via .call() on class", () => { + function Subclass(opts) { + if (!(this instanceof Subclass)) return new Subclass(opts); + Transform.call(this, opts); + } + + Object.setPrototypeOf(Subclass.prototype, Transform.prototype); + Object.setPrototypeOf(Subclass, Transform); + + const subclass = new Subclass(); + expect(subclass instanceof Transform).toBe(true); + }); +}); + +describe("PassThrough", () => { + it("should allow subclasses to be derived via .call() on class", () => { + function Subclass(opts) { + if (!(this instanceof Subclass)) return new Subclass(opts); + PassThrough.call(this, opts); + } + + Object.setPrototypeOf(Subclass.prototype, PassThrough.prototype); + Object.setPrototypeOf(Subclass, PassThrough); + + const subclass = new Subclass(); + expect(subclass instanceof PassThrough).toBe(true); + }); +}); |