1 ;; Testing read of numbers
12 ;; Testing read of symbols
24 ;; Testing non-numbers starting with a dash.
32 ;; Testing read of lists
56 ;; Test commas as whitespace
64 ;; -------- Deferrable Functionality --------
66 ;; Testing read of nil/true/false
74 ;; Testing read of strings
80 ;=>"abc (with parens)"
88 ;=>"\\\\\\\\\\\\\\\\\\"
138 ;; Testing reader errors
140 ;/.*(EOF|end of input|unbalanced).*
142 ;/.*(EOF|end of input|unbalanced).*
144 ;;; These should throw some error with no return value
146 ;/.*(EOF|end of input|unbalanced).*
148 ;/.*(EOF|end of input|unbalanced).*
150 ;/.*(EOF|end of input|unbalanced).*
151 "\\\\\\\\\\\\\\\\\\\"
152 ;/.*(EOF|end of input|unbalanced).*
154 ;/.*(EOF|end of input|unbalanced).*
156 ;/.*(EOF|end of input|unbalanced).*
158 ;; Testing read of quoting
166 ;=>(quasiquote (1 2 3))
172 ;=>(quasiquote (1 (unquote a) 3))
174 ;=>(splice-unquote (1 2 3))
183 ;; Testing read of vectors
199 ;; Testing read of hash maps
209 ;=>{"a" {"b" {"c" 3}}}
210 { "a" {"b" { "cde" 3 } }}
211 ;=>{"a" {"b" {"cde" 3}}}
212 ;;; The regexp sorcery here ensures that each key goes with the correct
213 ;;; value and that each key appears only once.
214 {"a1" 1 "a2" 2 "a3" 3}
215 ;/{"a([1-3])" \1 "a(?!\1)([1-3])" \2 "a(?!\1)(?!\2)([1-3])" \3}
216 { :a {:b { :cde 3 } }}
217 ;=>{:a {:b {:cde 3}}}
223 ;; Testing read of comments
224 ;; whole line comment (not an exception)
225 1 ; comment after expression
227 1; comment after expression
230 ;; Testing read of @/deref
237 ;; -------- Optional Functionality --------
239 ;; Testing read of ^/metadata
241 ;=>(with-meta [1 2 3] {"a" 1})
244 ;; Non alphanumerice characters in strings
245 ;;; \t is not specified enough to be tested
261 ;; Non alphanumeric characters in comments
282 ;;; Hopefully less problematic characters
283 1; &()*+,-./:;<=>?@[]^_{|}~
285 ;; FIXME: These tests have no reasons to be optional, but...
286 ;; fantom fails this one