blob: 8c3867503f8ee363442b367f1a7464cbd223c8e8 [file] [log] [blame]
fn add(a, b, &args) {
let sum = a + b;
for i in args {
sum = sum + i;
}
return sum;
}
j.assertEquals(3, add(1, 2));
j.assertEquals(6, add(1, 2, 3));
j.assertEquals(10, add(1, 2, 3, 4));
j.assertEquals(21, add(1, 2, 3, 4, 5, 6));
try{
add(1);
j.fail();
} catch(com.googlecode.aviator.exception.FunctionNotFoundException e) {
pst(e);
}
let called = seq.map();
fn join(a) {
a
}
fn join(a, b, &args) {
let s = a + b;
for ss in args {
s = s + ss;
}
let v = seq.get(called, "join2");
if v == nil {
seq.put(called, "join2", 1);
} else {
seq.put(called, "join2", v + 1);
}
return s;
}
fn join(a, b, c, &args) {
let s = join(join(a, b), c);
for ss in args {
s = s + ss;
}
let v = seq.get(called, "join3");
if v == nil {
seq.put(called, "join3", 1);
} else {
seq.put(called, "join3", v + 1);
}
return s;
}
j.assertEquals("a", join("a"));
j.assertEquals("b", join("b"));
j.assertEquals(0, count(called));
j.assertEquals("ab", join("a", "b"));
j.assertEquals(1, count(called));
j.assertEquals(1, seq.get(called, "join2"));
j.assertEquals("abc", join("a", "b", "c"));
j.assertEquals(2, count(called));
j.assertEquals(1, seq.get(called, "join3"));
j.assertEquals(3, seq.get(called, "join2"));
j.assertEquals("abcd", join("a", "b", "c", "d"));
j.assertEquals(2, count(called));
j.assertEquals(2, seq.get(called, "join3"));
j.assertEquals(5, seq.get(called, "join2"));
j.assertEquals("abcde", join("a", "b", "c", "d", "e"));
j.assertEquals(2, count(called));
j.assertEquals(3, seq.get(called, "join3"));
j.assertEquals(7, seq.get(called, "join2"));
fn dummy(&args) {
return args;
}
j.assertArrayEquals(tuple(), dummy());
j.assertArrayEquals(tuple(1), dummy(1));
j.assertArrayEquals(tuple("hello"), dummy("hello"));
j.assertArrayEquals(tuple(1,2,3), dummy(1, 2, 3));