+(deftest broadcast-stream-6
+ ;; WRITE-STRING
+ (with-sc-test-stream (synonym)
+ (let ((s (make-broadcast-stream synonym)))
+ (write-string "ab" s)
+ (force-output s))
+ (file-position synonym 0)
+ (and (char= (read-char synonym) #\a)
+ (char= (read-char synonym) #\b)))
+ T)
+
+(deftest broadcast-stream-9
+ ;; FORCE-OUTPUT (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ ;; could test more here
+ (force-output (make-broadcast-stream synonym)))
+ NIL)
+
+(deftest broadcast-stream-10
+ ;; FINISH-OUTPUT (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ ;; could test more here
+ (finish-output (make-broadcast-stream synonym)))
+ NIL)
+
+(deftest broadcast-stream-11
+ ;; STREAM-ELEMENT-TYPE (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ (eql (stream-element-type (make-broadcast-stream synonym))
+ (stream-element-type synonym)))
+ T)
+
+(deftest broadcast-stream-12
+ ;; INTERACTIVE-STREAM-P (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ (eql (interactive-stream-p (make-broadcast-stream synonym))
+ (interactive-stream-p synonym)))
+ T)
+
+(deftest broadcast-stream-13
+ ;; LINE-LENGTH (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ (eql (sb-kernel:line-length (make-broadcast-stream synonym))
+ (sb-kernel:line-length synonym)))
+ T)
+
+(deftest broadcast-stream-14
+ ;; CHARPOS (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ (eql (sb-kernel:charpos (make-broadcast-stream synonym))
+ (sb-kernel:charpos synonym)))
+ T)
+
+(deftest broadcast-stream-16
+ ;; FILE-POSITION (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ (eql (file-position (make-broadcast-stream synonym))
+ (file-position synonym)))
+ T)
+
+;; SYNONYM-STREAM tests repeated for TWO-WAY-STREAM, where applicable
+
+(deftest two-way-stream-1
+ ;; READ-CHAR
+ (with-dc-test-stream (synonym)
+ (read-char (make-two-way-stream synonym synonym)))
+ #\T)
+
+(deftest two-way-stream-2
+ ;; UNREAD-CHAR (via STREAM-MISC-DISPATCH)
+ (with-dc-test-stream (synonym)
+ (let ((s (make-two-way-stream synonym synonym)))
+ (unread-char (read-char s) s)
+ (read-char s)))
+ #\T)
+
+(deftest two-way-stream-3
+ ;; READ-BYTE
+ (with-dc-test-stream (synonym)
+ (read-byte (make-two-way-stream synonym synonym)))
+ #.(char-code #\T))
+
+(deftest two-way-stream-4
+ ;; WRITE-CHAR
+ (with-sc-test-stream (synonym)
+ (let ((s (make-two-way-stream synonym synonym)))
+ (write-char #\A s)
+ (force-output s))
+ (file-position synonym 0)
+ (read-char synonym))
+ #\A)
+
+(deftest two-way-stream-5
+ ;; WRITE-BYTE
+ (with-sc-test-stream (synonym)
+ (let ((s (make-two-way-stream synonym synonym)))
+ (write-byte 65 s)
+ (force-output s))
+ (file-position synonym 0)
+ (read-char synonym))
+ #\A)
+
+(deftest two-way-stream-6
+ ;; WRITE-STRING
+ (with-sc-test-stream (synonym)
+ (let ((s (make-two-way-stream synonym synonym)))
+ (write-string "ab" s)
+ (force-output s))
+ (file-position synonym 0)
+ (and (char= (read-char synonym) #\a)
+ (char= (read-char synonym) #\b)))
+ T)
+
+(deftest two-way-stream-7
+ ;; LISTEN (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ (let ((s (make-two-way-stream synonym synonym)))
+ (and (listen s) t)))
+ T)
+
+(deftest two-way-stream-8
+ ;; CLEAR-INPUT (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ (let ((s (make-two-way-stream synonym synonym)))
+ (clear-input s)))
+ NIL)
+
+(deftest two-way-stream-9
+ ;; FORCE-OUTPUT (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ ;; could test more here
+ (force-output (make-two-way-stream synonym synonym)))
+ NIL)
+
+(deftest two-way-stream-10
+ ;; FINISH-OUTPUT (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ ;; could test more here
+ (finish-output (make-two-way-stream synonym synonym)))
+ NIL)
+
+(deftest two-way-stream-11
+ ;; STREAM-ELEMENT-TYPE (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ (eql (stream-element-type (make-two-way-stream synonym synonym))
+ (stream-element-type synonym)))
+ T)
+
+(deftest two-way-stream-12
+ ;; INTERACTIVE-STREAM-P (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ (eql (interactive-stream-p (make-two-way-stream synonym synonym))
+ (interactive-stream-p synonym)))
+ T)
+
+(deftest two-way-stream-13
+ ;; LINE-LENGTH (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ (eql (sb-kernel:line-length (make-two-way-stream synonym synonym))
+ (sb-kernel:line-length synonym)))
+ T)
+
+(deftest two-way-stream-14
+ ;; CHARPOS (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ (eql (sb-kernel:charpos (make-two-way-stream synonym synonym))
+ (sb-kernel:charpos synonym)))
+ T)
+
+(deftest two-way-stream-16
+ ;; FILE-POSITION (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (synonym)
+ (eql (file-position (make-two-way-stream synonym synonym))
+ (file-position synonym)))
+ T)
+
+;; SYNONYM-STREAM tests repeated for ECHO-STREAM, where applicable
+
+(deftest echo-stream-1
+ ;; READ-CHAR
+ (with-dc-test-stream (*synonym*)
+ (read-char (make-echo-stream *synonym* *synonym*)))
+ #\T)
+
+(deftest echo-stream-2
+ ;; UNREAD-CHAR (via STREAM-MISC-DISPATCH)
+ (with-dc-test-stream (*synonym*)
+ (let ((s (make-echo-stream *synonym* *synonym*)))
+ (unread-char (read-char s) s)
+ (read-char s)))
+ #\T)
+
+(deftest echo-stream-3
+ ;; READ-BYTE
+ (with-dc-test-stream (*synonym*)
+ (read-byte (make-echo-stream *synonym* *synonym*)))
+ #.(char-code #\T))
+
+(deftest echo-stream-7
+ ;; LISTEN (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (let ((s (make-echo-stream *synonym* *synonym*)))
+ (and (listen s) t)))
+ T)
+
+(deftest echo-stream-8
+ ;; CLEAR-INPUT (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (let ((s (make-echo-stream *synonym* *synonym*)))
+ (clear-input s)))
+ NIL)
+
+(deftest echo-stream-11
+ ;; STREAM-ELEMENT-TYPE (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (eql (stream-element-type (make-echo-stream *synonym* *synonym*))
+ (stream-element-type *synonym*)))
+ T)
+
+(deftest echo-stream-12
+ ;; INTERACTIVE-STREAM-P (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (eql (interactive-stream-p (make-echo-stream *synonym* *synonym*))
+ (interactive-stream-p *synonym*)))
+ T)
+
+(deftest echo-stream-13
+ ;; LINE-LENGTH (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (eql (sb-kernel:line-length (make-echo-stream *synonym* *synonym*))
+ (sb-kernel:line-length *synonym*)))
+ T)
+
+(deftest echo-stream-14
+ ;; CHARPOS (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (eql (sb-kernel:charpos (make-echo-stream *synonym* *synonym*))
+ (sb-kernel:charpos *synonym*)))
+ T)
+
+(deftest echo-stream-16
+ ;; FILE-POSITION (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (eql (file-position (make-echo-stream *synonym* *synonym*))
+ (file-position *synonym*)))
+ T)
+
+;; SYNONYM-STREAM tests repeated for CONCATENATED-STREAM, where applicable
+
+(deftest concatenated-stream-1
+ ;; READ-CHAR
+ (with-dc-test-stream (*synonym*)
+ (read-char (make-concatenated-stream *synonym*)))
+ #\T)
+
+(deftest concatenated-stream-2
+ ;; UNREAD-CHAR (via STREAM-MISC-DISPATCH)
+ (with-dc-test-stream (*synonym*)
+ (let ((s (make-concatenated-stream *synonym*)))
+ (unread-char (read-char s) s)
+ (read-char s)))
+ #\T)
+
+(deftest concatenated-stream-3
+ ;; READ-BYTE
+ (with-dc-test-stream (*synonym*)
+ (read-byte (make-concatenated-stream *synonym*)))
+ #.(char-code #\T))
+
+(deftest concatenated-stream-7
+ ;; LISTEN (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (let ((s (make-concatenated-stream *synonym*)))
+ (and (listen s) t)))
+ T)
+
+(deftest concatenated-stream-8
+ ;; CLEAR-INPUT (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (let ((s (make-concatenated-stream *synonym*)))
+ (clear-input s)))
+ NIL)
+
+(deftest concatenated-stream-11
+ ;; STREAM-ELEMENT-TYPE (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (eql (stream-element-type (make-concatenated-stream *synonym*))
+ (stream-element-type *synonym*)))
+ T)
+
+(deftest concatenated-stream-12
+ ;; INTERACTIVE-STREAM-P (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (eql (interactive-stream-p (make-concatenated-stream *synonym*))
+ (interactive-stream-p *synonym*)))
+ T)
+
+(deftest concatenated-stream-13
+ ;; LINE-LENGTH (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (eql (sb-kernel:line-length (make-concatenated-stream *synonym*))
+ (sb-kernel:line-length *synonym*)))
+ T)
+
+(deftest concatenated-stream-14
+ ;; CHARPOS (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (eql (sb-kernel:charpos (make-concatenated-stream *synonym*))
+ (sb-kernel:charpos *synonym*)))
+ T)
+
+(deftest concatenated-stream-16
+ ;; FILE-POSITION (via STREAM-MISC-DISPATCH)
+ (with-sc-test-stream (*synonym*)
+ (eql (file-position (make-concatenated-stream *synonym*))
+ (file-position *synonym*)))
+ T)
+
+;; uncovered by synonym-stream-15
+
+(deftest file-simple-stream-1
+ (values (subtypep 'file-simple-stream 'file-stream))
+ T)
+
+(deftest string-simple-stream-1
+ (values (subtypep 'string-simple-stream 'string-stream))
+ T)