39 lines
1.0 KiB
Racket
39 lines
1.0 KiB
Racket
#lang racket
|
|
(require rackunit
|
|
parser-tools/lex
|
|
datalog/private/lex)
|
|
|
|
(provide lex-tests)
|
|
|
|
(define (test-lexer str tok-name [tok-value str])
|
|
(define pv (dlexer (open-input-string str)))
|
|
(define v (position-token-token pv))
|
|
(test-equal? (format "lexer: ~a: <~a,~a>" str tok-name tok-value)
|
|
(cons tok-name tok-value)
|
|
(cons (token-name v) (token-value v))))
|
|
|
|
(define lex-tests
|
|
(test-suite
|
|
"lex"
|
|
|
|
(test-lexer "=" 'EQUAL #f)
|
|
(test-lexer "!=" 'NEQUAL #f)
|
|
(test-lexer "?" 'QMARK #f)
|
|
(test-lexer "~" 'TILDE #f)
|
|
(test-lexer "." 'DOT #f)
|
|
(test-lexer ")" 'RPAREN #f)
|
|
(test-lexer "," 'COMMA #f)
|
|
(test-lexer "(" 'LPAREN #f)
|
|
(test-lexer "\"\"" 'STRING "")
|
|
(test-lexer "\"foo\"" 'STRING "foo")
|
|
(test-lexer "\"\\\"\"" 'STRING "\"")
|
|
(test-lexer ":-" 'TSTILE #f)
|
|
(test-lexer "" 'EOF #f)
|
|
(test-lexer "Va1_" 'VARIABLE)
|
|
(test-lexer "val_" 'IDENTIFIER)
|
|
(test-lexer "912Kadf" 'IDENTIFIER)
|
|
(test-lexer " =" 'EQUAL #f)
|
|
(test-lexer "% 12453\n=" 'EQUAL #f)
|
|
|
|
))
|