@@ -142,28 +142,47 @@ def test_float():
142
142
143
143
144
144
def test_kw ():
145
- assert read_str_first (":kw" ) == kw .keyword ("kw" )
146
- assert read_str_first (":kebab-kw" ) == kw .keyword ("kebab-kw" )
147
- assert read_str_first (":underscore_kw" ) == kw .keyword ("underscore_kw" )
148
- assert read_str_first (":kw?" ) == kw .keyword ("kw?" )
149
- assert read_str_first (":+" ) == kw .keyword ("+" )
150
- assert read_str_first (":?" ) == kw .keyword ("?" )
151
- assert read_str_first (":=" ) == kw .keyword ("=" )
152
- assert read_str_first (":!" ) == kw .keyword ("!" )
153
- assert read_str_first (":-" ) == kw .keyword ("-" )
154
- assert read_str_first (":*" ) == kw .keyword ("*" )
155
- assert read_str_first (":*muffs*" ) == kw .keyword ("*muffs*" )
156
- assert read_str_first (":yay!" ) == kw .keyword ("yay!" )
157
-
158
- assert read_str_first (":ns/kw" ) == kw .keyword ("kw" , ns = "ns" )
159
- assert read_str_first (":qualified.ns/kw" ) == kw .keyword (
160
- "kw" , ns = "qualified.ns" )
161
- assert read_str_first (":really.qualified.ns/kw" ) == kw .keyword (
162
- "kw" , ns = "really.qualified.ns" )
145
+ assert kw .keyword ("kw" ) == read_str_first (":kw" )
146
+ assert kw .keyword ("kebab-kw" ) == read_str_first (":kebab-kw" )
147
+ assert kw .keyword ("underscore_kw" ) == read_str_first (":underscore_kw" )
148
+ assert kw .keyword ("kw?" ) == read_str_first (":kw?" )
149
+ assert kw .keyword ("+" ) == read_str_first (":+" )
150
+ assert kw .keyword ("?" ) == read_str_first (":?" )
151
+ assert kw .keyword ("=" ) == read_str_first (":=" )
152
+ assert kw .keyword ("!" ) == read_str_first (":!" )
153
+ assert kw .keyword ("-" ) == read_str_first (":-" )
154
+ assert kw .keyword ("*" ) == read_str_first (":*" )
155
+ assert kw .keyword ("/" ) == read_str_first (":/" )
156
+ assert kw .keyword (">" ) == read_str_first (":>" )
157
+ assert kw .keyword ("->" ) == read_str_first (":->" )
158
+ assert kw .keyword ("->>" ) == read_str_first (":->>" )
159
+ assert kw .keyword ("-->" ) == read_str_first (":-->" )
160
+ assert kw .keyword ("--------------->" ) == read_str_first (":--------------->" )
161
+ assert kw .keyword ("<" ) == read_str_first (":<" )
162
+ assert kw .keyword ("<-" ) == read_str_first (":<-" )
163
+ assert kw .keyword ("<--" ) == read_str_first (":<--" )
164
+ assert kw .keyword ("<body>" ) == read_str_first (":<body>" )
165
+ assert kw .keyword ("*muffs*" ) == read_str_first (":*muffs*" )
166
+ assert kw .keyword ("yay!" ) == read_str_first (":yay!" )
167
+
168
+ assert kw .keyword ("kw" , ns = "ns" ) == read_str_first (":ns/kw" )
169
+ assert kw .keyword ("kw" , ns = "qualified.ns" ) == read_str_first (
170
+ ":qualified.ns/kw" )
171
+ assert kw .keyword ("kw" , ns = "really.qualified.ns" ) == read_str_first (
172
+ ":really.qualified.ns/kw" )
173
+
174
+ with pytest .raises (reader .SyntaxError ):
175
+ read_str_first ("://" )
163
176
164
177
with pytest .raises (reader .SyntaxError ):
165
178
read_str_first (":ns//kw" )
166
179
180
+ with pytest .raises (reader .SyntaxError ):
181
+ read_str_first (":some/ns/sym" )
182
+
183
+ with pytest .raises (reader .SyntaxError ):
184
+ read_str_first (":ns/sym/" )
185
+
167
186
with pytest .raises (reader .SyntaxError ):
168
187
read_str_first (":/kw" )
169
188
@@ -178,31 +197,56 @@ def test_literals():
178
197
179
198
180
199
def test_symbol ():
181
- assert read_str_first ("sym" ) == sym .symbol ("sym" )
182
- assert read_str_first ("kebab-sym" ) == sym .symbol ("kebab-sym" )
183
- assert read_str_first ("underscore_sym" ) == sym .symbol ("underscore_sym" )
184
- assert read_str_first ("sym?" ) == sym .symbol ("sym?" )
185
- assert read_str_first ("+" ) == sym .symbol ("+" )
186
- assert read_str_first ("?" ) == sym .symbol ("?" )
187
- assert read_str_first ("=" ) == sym .symbol ("=" )
188
- assert read_str_first ("!" ) == sym .symbol ("!" )
189
- assert read_str_first ("-" ) == sym .symbol ("-" )
190
- assert read_str_first ("*" ) == sym .symbol ("*" )
191
- assert read_str_first ("*muffs*" ) == sym .symbol ("*muffs*" )
192
- assert read_str_first ("yay!" ) == sym .symbol ("yay!" )
193
-
194
- assert read_str_first ("ns/sym" ) == sym .symbol ("sym" , ns = "ns" )
195
- assert read_str_first ("qualified.ns/sym" ) == sym .symbol (
196
- "sym" , ns = "qualified.ns" )
197
- assert read_str_first ("really.qualified.ns/sym" ) == sym .symbol (
198
- "sym" , ns = "really.qualified.ns" )
200
+ assert sym .symbol ("sym" ) == read_str_first ("sym" )
201
+ assert sym .symbol ("kebab-sym" ) == read_str_first ("kebab-sym" )
202
+ assert sym .symbol ("underscore_sym" ) == read_str_first ("underscore_sym" )
203
+ assert sym .symbol ("sym?" ) == read_str_first ("sym?" )
204
+ assert sym .symbol ("+" ) == read_str_first ("+" )
205
+ assert sym .symbol ("?" ) == read_str_first ("?" )
206
+ assert sym .symbol ("=" ) == read_str_first ("=" )
207
+ assert sym .symbol ("!" ) == read_str_first ("!" )
208
+ assert sym .symbol ("-" ) == read_str_first ("-" )
209
+ assert sym .symbol ("*" ) == read_str_first ("*" )
210
+ assert sym .symbol ("/" ) == read_str_first ("/" )
211
+ assert sym .symbol (">" ) == read_str_first (">" )
212
+ assert sym .symbol ("->" ) == read_str_first ("->" )
213
+ assert sym .symbol ("->>" ) == read_str_first ("->>" )
214
+ assert sym .symbol ("-->" ) == read_str_first ("-->" )
215
+ assert sym .symbol ("<" ) == read_str_first ("<" )
216
+ assert sym .symbol ("<-" ) == read_str_first ("<-" )
217
+ assert sym .symbol ("<--" ) == read_str_first ("<--" )
218
+ assert sym .symbol ("<body>" ) == read_str_first ("<body>" )
219
+ assert sym .symbol ("*muffs*" ) == read_str_first ("*muffs*" )
220
+ assert sym .symbol ("yay!" ) == read_str_first ("yay!" )
221
+
222
+ assert sym .symbol ("sym" , ns = "ns" ) == read_str_first ("ns/sym" )
223
+ assert sym .symbol (
224
+ "sym" , ns = "qualified.ns" ) == read_str_first ("qualified.ns/sym" )
225
+ assert sym .symbol (
226
+ "sym" , ns = "really.qualified.ns" ) == read_str_first ("really.qualified.ns/sym" )
227
+
228
+ with pytest .raises (reader .SyntaxError ):
229
+ read_str_first ("//" )
199
230
200
231
with pytest .raises (reader .SyntaxError ):
201
232
read_str_first ("ns//sym" )
202
233
234
+ with pytest .raises (reader .SyntaxError ):
235
+ read_str_first ("some/ns/sym" )
236
+
237
+ with pytest .raises (reader .SyntaxError ):
238
+ read_str_first ("ns/sym/" )
239
+
203
240
with pytest .raises (reader .SyntaxError ):
204
241
read_str_first ("/sym" )
205
242
243
+ with pytest .raises (reader .SyntaxError ):
244
+ # This will raise because the default pushback depth of the
245
+ # reader.StreamReader instance used by the reader is 5, so
246
+ # we are unable to pushback more - characters consumed by
247
+ # reader._read_num trying to parse a number.
248
+ read_str_first ("------->" )
249
+
206
250
207
251
def test_str ():
208
252
assert read_str_first ('""' ) == ''
0 commit comments