import { get, type Return } from "../map"; type Expect = T; type Equal = (() => T extends { [k in keyof X]: X[k] } ? 1 : 2) extends () => T extends { [k in keyof Y]: Y[k] } ? 1 : 2 ? true : false; describe("map", () => { describe("get", () => { type exp1 = Expect, number | null>>; type exp2 = Expect, number[]>>; const res1 = get(new Map(), "foo"); type res1 = Expect>; const res2 = get(new Map(), /foo/); type res2 = Expect>; test("returns null for a non-existent string key", () => { const map = new Map(); const result = get(map, "foo"); expect(result).toBe(null); }); test("returns null for a non-existent regex key", () => { const map = new Map(); map.set("bar", 1); const result = get(map, /foo/); expect(result).toEqual([]); }); test("returns single value for a string key", () => { const map = new Map(); map.set("foo", 42); const result = get(map, "foo"); expect(result).toBe(42); }); test("returns list of values for a regex key", () => { const map = new Map(); map.set("foo", 42); map.set("foobar", 23); map.set("barfoo", 12); const result = get(map, /^foo/); expect(result).toEqual([42, 23]); }); }); }); export default {};