diff options
Diffstat (limited to 'src/unit-tests/lexer/lexer-test.scm')
-rw-r--r-- | src/unit-tests/lexer/lexer-test.scm | 103 |
1 files changed, 103 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..6596a1f --- /dev/null +++ b/src/unit-tests/lexer/lexer-test.scm @@ -0,0 +1,103 @@ +;; -*- 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))) + + +(test-begin "lexer-harness") + + +(test-equal "empty string" + '() + (begin + (read-this "") + (read-tokens))) + +(test-equal "(" + '(left-paren) + (begin + (read-this "(") + (read-tokens))) + +(test-equal "((" + '(left-paren left-paren) + (begin + (read-this "((") + (read-tokens))) + +(test-equal "( )" + '(left-paren right-paren) + (begin + (read-this "( )") + (read-tokens))) + +(test-equal "( {;} {((};})" + '(left-paren open-brace semi-colon close-brace open-brace left-paren left-paren close-brace semi-colon close-brace right-paren) + (begin + (read-this "( {;} {((};})") + (read-tokens))) + +(test-equal "1" + '(1) + (begin + (read-this "1") + (read-tokens))) + +(test-equal "0" + '(0) + (begin + (read-this "0") + (read-tokens))) + +(test-equal "0011001" + '(11001) + (begin + (read-this "0011001") + (read-tokens))) + +(test-equal "12 {34" + '(12 open-brace 34) + (begin + (read-this "12 {34") + (read-tokens))) + +(test-equal "34;" + '(34 semi-colon) + (begin + (read-this "34;") + (read-tokens))) + + +(test-error "3.4" + (begin + (read-this "3.4") + (read-tokens))) + +(test-equal "a" + '("a") + (begin + (read-this "a") + (read-tokens))) + +(test-equal "a_2" + '("a_2") + (begin + (read-this "a_2") + (read-tokens))) + +(test-error "1foo" + (begin + (read-this "1foo") + (read-tokens))) + +(test-equal "int main(void) {return 2;}" + '("int" "main" left-paren "void" right-paren open-brace "return" 2 semi-colon close-brace) + (begin + (read-this "int main(void) {return 2;}") + (read-tokens))) + + +(test-end "lexer-harness") |