import { describe, expect, it } from "vitest"; import { lazy } from "./lazy"; describe("lazy", () => { it("lazy value returned when get is called", () => { const value = lazy(() => "value"); expect(value.get()).toBe("value"); }); it("lazy function not called if get isn't called", () => { let setValue = false; lazy(() => { setValue = true; return "value"; }); expect(setValue).toBe(false); }); it("lazy function called if get is called", () => { let setValue = false; lazy(() => { setValue = true; return "value"; }).get(); expect(setValue).toBe(true); }); it("lazy function called only once if get is called multiple times", () => { let count = 0; const value = lazy(() => { count++; return "value"; }); const NUM_TIMES_CALLED = 1_000_000; for (let i = 0; i < NUM_TIMES_CALLED; i++) { value.get(); } expect(count).toBe(1); }); });