summaryrefslogtreecommitdiff
path: root/t/lex.lisp
blob: e210ecbf6e253072ba38fc56139ca571694cb5b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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)))))