diff options
author | Mathias Magnusson <mathias@magnusson.space> | 2025-08-04 23:12:39 +0200 |
---|---|---|
committer | Mathias Magnusson <mathias@magnusson.space> | 2025-08-04 23:12:39 +0200 |
commit | 392f0c4be0d4c034a4b161337f8f3c5fbf46358a (patch) | |
tree | 493cef6315b016e8ec7f9be051be7bb904e16add /tests | |
parent | 22f24043755ed320eff8a121aa1b80ede3b3a37f (diff) | |
download | huginn-main.tar.gz |
Diffstat (limited to 'tests')
-rw-r--r-- | tests/fibonacci.hgn | 23 | ||||
-rw-r--r-- | tests/fibonacci.json | 7 | ||||
-rw-r--r-- | tests/rec_fib.hgn | 11 | ||||
-rw-r--r-- | tests/rec_fib.json | 7 | ||||
-rw-r--r-- | tests/recurse.hgn | 11 | ||||
-rw-r--r-- | tests/recurse.json | 5 | ||||
-rw-r--r-- | tests/ternary.hgn | 4 | ||||
-rw-r--r-- | tests/ternary.json | 6 | ||||
-rw-r--r-- | tests/triangle.hgn | 10 | ||||
-rw-r--r-- | tests/triangle.json | 4 |
10 files changed, 88 insertions, 0 deletions
diff --git a/tests/fibonacci.hgn b/tests/fibonacci.hgn new file mode 100644 index 0000000..f2ea776 --- /dev/null +++ b/tests/fibonacci.hgn @@ -0,0 +1,23 @@ +main := proc() { + n := read_int(0) + fib(n) + exit(0) +} + +fib := proc(n) { + a := 0 + b := 1 + i := 0 + while i < n { + c := a + b + a = b + b = c + i = i + 1 + } + p(a) +} + +p := proc(x) { + x2 := x + print(x2) +} diff --git a/tests/fibonacci.json b/tests/fibonacci.json new file mode 100644 index 0000000..1be12db --- /dev/null +++ b/tests/fibonacci.json @@ -0,0 +1,7 @@ +[ + { "stdin": "0\n", "stdout": "0\n" }, + { "stdin": "1\n", "stdout": "1\n" }, + { "stdin": "10\n", "stdout": "55\n" }, + { "stdin": "20\n", "stdout": "6765\n" }, + { "stdin": "90\n", "stdout": "2880067194370816120\n" } +] diff --git a/tests/rec_fib.hgn b/tests/rec_fib.hgn new file mode 100644 index 0000000..9cbeed8 --- /dev/null +++ b/tests/rec_fib.hgn @@ -0,0 +1,11 @@ +main := proc() { + n := read_int(0) + f := fib(n) + print(f) + exit(0) +} + +fib := proc(n) { + if n < 2 { return n } + return fib(n - 2) + fib(n - 1) +} diff --git a/tests/rec_fib.json b/tests/rec_fib.json new file mode 100644 index 0000000..d7b90c6 --- /dev/null +++ b/tests/rec_fib.json @@ -0,0 +1,7 @@ +[ + { "stdin": "0\n", "stdout": "0\n" }, + { "stdin": "1\n", "stdout": "1\n" }, + { "stdin": "10\n", "stdout": "55\n" }, + { "stdin": "20\n", "stdout": "6765\n" }, + { "stdin": "30\n", "stdout": "832040\n" } +] diff --git a/tests/recurse.hgn b/tests/recurse.hgn new file mode 100644 index 0000000..bf9a0fd --- /dev/null +++ b/tests/recurse.hgn @@ -0,0 +1,11 @@ +main := proc() { + print_up_to(read_int(0)) + exit(0) +} + +print_up_to := proc(n) { + print(n) + if n > 0 { + print_up_to(n - 1) + } +} diff --git a/tests/recurse.json b/tests/recurse.json new file mode 100644 index 0000000..ac3f3e6 --- /dev/null +++ b/tests/recurse.json @@ -0,0 +1,5 @@ +[ + { "stdin": "0\n", "stdout": "0\n" }, + { "stdin": "1\n", "stdout": "1\n0\n" }, + { "stdin": "10\n", "stdout": "10\n9\n8\n7\n6\n5\n4\n3\n2\n1\n0\n" } +] diff --git a/tests/ternary.hgn b/tests/ternary.hgn new file mode 100644 index 0000000..3740fd8 --- /dev/null +++ b/tests/ternary.hgn @@ -0,0 +1,4 @@ +main := proc() { + print(if read_int(0) 1 else 2) + if 1 exit(0) +} diff --git a/tests/ternary.json b/tests/ternary.json new file mode 100644 index 0000000..ec1213c --- /dev/null +++ b/tests/ternary.json @@ -0,0 +1,6 @@ +[ + { "stdin": "0\n", "stdout": "2\n" }, + { "stdin": "1\n", "stdout": "1\n" }, + { "stdin": "2\n", "stdout": "1\n" }, + { "stdin": "3\n", "stdout": "1\n" } +] diff --git a/tests/triangle.hgn b/tests/triangle.hgn new file mode 100644 index 0000000..5459c12 --- /dev/null +++ b/tests/triangle.hgn @@ -0,0 +1,10 @@ +main := proc() { + n := read_int(0) + print(triangle(n)) + exit(0) +} + +triangle := proc(n) { + if n == 0 { return 0 } + return triangle(n - 1) + n +} diff --git a/tests/triangle.json b/tests/triangle.json new file mode 100644 index 0000000..ff1246c --- /dev/null +++ b/tests/triangle.json @@ -0,0 +1,4 @@ +[ + { "stdin": "10\n", "stdout": "55\n" }, + { "stdin": "20\n", "stdout": "210\n" } +] |