summaryrefslogtreecommitdiff
path: root/src/unit-tests/parser
diff options
context:
space:
mode:
Diffstat (limited to 'src/unit-tests/parser')
-rw-r--r--src/unit-tests/parser/parser.test.scm30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/unit-tests/parser/parser.test.scm b/src/unit-tests/parser/parser.test.scm
new file mode 100644
index 0000000..b3573d0
--- /dev/null
+++ b/src/unit-tests/parser/parser.test.scm
@@ -0,0 +1,30 @@
+;; -*- compile-command: "guile -L ./src ./src/unit-tests/parser/parser.test.scm"; -*-
+(use-modules (srfi srfi-64)
+ (modules parser parser))
+
+
+(test-begin "parser-harness")
+
+
+(test-equal "trivial function main 2"
+ '(program (function (identifier "main") (return (constant 2))))
+ (p-program '(int "main" left-paren void right-paren open-brace return 2 semi-colon close-brace)))
+
+(test-equal "trivial function foo 4"
+ '(program (function (identifier "foo") (return (constant 4))))
+ (p-program '(int "foo" left-paren void right-paren open-brace return 4 semi-colon close-brace)))
+
+(test-error "trivial function bad double return"
+ (p-program '(int "foo" left-paren void right-paren open-brace return return 4 semi-colon close-brace)))
+
+(test-error "trivial function bad parens"
+ (p-program '(int "foo" right-paren void left-paren open-brace return 4 semi-colon close-brace)))
+
+(test-error "trivial function bad int parameter"
+ (p-program '(int "foo" left-paren int right-paren open-brace return 4 semi-colon close-brace)))
+
+(test-error "trivial function incomplete function"
+ (p-program '(int "foo" left-paren void right-paren open-brace return)))
+
+
+(test-end "parser-harness")