import { test, expect } from "bun:test" import { createPngUrl, createSvgUrl } from "lib" import { gunzipSync, strFromU8 } from "fflate" test("create pcb svg url", () => { const url = createSvgUrl( ` export default () => ( ) `, "pcb", ) expect(url).toMatchInlineSnapshot( `"https://svg.tscircuit.com/?svg_type=pcb&code=H4sIAJsBqGcAAy2NTQ7CIBhE9z3FhFW7KlWXhUO4ckuBClF%2BAp%2FRxHh30Xb3JvMyY185FYKxq3rcCf0AIdF3wLwkVQye3pATbOIhMDjrr472JJvUtGKrr5QKNlBR2ybcGNaUKBcfm89P%2FMAQVWjVeWKo2l3E%2B%2FhB1ssG429tHv%2Bfshu%2BlSYxzJYAAAA%3D"`, ) }) test("create svg url using fs map", () => { const url = createSvgUrl( { "index.tsx": `export default () => (\n \n)`, }, "pcb", ) const parsed = new URL(url) expect(parsed.searchParams.get("code")).toBeNull() const fsMapParam = parsed.searchParams.get("fs_map") expect(fsMapParam).not.toBeNull() const encodedFsMap = Buffer.from(fsMapParam!, "base64") const decodedFsMap = JSON.parse( strFromU8(gunzipSync(Uint8Array.from(encodedFsMap))), ) expect(decodedFsMap).toEqual({ "index.tsx": "export default () => (\n \n)", }) }) test("fs map svg url passes entrypoint", () => { const url = createSvgUrl( { "index.tsx": "export default () => null", "App.tsx": "export default () => null", }, "schematic", { entrypoint: "App.tsx" }, ) const parsed = new URL(url) expect(parsed.searchParams.get("entrypoint")).toBe("App.tsx") expect(parsed.searchParams.get("fs_map")).not.toBeNull() expect(parsed.searchParams.get("code")).toBeNull() }) test("create svg url with png options", () => { const url = createSvgUrl( ` export default () => ( ) `, "pcb", { format: "png", pngWidth: 800, pngHeight: 600, pngDensity: 2, }, ) const parsed = new URL(url) expect(parsed.searchParams.get("format")).toBe("png") expect(parsed.searchParams.get("png_width")).toBe("800") expect(parsed.searchParams.get("png_height")).toBe("600") expect(parsed.searchParams.get("png_density")).toBe("2") expect(parsed.searchParams.get("code")).not.toBeNull() }) test("create png url uses svg.tscircuit.com", () => { const url = createPngUrl( ` export default () => ( ) `, "pcb", ) const parsed = new URL(url) expect(parsed.origin).toBe("https://svg.tscircuit.com") expect(parsed.searchParams.get("svg_type")).toBe("pcb") expect(parsed.searchParams.get("format")).toBe("png") expect(parsed.searchParams.get("code")).not.toBeNull() }) test("create pinout svg url", () => { const url = createSvgUrl( ` export default () => ( ) `, "pinout", ) expect(url).toMatchInlineSnapshot( `"https://svg.tscircuit.com/?svg_type=pinout&code=H4sIAJsBqGcAAy2NTQ7CIBhE9z3FhFW7KlWXhUO4ckuBClF%2BAp%2FRxHh30Xb3JvMyY185FYKxq3rcCf0AIdF3wLwkVQye3pATbOIhMDjrr472JJvUtGKrr5QKNlBR2ybcGNaUKBcfm89P%2FMAQVWjVeWKo2l3E%2B%2FhB1ssG429tHv%2Bfshu%2BlSYxzJYAAAA%3D"`, ) }) test("create schsim svg url", () => { const url = createSvgUrl( ` export default () => ( ) `, "schsim", ) expect(url).toMatchInlineSnapshot( `"https://svg.tscircuit.com/?svg_type=schsim&code=H4sIAJsBqGcAAy2NTQ7CIBhE9z3FhFW7KlWXhUO4ckuBClF%2BAp%2FRxHh30Xb3JvMyY185FYKxq3rcCf0AIdF3wLwkVQye3pATbOIhMDjrr472JJvUtGKrr5QKNlBR2ybcGNaUKBcfm89P%2FMAQVWjVeWKo2l3E%2B%2FhB1ssG429tHv%2Bfshu%2BlSYxzJYAAAA%3D"`, ) }) test("create schsim svg url with simulation experiment id", () => { const url = createSvgUrl( ` export default () => ( ) `, "schsim", { simulationExperimentId: "my-exp-1", }, ) const parsed = new URL(url) expect(parsed.searchParams.get("simulation_experiment_id")).toBe("my-exp-1") })