@@ -45,6 +45,50 @@ def test_negative_number(self):
45
45
self .assert_tokens (tokens , [{'type' : 'number' ,
46
46
'value' : - 24 }])
47
47
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
+
48
92
def test_quoted_identifier (self ):
49
93
tokens = list (self .lexer .tokenize ('"foobar"' ))
50
94
self .assert_tokens (tokens , [{'type' : 'quoted_identifier' ,
@@ -151,9 +195,17 @@ def test_bad_first_character(self):
151
195
with self .assertRaises (LexerError ):
152
196
tokens = list (self .lexer .tokenize ('^foo[0]' ))
153
197
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
+ )
157
209
158
210
159
211
if __name__ == '__main__' :
0 commit comments