X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fpprint.impure.lisp;h=4f10bd01c1e91b00058203c84cd2cad846d31660;hb=d7875c296a4988e9f27e2776237884deb1984c62;hp=e59458fcd43bc4a04b7c9504ce5c04e77a0969dd;hpb=989f5a77df0dbf4557eda6fb92c4365e19818598;p=sbcl.git diff --git a/tests/pprint.impure.lisp b/tests/pprint.impure.lisp index e59458f..4f10bd0 100644 --- a/tests/pprint.impure.lisp +++ b/tests/pprint.impure.lisp @@ -269,5 +269,39 @@ (pprint-newline :mandatory s))) n))))) +(with-test (:name :can-restore-orig-pprint-dispatch-table) + (let* ((orig (pprint-dispatch 'some-symbol)) + (alt (lambda (&rest args) (apply orig args)))) + (set-pprint-dispatch 'symbol alt) + (assert (eq alt (pprint-dispatch 'some-symbol))) + (setf *print-pprint-dispatch* (copy-pprint-dispatch nil)) + (assert (eq orig (pprint-dispatch 'some-symbol))) + (assert (not (eq alt orig))))) + +(with-test (:name :pprint-improper-list) + (let* ((max-length 10) + (stream (make-broadcast-stream)) + (errors + (loop for symbol being the symbol in :cl + nconc + (loop for i from 1 below max-length + for list = (cons symbol 10) then (cons symbol list) + when (nth-value 1 (ignore-errors (pprint list stream))) + collect (format nil "(~{~a ~}~a . 10)" (butlast list) symbol))))) + (when errors + (error "Can't PPRINT imporper lists: ~a" errors)))) + +(with-test (:name :pprint-circular-backq-comma) + ;; LP 1161218 reported by James M. Lawrence + (let ((string (write-to-string '(let ((#1=#:var '(99))) + `(progn ,@(identity #1#))) + :circle t :pretty t))) + (assert (not (search "#2#" string))))) + +(with-test (:name :pprint-dotted-setf) + (let ((*print-pretty* t)) + (equal (format nil "~a" '(setf . a)) + "(SETF . A)"))) + ;;; success