import { describe, expect, test } from "bun:test"
import { iife } from "../../src/util/iife"

describe("util.iife", () => {
  test("should execute function immediately and return result", () => {
    let called = false
    const result = iife(() => {
      called = true
      return 42
    })

    expect(called).toBe(true)
    expect(result).toBe(42)
  })

  test("should work with async functions", async () => {
    let called = false
    const result = await iife(async () => {
      called = true
      return "async result"
    })

    expect(called).toBe(true)
    expect(result).toBe("async result")
  })

  test("should handle functions with no return value", () => {
    let called = false
    const result = iife(() => {
      called = true
    })

    expect(called).toBe(true)
    expect(result).toBeUndefined()
  })
})