summaryrefslogtreecommitdiff
path: root/t/lex.lisp
diff options
context:
space:
mode:
Diffstat (limited to 't/lex.lisp')
-rw-r--r--t/lex.lisp45
1 files changed, 45 insertions, 0 deletions
diff --git a/t/lex.lisp b/t/lex.lisp
new file mode 100644
index 0000000..e210ecb
--- /dev/null
+++ b/t/lex.lisp
@@ -0,0 +1,45 @@
+(in-package #:rva-tests)
+
+(defmacro read-this (str &body body)
+ `(let ((*standard-input* (make-string-input-stream ,str)))
+ ,@body))
+
+(def-suite lex-tests
+ :description "Test functions exported from the lexer."
+ :in all-tests)
+
+(in-suite lex-tests)
+
+(test read-token-reads-eof
+ (read-this ""
+ (is (not (lex:read-token)))))
+
+(test read-token-reads-left-paren
+ (read-this "("
+ (is (eq (lex:read-token) 'lex::left-paren))))
+
+(test read-token-reads-right-paren
+ (read-this ")"
+ (is (eq (lex:read-token) 'lex::right-paren))))
+
+(test read-token-ignores-space
+ (read-this " ("
+ (is (eq (lex:read-token) 'lex::left-paren))))
+
+(test read-token-ignores-tab
+ (read-this " ("
+ (is (eq (lex:read-token) 'lex::left-paren))))
+
+(test read-token-ignores-newline
+ (read-this "
+("
+ (is (eq (lex:read-token) 'lex::left-paren))))
+
+(test read-token-ignores-comment
+ (read-this "; this is a comment
+("
+ (is (eq (lex:read-token) 'lex::left-paren))))
+
+(test read-token-ignores-comment-eof
+ (read-this ";"
+ (is (not (lex:read-token)))))