import { describe, it, expect } from "bun:test"; describe("url", () => { it("prints", () => { expect(Bun.inspect(new URL("https://example.com"))).toBe( "https://example.com/" ); expect( Bun.inspect( new URL( "https://github.com/Jarred-Sumner/bun/issues/135?hello%20i%20have%20spaces%20thank%20you%20good%20night" ) ) ).toBe( "https://github.com/Jarred-Sumner/bun/issues/135?hello%20i%20have%20spaces%20thank%20you%20good%20night" ); }); it("works", () => { const inputs: [ [ string, { hash: string; host: string; hostname: string; href: string; origin: string; password: string; pathname: string; port: string; protocol: string; search: string; username: string; } ] ] = [ [ "https://username:password@api.foo.bar.com:9999/baz/okay/i/123?ran=out&of=things#to-use-as-a-placeholder", { hash: "#to-use-as-a-placeholder", host: "api.foo.bar.com:9999", hostname: "api.foo.bar.com", href: "https://username:password@api.foo.bar.com:9999/baz/okay/i/123?ran=out&of=things#to-use-as-a-placeholder", origin: "https://api.foo.bar.com:9999", password: "password", pathname: "/baz/okay/i/123", port: "9999", protocol: "https:", search: "?ran=out&of=things", username: "username", }, ], [ "https://url.spec.whatwg.org/#url-serializing", { hash: "#url-serializing", host: "url.spec.whatwg.org", hostname: "url.spec.whatwg.org", href: "https://url.spec.whatwg.org/#url-serializing", origin: "https://url.spec.whatwg.org", password: "", pathname: "/", port: "", protocol: "https:", search: "", username: "", }, ], [ "https://url.spec.whatwg.org#url-serializing", { hash: "#url-serializing", host: "url.spec.whatwg.org", hostname: "url.spec.whatwg.org", href: "https://url.spec.whatwg.org/#url-serializing", origin: "https://url.spec.whatwg.org", password: "", pathname: "/", port: "", protocol: "https:", search: "", username: "", }, ], ]; for (let [url, values] of inputs) { const result = new URL(url); expect(result.hash).toBe(values.hash); expect(result.host).toBe(values.host); expect(result.hostname).toBe(values.hostname); expect(result.href).toBe(values.href); expect(result.password).toBe(values.password); expect(result.pathname).toBe(values.pathname); expect(result.port).toBe(values.port); expect(result.protocol).toBe(values.protocol); expect(result.search).toBe(values.search); expect(result.username).toBe(values.username); } }); });