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