import { beforeEach, describe, expect, it } from "bun:test"; import { Readable, Writable, WritableOptions } from "stream"; const ABC = new Uint8Array([0x41, 0x42, 0x43]); const DEF = new Uint8Array([0x44, 0x45, 0x46]); const GHI = new Uint8Array([0x47, 0x48, 0x49]); describe("Writable", () => { let called: number[]; function logCall(fn: WritableOptions["write"], id: number) { return function () { called[id] = (called[id] || 0) + 1; // @ts-ignore return fn.apply(this, arguments); }; } beforeEach(() => { called = []; }); it("should perform simple operations", () => { let n = 0; const writable = new Writable({ write: logCall((chunk, encoding, cb) => { expect(chunk instanceof Buffer).toBe(true); if (n++ === 0) { expect(String(chunk)).toBe("ABC"); } else { expect(String(chunk)).toBe("DEF"); } cb(); }, 0), }); writable.write(ABC); writable.end(DEF); expect(called).toEqual([2]); }); it("should pass in Uint8Array in object mode", () => { const writable = new Writable({ objectMode: true, write: logCall((chunk, encoding, cb) => { expect(chunk instanceof Buffer).toBe(false); expect(chunk instanceof Uint8Array).toBe(true); expect(chunk).toStrictEqual(ABC); expect(encoding).toBe("utf8"); cb(); }, 0), }); writable.end(ABC); expect(called).toEqual([1]); }); it("should handle multiple writes carried out via writev()", () => { let callback!: () => void; const writable = new Writable({ write: logCall((chunk, encoding, cb) => { expect(chunk instanceof Buffer).toBe(true); expect(encoding).toBe("buffer"); expect(String(chunk)).toBe("ABC"); callback = cb; }, 0), writev: logCall((chunks, cb) => { expect(chunks.length).toBe(2); expect(chunks[0].encoding).toBe("buffer"); expect(chunks[1].encoding).toBe("buffer"); expect(chunks[0].chunk + chunks[1].chunk).toBe("DEFGHI"); }, 1), }); writable.write(ABC); writable.write(DEF); writable.end(GHI); callback(); expect(called).toEqual([1, 1]); }); }); describe("Readable", () => { it("should perform simple operations", () => { const readable = new Readable({ read() {}, }); readable.push(DEF); readable.unshift(ABC); const buf = readable.read(); expect(buf instanceof Buffer).toBe(true); expect([...buf]).toEqual([...ABC, ...DEF]); }); it("should work with setEncoding()", () => { const readable = new Readable({ read() {}, }); readable.setEncoding("utf8"); readable.push(DEF); readable.unshift(ABC); const out = readable.read(); expect(out).toBe("ABCDEF"); }); }); er-dev Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/bench/sqlite/query.better-sqlite3.mjs (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2023-10-09fix(AbortSignal/fetch) fix AbortSignal.timeout, fetch lock behavior and fetch...Gravatar Ciro Spaciari 29-61/+303
2023-10-09Fix npm tag for canary bun-types, againGravatar Ashcon Partovi 2-56/+10
2023-10-09Add Fedora build instructions to development.md (#6359)Gravatar otterDeveloper 1-0/+10
2023-10-09added commands (#6314)Gravatar babar 1-1/+2
2023-10-09Update README.md (#6291)Gravatar TPLJ 1-1/+1
2023-10-09docs: fixing a couple typos (#6331)Gravatar Michael Di Prisco 2-2/+2
2023-10-09fix: support uint8 exit code range (#6303)Gravatar Liz 2-2/+11
2023-10-09Fix array variables preview in debugger (#6379)Gravatar 2hu 1-1/+4
2023-10-07feat(KeyObject) (#5940)Gravatar Ciro Spaciari 106-67/+9342
2023-10-07Exclude more filesGravatar Jarred Sumner 1-1/+1
2023-10-07Exclude more filesGravatar Jarred Sumner 1-1/+2
2023-10-07Update settings.jsonGravatar Jarred Sumner 1-1/+2
2023-10-07Update settings.jsonGravatar Jarred Sumner 1-2/+3
2023-10-06fix a couple install testsGravatar Dylan Conway 1-8/+8
2023-10-06formatGravatar Dylan Conway 1-1/+2
2023-10-06Fix memory leak in fetch() (#6350)Gravatar Jarred Sumner 1-2/+0
2023-10-06[types] allow onLoad plugin callbacks to return undefined (#6346)Gravatar Silver 1-1/+1
2023-10-06docs: `file.stream()` is not a promise (#6337)Gravatar Paul Nodet 1-1/+1