llm
Download
42 lines 1.3 KiBTomoModified 2026-09-29 raw
123456789101112131415161718192021222324252627282930313233343536373839404142
defaults := use ./_defaults.tm
vectors := use ./_vectors.tm
use ./use_import.tm

func returns_vec(->vectors.Vec2)
    return vectors.Vec2{1, 2}

func returns_imported_type(->ImportedType)
    return get_value() # Imported from ./use_import.tm

test "using an imported module"
    >> empty : [vectors.Vec2]
    >> empty
    assert empty == []
    >> returns_vec()
    assert returns_vec() == vectors.Vec2{x=1, y=2}

test "importing a type"
    >> imported : [ImportedType]
    >> imported
    assert imported == []
    >> returns_imported_type()
    assert returns_imported_type() == ImportedType{"Hello"}

test "imported global initialization"
    >> needs_initializing
    assert needs_initializing == 999999999999999999

MODULE_DEFAULT := 999

test "default values resolve in the module that wrote them"
    # `defaults.tm` defines its own `MODULE_DEFAULT` as 42. Both kinds of
    # default are stored unevaluated and recompiled at the call site, so
    # without resolving them against their own file they would either pick up
    # the 999 above or fail to compile at all:
    assert MODULE_DEFAULT == 999
    >> defaults.with_arg_default()
    assert defaults.with_arg_default() == 42
    assert defaults.with_arg_default(1) == 1
    >> defaults.with_table_default()[999]
    assert defaults.with_table_default()[999] == 42
    assert defaults.with_table_default()[1] == 1