summaryrefslogtreecommitdiff
path: root/src/unit-tests/parser/parser.test.scm
blob: b3573d0a9adfa5e71361ce478af1aa43eb0331f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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")