Added in the tests.
This commit is contained in:
parent
a9e1bb479e
commit
75bb544343
16
core.nom
16
core.nom
@ -115,7 +115,7 @@ rule "%a == %b":
|
|||||||
macro "%a != %b": concat ["not (",%a as lua expr," == ",%b as lua expr,")"]
|
macro "%a != %b": concat ["not (",%a as lua expr," == ",%b as lua expr,")"]
|
||||||
|
|
||||||
rule "say %str":
|
rule "say %str":
|
||||||
lua block ["print(", %str, ")"]
|
lua block ["print(utils.repr(", %str, "))"]
|
||||||
|
|
||||||
rule "printf %str":
|
rule "printf %str":
|
||||||
lua block ".."
|
lua block ".."
|
||||||
@ -274,3 +274,17 @@ rule "error!":
|
|||||||
|
|
||||||
rule "error %msg":
|
rule "error %msg":
|
||||||
lua block "compiler:error(vars.msg)"
|
lua block "compiler:error(vars.msg)"
|
||||||
|
|
||||||
|
macro block "test %code yields %expected":
|
||||||
|
let "generated" = (lua expr "utils.repr(compiler:stringify_tree(vars.code.value.value), true)")
|
||||||
|
let "expected" = (%expected as lua expr)
|
||||||
|
if (%generated != %expected):
|
||||||
|
say "Test failed!"
|
||||||
|
say "Expected:"
|
||||||
|
say %expected
|
||||||
|
say "But got:"
|
||||||
|
say %generated
|
||||||
|
error!
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
197
tests.nom
Normal file
197
tests.nom
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
run file "core.nom"
|
||||||
|
|
||||||
|
test: say "foo" ..yields ".."
|
||||||
|
|Call [say %]:
|
||||||
|
| "foo"
|
||||||
|
|
||||||
|
test: say (4) ..yields ".."
|
||||||
|
|Call [say %]:
|
||||||
|
| 4
|
||||||
|
|
||||||
|
test:
|
||||||
|
rule "fart": say "poot"
|
||||||
|
..yields ".."
|
||||||
|
|Call [rule % %]:
|
||||||
|
| "fart"
|
||||||
|
| Thunk:
|
||||||
|
| Call [say %]:
|
||||||
|
| "poot"
|
||||||
|
|
||||||
|
test:
|
||||||
|
rule "doublefart":
|
||||||
|
say "poot"
|
||||||
|
say "poot"
|
||||||
|
..yields ".."
|
||||||
|
|Call [rule % %]:
|
||||||
|
| "doublefart"
|
||||||
|
| Thunk:
|
||||||
|
| Call [say %]:
|
||||||
|
| "poot"
|
||||||
|
| Call [say %]:
|
||||||
|
| "poot"
|
||||||
|
|
||||||
|
test: say (subexpressions work) ..yields ".."
|
||||||
|
|Call [say %]:
|
||||||
|
| Call [subexpressions work]!
|
||||||
|
|
||||||
|
test: say ["lists", "work"] ..yields ".."
|
||||||
|
|Call [say %]:
|
||||||
|
| List:
|
||||||
|
| "lists"
|
||||||
|
| "work"
|
||||||
|
|
||||||
|
test: say [] ..yields ".."
|
||||||
|
|Call [say %]:
|
||||||
|
| <Empty List>
|
||||||
|
|
||||||
|
test:
|
||||||
|
say [..]
|
||||||
|
1, 2
|
||||||
|
3
|
||||||
|
..yields ".."
|
||||||
|
|Call [say %]:
|
||||||
|
| List:
|
||||||
|
| 1
|
||||||
|
| 2
|
||||||
|
| 3
|
||||||
|
|
||||||
|
test:
|
||||||
|
say both [..]
|
||||||
|
1,2
|
||||||
|
..and [..]
|
||||||
|
3,4
|
||||||
|
..yields ".."
|
||||||
|
|Call [say both % and %]:
|
||||||
|
| List:
|
||||||
|
| 1
|
||||||
|
| 2
|
||||||
|
| List:
|
||||||
|
| 3
|
||||||
|
| 4
|
||||||
|
|
||||||
|
test:
|
||||||
|
say both..
|
||||||
|
"hello"
|
||||||
|
and "world"
|
||||||
|
..yields ".."
|
||||||
|
|Call [say both % and %]:
|
||||||
|
| "hello"
|
||||||
|
| "world"
|
||||||
|
|
||||||
|
test:
|
||||||
|
say both ..
|
||||||
|
"a list:"
|
||||||
|
and [..]
|
||||||
|
1,2,(three),(4)
|
||||||
|
..yields ".."
|
||||||
|
|Call [say both % and %]:
|
||||||
|
| "a list:"
|
||||||
|
| List:
|
||||||
|
| 1
|
||||||
|
| 2
|
||||||
|
| Call [three]!
|
||||||
|
| 4
|
||||||
|
|
||||||
|
test:
|
||||||
|
if 1: yes
|
||||||
|
..else: no
|
||||||
|
..yields ".."
|
||||||
|
|Call [if % % else %]:
|
||||||
|
| 1
|
||||||
|
| Thunk:
|
||||||
|
| Call [yes]!
|
||||||
|
| Thunk:
|
||||||
|
| Call [no]!
|
||||||
|
|
||||||
|
test:
|
||||||
|
if 1: yes ..else: no
|
||||||
|
..yields ".."
|
||||||
|
|Call [if % % else %]:
|
||||||
|
| 1
|
||||||
|
| Thunk:
|
||||||
|
| Call [yes]!
|
||||||
|
| Thunk:
|
||||||
|
| Call [no]!
|
||||||
|
|
||||||
|
test: say (do: return 5)
|
||||||
|
..yields ".."
|
||||||
|
|Call [say %]:
|
||||||
|
| Call [do %]:
|
||||||
|
| Thunk:
|
||||||
|
| Call [return %]:
|
||||||
|
| 5
|
||||||
|
|
||||||
|
test:
|
||||||
|
say (..)
|
||||||
|
fn call
|
||||||
|
..yields ".."
|
||||||
|
|Call [say %]:
|
||||||
|
| Call [fn call]!
|
||||||
|
|
||||||
|
test:
|
||||||
|
do: say "one liner"
|
||||||
|
..also: say "another one liner"
|
||||||
|
..yields ".."
|
||||||
|
|Call [do % also %]:
|
||||||
|
| Thunk:
|
||||||
|
| Call [say %]:
|
||||||
|
| "one liner"
|
||||||
|
| Thunk:
|
||||||
|
| Call [say %]:
|
||||||
|
| "another one liner"
|
||||||
|
|
||||||
|
test:
|
||||||
|
say (..)
|
||||||
|
do:
|
||||||
|
say "hi"
|
||||||
|
return 5
|
||||||
|
say "bye"
|
||||||
|
..yields ".."
|
||||||
|
|Call [say %]:
|
||||||
|
| Call [do %]:
|
||||||
|
| Thunk:
|
||||||
|
| Call [say %]:
|
||||||
|
| "hi"
|
||||||
|
| Call [return %]:
|
||||||
|
| 5
|
||||||
|
| Call [say %]:
|
||||||
|
| "bye"
|
||||||
|
|
||||||
|
|
||||||
|
test: say (1 + (-(2 * 3)))
|
||||||
|
..yields ".."
|
||||||
|
|Call [say %]:
|
||||||
|
| Call [% + %]:
|
||||||
|
| 1
|
||||||
|
| Call [- %]:
|
||||||
|
| Call [% * %]:
|
||||||
|
| 2
|
||||||
|
| 3
|
||||||
|
|
||||||
|
test:
|
||||||
|
if %x:
|
||||||
|
x
|
||||||
|
..else: if %y:
|
||||||
|
y
|
||||||
|
..else:
|
||||||
|
z
|
||||||
|
..yields ".."
|
||||||
|
|Call [if % % else %]:
|
||||||
|
| Var[x]
|
||||||
|
| Thunk:
|
||||||
|
| Call [x]!
|
||||||
|
| Thunk:
|
||||||
|
| Call [if % % else %]:
|
||||||
|
| Var[y]
|
||||||
|
| Thunk:
|
||||||
|
| Call [y]!
|
||||||
|
| Thunk:
|
||||||
|
| Call [z]!
|
||||||
|
|
||||||
|
|
||||||
|
test:
|
||||||
|
don't fuck this up
|
||||||
|
..yields ".."
|
||||||
|
|Call [don't fuck this up]!
|
||||||
|
|
||||||
|
say "All tests passed!"
|
Loading…
Reference in New Issue
Block a user