@@ -45,6 +45,50 @@ def test_negative_number(self):
4545 self .assert_tokens (tokens , [{'type' : 'number' ,
4646 'value' : - 24 }])
4747
48+ def test_plus (self ):
49+ tokens = list (self .lexer .tokenize ('+' ))
50+ self .assert_tokens (tokens , [{'type' : 'plus' ,
51+ 'value' : '+' }])
52+
53+ def test_minus (self ):
54+ tokens = list (self .lexer .tokenize ('-' ))
55+ self .assert_tokens (tokens , [{'type' : 'minus' ,
56+ 'value' : '-' }])
57+ def test_minus_unicode (self ):
58+ tokens = list (self .lexer .tokenize (u'\u2212 ' ))
59+ self .assert_tokens (tokens , [{'type' : 'minus' ,
60+ 'value' : u'\u2212 ' }])
61+
62+ def test_multiplication (self ):
63+ tokens = list (self .lexer .tokenize ('*' ))
64+ self .assert_tokens (tokens , [{'type' : 'star' ,
65+ 'value' : '*' }])
66+
67+ def test_multiplication_unicode (self ):
68+ tokens = list (self .lexer .tokenize (u'\u00d7 ' ))
69+ self .assert_tokens (tokens , [{'type' : 'multiply' ,
70+ 'value' : u'\u00d7 ' }])
71+
72+ def test_division (self ):
73+ tokens = list (self .lexer .tokenize ('/' ))
74+ self .assert_tokens (tokens , [{'type' : 'divide' ,
75+ 'value' : '/' }])
76+
77+ def test_division_unicode (self ):
78+ tokens = list (self .lexer .tokenize ('÷' ))
79+ self .assert_tokens (tokens , [{'type' : 'divide' ,
80+ 'value' : '÷' }])
81+
82+ def test_modulo (self ):
83+ tokens = list (self .lexer .tokenize ('%' ))
84+ self .assert_tokens (tokens , [{'type' : 'modulo' ,
85+ 'value' : '%' }])
86+
87+ def test_integer_division (self ):
88+ tokens = list (self .lexer .tokenize ('//' ))
89+ self .assert_tokens (tokens , [{'type' : 'div' ,
90+ 'value' : '//' }])
91+
4892 def test_quoted_identifier (self ):
4993 tokens = list (self .lexer .tokenize ('"foobar"' ))
5094 self .assert_tokens (tokens , [{'type' : 'quoted_identifier' ,
@@ -151,9 +195,17 @@ def test_bad_first_character(self):
151195 with self .assertRaises (LexerError ):
152196 tokens = list (self .lexer .tokenize ('^foo[0]' ))
153197
154- def test_unknown_character_with_identifier (self ):
155- with self .assertRaisesRegex (LexerError , "Unknown token" ):
156- list (self .lexer .tokenize ('foo-bar' ))
198+ def test_arithmetic_expression (self ):
199+ tokens = list (self .lexer .tokenize ('foo-bar' ))
200+ self .assertEqual (
201+ tokens ,
202+ [
203+ {'type' : 'unquoted_identifier' , 'value' : 'foo' , 'start' : 0 , 'end' : 3 },
204+ {'type' : 'minus' , 'value' : '-' , 'start' : 3 , 'end' : 4 },
205+ {'type' : 'unquoted_identifier' , 'value' : 'bar' , 'start' : 4 , 'end' : 7 },
206+ {'type' : 'eof' , 'value' : '' , 'start' : 7 , 'end' : 7 }
207+ ]
208+ )
157209
158210
159211if __name__ == '__main__' :
0 commit comments