diff options
Diffstat (limited to 'src/unit-tests')
| -rw-r--r-- | src/unit-tests/lexer/lexer.test.scm | 89 | ||||
| -rw-r--r-- | src/unit-tests/parser/parser.test.scm | 30 | ||||
| -rw-r--r-- | src/unit-tests/utils/t-factory.test.scm | 19 | 
3 files changed, 138 insertions, 0 deletions
| diff --git a/src/unit-tests/lexer/lexer.test.scm b/src/unit-tests/lexer/lexer.test.scm new file mode 100644 index 0000000..807dbec --- /dev/null +++ b/src/unit-tests/lexer/lexer.test.scm @@ -0,0 +1,89 @@ +;; -*- compile-command: "guile -L ./src ./src/unit-tests/lexer/lexer.test.scm"; -*- +(use-modules (srfi srfi-64) +	     (modules lexer lexer)) + +(define (read-this str) +  (set-current-input-port +   (open-input-string str)) +  str) + + +(test-begin "lexer-harness") + + +(test-equal (read-this "") +  '() +  (read-tokens)) + +(test-equal (read-this "(") +  '(left-paren) +  (read-tokens)) + +(test-equal (read-this "((") +  '(left-paren left-paren) +  (read-tokens)) + +(test-equal (read-this "( )") +  '(left-paren right-paren) +  (read-tokens)) + +(test-equal (read-this "( {;} {((};})") +  '(left-paren open-brace semi-colon close-brace open-brace left-paren left-paren close-brace semi-colon close-brace right-paren) +  (read-tokens)) + +(test-equal (read-this "1") +  '(1) +  (read-tokens)) + +(test-equal (read-this "~+-") +  '(complement add sub) +  (read-tokens)) + +(test-equal (read-this "---") +  '(decrement sub) +  (read-tokens)) + +(test-equal (read-this "+--") +  '(add decrement) +  (read-tokens)) + +(test-equal (read-this "0") +  '(0) +  (read-tokens)) + +(test-equal (read-this "0011001") +  '(11001) +  (read-tokens)) + +(test-equal (read-this "12 {34") +  '(12 open-brace 34) +  (read-tokens)) + +(test-equal (read-this "34;") +  '(34 semi-colon) +  (read-tokens)) + +(test-error (read-this "3.4") +	    (read-tokens)) + +(test-equal (read-this "a") +  '("a") +  (read-tokens)) + +(test-equal (read-this "a_2") +  '("a_2") +  (read-tokens)) + +(test-error (read-this "1foo") +	    (read-tokens)) + +(test-equal (read-this "void") +  '(void) +  (read-tokens)) + +(test-equal (read-this "int main(void) {return 2;}") +  '(int "main" left-paren void right-paren open-brace return 2 semi-colon close-brace) +  (read-tokens)) + + +(test-end "lexer-harness") 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") diff --git a/src/unit-tests/utils/t-factory.test.scm b/src/unit-tests/utils/t-factory.test.scm new file mode 100644 index 0000000..eda983b --- /dev/null +++ b/src/unit-tests/utils/t-factory.test.scm @@ -0,0 +1,19 @@ +;; -*- compile-command: "guile -L ./src ./src/unit-tests/utils/t-factory.test.scm"; -*- +(use-modules (srfi srfi-64) +	     (modules ast assembly-tree) +	     (modules utils t-factory)) + + +(test-begin "t-factory-harness") + + +(test-equal "make first temporary" +  't.101 +  (temporary-name (make-t))) + +(test-equal "make second temporary" +  't.102 +  (temporary-name (make-t))) + + +(test-end "t-factory-harness") | 
