mirror of
https://github.com/krgamestudios/Toy.git
synced 2026-04-16 07:14:07 +10:00
68 lines
988 B
Plaintext
68 lines
988 B
Plaintext
//test function return
|
|
fn testFourtyTwo() {
|
|
return 42;
|
|
}
|
|
|
|
assert testFourtyTwo() == 42, "function returns failed";
|
|
|
|
|
|
//test function parameters
|
|
fn identity(x) {
|
|
return x;
|
|
}
|
|
|
|
assert identity("hello world") == "hello world", "identity function failed";
|
|
|
|
|
|
//test closures
|
|
fn make() {
|
|
var counter = 0;
|
|
|
|
fn count() {
|
|
return ++counter;
|
|
}
|
|
|
|
return count;
|
|
}
|
|
|
|
var tally = make();
|
|
|
|
assert tally() == 1 && tally() == 2, "Closures failed";
|
|
|
|
|
|
//test closures self-capture
|
|
fn capture(count: int) {
|
|
if (count > 5) {
|
|
return count;
|
|
}
|
|
|
|
return capture(count + 1);
|
|
}
|
|
|
|
assert capture(0) == 6, "Self capture failed";
|
|
|
|
|
|
//test expressions as arguments
|
|
fn argFn() {
|
|
return 42;
|
|
}
|
|
|
|
fn outerFn(val) {
|
|
assert val == 42, "expression as argument failed";
|
|
}
|
|
|
|
outerFn(argFn());
|
|
|
|
|
|
//test extra parameters
|
|
fn extra(one, two, ...rest) {
|
|
assert rest == ["three", "four", "five", "six", "seven"], "rest parameters failed";
|
|
}
|
|
|
|
extra("one", "two", "three", "four", "five", "six", "seven");
|
|
|
|
|
|
|
|
|
|
print "All good";
|