racket/collects/tests/datalog/private/lex.rkt
2011-06-28 02:01:41 -04:00

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)
))