summaryrefslogtreecommitdiffhomepage
path: root/tests/custom/02_runtime/06_recursion
diff options
context:
space:
mode:
Diffstat (limited to 'tests/custom/02_runtime/06_recursion')
-rw-r--r--tests/custom/02_runtime/06_recursion59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/custom/02_runtime/06_recursion b/tests/custom/02_runtime/06_recursion
new file mode 100644
index 0000000..470fc3a
--- /dev/null
+++ b/tests/custom/02_runtime/06_recursion
@@ -0,0 +1,59 @@
+Testing recursive invocations.
+
+
+1. Testing recursive invocation.
+
+-- Expect stdout --
+1
+2
+4
+8
+16
+32
+64
+128
+256
+512
+1024
+2048
+4096
+8192
+16384
+-- End --
+
+-- Testcase --
+{%
+ function test(x) {
+ print(x, "\n");
+
+ if (x < 10000)
+ test(x * 2);
+ }
+
+ test(1);
+%}
+-- End --
+
+
+2. Testing infinite recursion.
+
+-- Expect stderr --
+Runtime error: Too much recursion
+In test(), line 3, byte 8:
+ called from anonymous function ([stdin]:6:7)
+
+ ` test();`
+ Near here ---^
+
+
+-- End --
+
+-- Testcase --
+{%
+ function test() {
+ test();
+ }
+
+ test();
+%}
+-- End --