| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { describe, expect, test } from "bun:test"
- import { lazy } from "../../src/util/lazy"
- describe("util.lazy", () => {
- test("should call function only once", () => {
- let callCount = 0
- const getValue = () => {
- callCount++
- return "expensive value"
- }
- const lazyValue = lazy(getValue)
- expect(callCount).toBe(0)
- const result1 = lazyValue()
- expect(result1).toBe("expensive value")
- expect(callCount).toBe(1)
- const result2 = lazyValue()
- expect(result2).toBe("expensive value")
- expect(callCount).toBe(1)
- })
- test("should preserve the same reference", () => {
- const obj = { value: 42 }
- const lazyObj = lazy(() => obj)
- const result1 = lazyObj()
- const result2 = lazyObj()
- expect(result1).toBe(obj)
- expect(result2).toBe(obj)
- expect(result1).toBe(result2)
- })
- test("should work with different return types", () => {
- const lazyString = lazy(() => "string")
- const lazyNumber = lazy(() => 123)
- const lazyBoolean = lazy(() => true)
- const lazyNull = lazy(() => null)
- const lazyUndefined = lazy(() => undefined)
- expect(lazyString()).toBe("string")
- expect(lazyNumber()).toBe(123)
- expect(lazyBoolean()).toBe(true)
- expect(lazyNull()).toBe(null)
- expect(lazyUndefined()).toBe(undefined)
- })
- })
|