diff options
Diffstat (limited to 'src/unit-tests/lexer/lexer.test.scm')
-rw-r--r-- | src/unit-tests/lexer/lexer.test.scm | 89 |
1 files changed, 89 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") |