Files
tf_code/packages/tfcode/test/util/lazy.test.ts
Gab a8b73fd754 refactor: apply minimal tfcode branding
- Rename packages/opencode → packages/tfcode (directory only)
- Rename bin/opencode → bin/tfcode (CLI binary)
- Rename .opencode → .tfcode (config directory)
- Update package.json name and bin field
- Update config directory path references (.tfcode)
- Keep internal code references as 'opencode' for easy upstream sync
- Keep @opencode-ai/* workspace package names

This minimal branding approach allows clean merges from upstream
opencode repository while providing tfcode branding for users.
2026-03-24 13:20:14 +11:00

51 lines
1.3 KiB
TypeScript

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)
})
})