import { describe, it } from "mocha"; import { expect } from "chai"; import { WeakValueMap } from "../packages/opvault.js/weakMap"; declare const gc: () => void; describe("WeakValueMap", () => { interface Value { value: number; } it("covers base use cases", () => { const map = new WeakValueMap(); const object = { value: 1 }; map.set("key", object); expect(map.get("key")!.value).to.equal(1); expect(map.delete("key")).to.be.true; expect(!map.delete("key")).to.be.true; }); it("overrides previous value", () => { const map = new WeakValueMap(); map.set("key", { value: 2 }); map.set("key", { value: 3 }); expect(map.get("key")!.value).to.equal(3); }); it("deletes garbage collected values", (done) => { const map = new WeakValueMap(); map.set("key", { value: 1 }); setTimeout(() => { gc(); expect(map.has("key")).to.be.false; map.set("key", { value: 2 }); setTimeout(() => { gc(); done(); }); }); }); });