mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-03-30 22:03:58 +00:00
- 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.
51 lines
1.3 KiB
TypeScript
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)
|
|
})
|
|
})
|