95 lines
1.2 KiB
Plaintext
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();
|
|
}
|