;; -*- 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")