From 60d0e6b73fc01896b02d83c9f845b5e12727d194 Mon Sep 17 00:00:00 2001 From: Derrick Farris Date: Wed, 7 Dec 2022 02:18:10 -0600 Subject: fix(stream): Fix Transform class constructor fn (#1583) * fix(stream): fix ReadableFromWeb class, fix Transform * test(stream): add tests for .call on stream constructors --- test/bun.js/node-stream.test.js | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 test/bun.js/node-stream.test.js (limited to 'test/bun.js/node-stream.test.js') diff --git a/test/bun.js/node-stream.test.js b/test/bun.js/node-stream.test.js new file mode 100644 index 000000000..8024ab562 --- /dev/null +++ b/test/bun.js/node-stream.test.js @@ -0,0 +1,47 @@ +import { expect, describe, it } from "bun:test"; +import { Duplex, Transform, PassThrough } from "node:stream"; + +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); + }); +}); -- cgit v1.2.3