summaryrefslogtreecommitdiff
path: root/tests/type-consistency/spec/recursion.ts
diff options
context:
space:
mode:
Diffstat (limited to 'tests/type-consistency/spec/recursion.ts')
-rw-r--r--tests/type-consistency/spec/recursion.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/type-consistency/spec/recursion.ts b/tests/type-consistency/spec/recursion.ts
new file mode 100644
index 0000000..c5de83f
--- /dev/null
+++ b/tests/type-consistency/spec/recursion.ts
@@ -0,0 +1,25 @@
+import path from "path";
+import { createTestHarness } from "../harness";
+
+export default createTestHarness({
+ harnessName: "Recursive functions",
+ generatedPath: path.join(__dirname, "..", "generated"),
+})
+ .createFunctionTest({
+ name: "n!",
+ program: "bind(fac,fn(n,?(eq(n, 1),n,mul(n,call(fac,sub(n,1))))))",
+ cases: [
+ { input: 3, output: 6 },
+ { input: 1, output: 1 },
+ { input: 5, output: 120 },
+ ],
+ })
+ .createFunctionTest({
+ name: "Sum of natural numbers on [0, n]",
+ program: "bind(sumnn,fn(n,?(eq(n, 1),n,add(n,call(sumnn,sub(n,1))))))",
+ cases: [
+ { input: 5, output: 15 },
+ { input: 1, output: 1 },
+ { input: 2, output: 3 },
+ ],
+ });