These tests are intended to catch the cases where the routine for
reading a list, vector, or hashmap fails to consume the trailing token
(')', ']', or '}' as the case may be) from the input. None of the
existing step 1 tests detected this, and I only found it by playing
around in the REPL.
;=>(** 1 2)
(* -3 6)
;=>(* -3 6)
+(()())
+;=>(() ())
;; Test commas as whitespace
(1 2, 3,,,,),,
;=>[+ 1 [+ 2 3]]
[ + 1 [+ 2 3 ] ]
;=>[+ 1 [+ 2 3]]
+([])
+;=>([])
;; Testing read of hash maps
{}
;=>{"a" {"b" {"cde" 3}}}
{ :a {:b { :cde 3 } }}
;=>{:a {:b {:cde 3}}}
+({})
+;=>({})
;; Testing read of comments
;; whole line comment (not an exception)