Files
mist/mist-test/src/items/function_test.mist
T
2026-07-04 21:55:29 +02:00

95 lines
1.2 KiB
Plaintext

pub module function_test;
void greet()
{
let mut x = 1;
x++;
}
pub void test_basic_function()
{
greet();
}
i32 add(i32 a, i32 b)
{
a + b
}
pub void test_fn_params()
{
assert_eq!(add(2, 3), 5);
}
pub i32 test_fn_return()
{
42
}
pub i32 test_fn_early_return()
{
return 100;
0
}
pub i32 test_fn_mut_param(i32 mut x)
{
x = x + 10;
x
}
pub void test_method_call()
{
let s = "hello";
assert_eq!(s.len(), 5);
assert_eq!(s.to_uppercase(), "HELLO");
}
i32 triple(i32 x)
{
add(x, add(x, x))
}
pub void test_nested_fn_calls()
{
assert_eq!(triple(5), 15);
}
i32 factorial(i32 n)
{
if n <= 1 {
1
} else {
n * factorial(n - 1)
}
}
pub void test_recursive_fn()
{
assert_eq!(factorial(5), 120);
}
T identity<T>(T x)
{
x
}
pub void test_fn_generic()
{
assert_eq!(identity(42), 42);
assert_eq!(identity("hello"), "hello");
}
pub void run_tests()
{
test_basic_function();
test_fn_params();
assert_eq!(test_fn_return(), 42);
assert_eq!(test_fn_early_return(), 100);
assert_eq!(test_fn_mut_param(5), 15);
test_method_call();
test_nested_fn_calls();
test_recursive_fn();
test_fn_generic();
}