0.8.2.7:
[sbcl.git] / tests / reader.pure.lisp
index 728722a..f064457 100644 (file)
 (let ((*readtable* (copy-readtable)))
   (set-syntax-from-char #\7 #\;)
   (assert (= 1235 (read-from-string "123579"))))
+
+;;; PARSE-INTEGER must signal an error of type PARSE-ERROR if it is
+;;; unable to parse an integer and :JUNK-ALLOWED is NIL.
+(macrolet ((assert-parse-error (form)
+            `(multiple-value-bind (val cond)
+                 (ignore-errors ,form)
+               (assert (null val))
+               (assert (typep cond 'parse-error)))))
+  (assert-parse-error (parse-integer "    "))
+  (assert-parse-error (parse-integer "12 a"))
+  (assert-parse-error (parse-integer "12a"))
+  (assert-parse-error (parse-integer "a"))
+  (assert (= (parse-integer "12") 12))
+  (assert (= (parse-integer "   12   ") 12))
+  (assert (= (parse-integer "   12asdb" :junk-allowed t) 12)))
+
+;;; #A notation enforces that once one 0 dimension has been found, all
+;;; subsequent ones are also 0.
+(assert (equal (array-dimensions (read-from-string "#3A()"))
+              '(0 0 0)))
+(assert (equal (array-dimensions (read-from-string "#3A(())"))
+              '(1 0 0)))
+(assert (equal (array-dimensions (read-from-string "#3A((() ()))"))
+              '(1 2 0)))
+
+;;; Bug reported by Nikodemus Siivola on sbcl-devel 2003-07-21:
+;;; package misconfiguration
+(assert (eq
+         (handler-case (with-input-from-string (s "cl:") (read s))
+           (end-of-file (c)
+             'good))
+         'good))
\ No newline at end of file