;;; way to make an automated test:
;;; (LET ((*PRINT-CIRCLE* T)) (DESCRIBE (MAKE-HASH-TABLE)))
+;;; bug 263: :PREFIX, :PER-LINE-PREFIX and :SUFFIX arguments of
+;;; PPRINT-LOGICAL-BLOCK may be complex strings
+(let ((list '(1 2 3))
+ (prefix (make-array 2
+ :element-type 'character
+ :displaced-to ";x"
+ :fill-pointer 1))
+ (suffix (make-array 2
+ :element-type 'character
+ :displaced-to ">xy"
+ :displaced-index-offset 1
+ :fill-pointer 1)))
+ (assert (equal (with-output-to-string (s)
+ (pprint-logical-block (s list
+ :per-line-prefix prefix
+ :suffix suffix)
+ (format s "~{~W~^~:@_~}" list)))
+ (format nil ";1~%~
+ ;2~%~
+ ;3x"))))
+
+;;; bug 141b: not enough care taken to disambiguate ,.FOO and ,@FOO
+;;; from , .FOO and , @FOO
+(assert (equal
+ (with-output-to-string (s)
+ (write '`(, .foo) :stream s :pretty t :readably t))
+ "`(, .FOO)"))
+(assert (equal
+ (with-output-to-string (s)
+ (write '`(, @foo) :stream s :pretty t :readably t))
+ "`(, @FOO)"))
+(assert (equal
+ (with-output-to-string (s)
+ (write '`(, ?foo) :stream s :pretty t :readably t))
+ "`(,?FOO)"))
+
;;; success
(quit :unix-status 104)