summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-03-20 13:51:28 -0400
committerbd <bdunahu@operationnull.com>2025-03-20 13:51:28 -0400
commit6e338215192c26dfb16236398ca8e3762a8d4d0e (patch)
tree823d7102f43ea5a4b377d5c2cb04a5ec02fb20b7 /t
parent19d13c8339ee990fba358417a54aa6f1c94c7bca (diff)
Add logic to open file, lex single character symbols, tests
Diffstat (limited to 't')
-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)))))