X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fprint.impure.lisp;h=4f1b3f54431a4df7ffae81b038cb5b1d6c58df10;hb=ed891a4fd882d1b9fe066ab14bcf2107aea95baa;hp=6d8072f0d91539a34a5f4fd89bdb11c36e4e974a;hpb=e15ca902a6c4eb6e4695e71400edbbd57c5e57cd;p=sbcl.git diff --git a/tests/print.impure.lisp b/tests/print.impure.lisp index 6d8072f..4f1b3f5 100644 --- a/tests/print.impure.lisp +++ b/tests/print.impure.lisp @@ -416,4 +416,21 @@ ;;; This used to trigger an AVER instead. (assert (raises-error? (format t "~>") sb-format:format-error)) +;;; readably printing hash-tables, check for circularity +(let ((x (cons 1 2)) + (h (make-hash-table)) + (*print-readably* t) + (*print-circle* t) + (*read-eval* t)) + (setf (gethash x h) h) + (destructuring-bind (x2 . h2) (read-from-string (write-to-string (cons x h))) + (assert (equal x x2)) + (assert (eq h2 (gethash x2 h2))))) + +;;; an off-by-one error in the ~R format directive until 1.0.15.20 +;;; prevented printing cardinals and ordinals between (expt 10 63) and +;;; (1- (expt 10 66)) +(assert (string= (format nil "~R" (expt 10 63)) "one vigintillion")) +(assert (string= (format nil "~:R" (expt 10 63)) "one vigintillionth")) + ;;; success