diff options
Diffstat (limited to 'test/bun.js/unsafe.test.js')
-rw-r--r-- | test/bun.js/unsafe.test.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/test/bun.js/unsafe.test.js b/test/bun.js/unsafe.test.js new file mode 100644 index 000000000..741dc0241 --- /dev/null +++ b/test/bun.js/unsafe.test.js @@ -0,0 +1,51 @@ +import { test, expect, it, describe } from "bun:test"; +import { gc } from "./gc"; + +it("arrayBufferToString u8", async () => { + var encoder = new TextEncoder(); + const bytes = encoder.encode("hello world"); + gc(true); + expect(Bun.unsafe.arrayBufferToString(bytes)).toBe("hello world"); + gc(true); + await new Promise((resolve) => setTimeout(resolve, 0)); + gc(true); +}); + +it("arrayBufferToString ArrayBuffer", async () => { + var encoder = new TextEncoder(); + var bytes = encoder.encode("hello world"); + gc(true); + const out = Bun.unsafe.arrayBufferToString(bytes.buffer); + expect(out).toBe("hello world"); + gc(true); + await new Promise((resolve) => setTimeout(resolve, 0)); + globalThis.bytes = bytes; + gc(true); + expect(out).toBe("hello world"); +}); + +it("arrayBufferToString u16", () => { + var encoder = new TextEncoder(); + const bytes = encoder.encode("hello world"); + var uint16 = new Uint16Array(bytes.byteLength); + uint16.set(bytes); + const charCodes = Bun.unsafe + .arrayBufferToString(uint16) + .split("") + .map((a) => a.charCodeAt(0)); + gc(true); + for (let i = 0; i < charCodes.length; i++) { + expect("hello world"[i]).toBe(String.fromCharCode(charCodes[i])); + } + gc(true); + expect(charCodes.length).toBe("hello world".length); + gc(true); +}); + +it("Bun.allocUnsafe", () => { + var buffer = Bun.allocUnsafe(1024); + expect(buffer instanceof Uint8Array).toBe(true); + expect(buffer.length).toBe(1024); + buffer[0] = 0; + expect(buffer[0]).toBe(0); +}); |