import { it, expect } from "bun:test"; it("Blob inspect", () => { expect(Bun.inspect(new Blob(["123"]))).toBe(`Blob (3 bytes)`); expect(Bun.inspect(new Blob(["123".repeat(900)]))).toBe(`Blob (3 KB)`); expect(Bun.inspect(Bun.file("/tmp/file.txt"))) .toBe(`FileRef ("/tmp/file.txt") { type: "text/plain;charset=utf-8" }`); expect(Bun.inspect(Bun.file(123))).toBe(`FileRef (fd: 123) { type: "application/octet-stream" }`); expect(Bun.inspect(new Response(""))).toBe(`Response (0 KB) { ok: true, url: "", statusText: "", redirected: false, bodyUsed: false, status: 200, [Blob detached] }`); expect(Bun.inspect(new Response("Hello"))).toBe(`Response (5 bytes) { ok: true, url: "", statusText: "", redirected: false, bodyUsed: false, status: 200, Blob (5 bytes) }`); }); it("utf16 property name", () => { var { Database } = require("bun:sqlite"); const db = Database.open(":memory:"); expect(Bun.inspect(db.prepare("select '😀' as 笑").all())).toBe( '[ { "笑": "😀" } ]' ); }); it("latin1", () => { expect(Bun.inspect("English")).toBe("English"); expect(Bun.inspect("Français")).toBe("Français"); expect(Bun.inspect("Ελληνική")).toBe("Ελληνική"); expect(Bun.inspect("日本語")).toBe("日本語"); expect(Bun.inspect("Emoji😎")).toBe("Emoji😎"); expect(Bun.inspect("Français / Ελληνική")).toBe("Français / Ελληνική"); }); it("Request object", () => { expect(Bun.inspect(new Request({ url: "https://example.com" })).trim()).toBe( ` Request (0 KB) { method: "GET", url: "https://example.com" }`.trim() ); }); it("MessageEvent", () => { expect(Bun.inspect(new MessageEvent("message", { data: 123 }))).toBe( `MessageEvent { type: "message", data: 123 }` ); }); // https://github.com/oven-sh/bun/issues/561 it("TypedArray prints", () => { for (let TypedArray of [ Uint8Array, Uint16Array, Uint32Array, Uint8ClampedArray, Int8Array, Int16Array, Int32Array, Float32Array, Float64Array, ]) { const buffer = new TypedArray([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); const input = Bun.inspect(buffer); expect(input).toBe( `${TypedArray.name}(${buffer.length}) [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]` ); for (let i = 1; i < buffer.length + 1; i++) { expect(Bun.inspect(buffer.subarray(i))).toBe( `${TypedArray.name}(${buffer.length - i}) [ ` + [...buffer.subarray(i)].join(", ") + " ]" ); } } }); it("BigIntArray", () => { for (let TypedArray of [BigInt64Array, BigUint64Array]) { const buffer = new TypedArray([1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n, 10n]); const input = Bun.inspect(buffer); expect(input).toBe( `${TypedArray.name}(${buffer.length}) [ 1n, 2n, 3n, 4n, 5n, 6n, 7n, 8n, 9n, 10n ]` ); for (let i = 1; i < buffer.length + 1; i++) { expect(Bun.inspect(buffer.subarray(i))).toBe( `${TypedArray.name}(${buffer.length - i}) [ ` + [...buffer.subarray(i)].map((a) => a.toString(10) + "n").join(", ") + " ]" ); } } }); it("FloatArray", () => { for (let TypedArray of [Float32Array, Float64Array]) { const buffer = new TypedArray([Math.fround(42.68)]); const input = Bun.inspect(buffer); expect(input).toBe( `${TypedArray.name}(${buffer.length}) [ ${[Math.fround(42.68)].join( ", " )} ]` ); for (let i = 1; i < buffer.length + 1; i++) { expect(Bun.inspect(buffer.subarray(i))).toBe( `${TypedArray.name}(${buffer.length - i}) [ ` + [...buffer.subarray(i)].join(", ") + " ]" ); } } }); it("jsx with two elements", () => { const input = Bun.inspect(