- migrate package management to pnpm - migrate test suite to vitest - also remove Anify integration
46 lines
968 B
TypeScript
46 lines
968 B
TypeScript
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);
|
|
});
|
|
});
|