0.8.12.10: Fix bug 338: "MOP specializers as type specifiers"
[sbcl.git] / tests / stream.pure.lisp
index 127333b..6474758 100644 (file)
 ;;; the end of string and the string is adjustable the string will be
 ;;; implicitly extended, otherwise an error will be signalled. The
 ;;; latter case is provided for in the code, but not currently
-;;; excercised since SBCL fill-pointer arrays are always (currently) adjustable.
+;;; excercised since SBCL fill-pointer arrays are always (currently)
+;;; adjustable.
 ;;;
 ;;; * END will refer to the ARRAY-TOTAL-SIZE of string, not
 ;;; FILL-POINTER, since by definition the FILE-POSITION will always be
 ;;; a FILL-POINTER, so that would be of limited use.
 ;;;
-;;; * Rewinding the stream works with owerwriting semantics.
+;;; * Rewinding the stream works with overwriting semantics.
 ;;;
 #+nil (let ((str (make-array 0
                       :element-type 'character
   (frob 'character)
   (frob 'base-char)
   (frob 'nil))
+
+(with-open-file (s "/dev/null" :element-type '(signed-byte 48))
+  (assert (eq :eof (read-byte s nil :eof))))
+
+(let* ((is (make-string-input-stream "foo"))
+       (os (make-string-output-stream))
+       (s (make-echo-stream is os))
+       (sequence (copy-seq "abcdef")))
+  (assert (= (read-sequence sequence s) 3))
+  (assert (string= sequence "foodef"))
+  (assert (string= (get-output-stream-string os) "foo")))
+
+(let* ((is (make-string-input-stream "foo"))
+       (os (make-string-output-stream))
+       (s (make-echo-stream is os))
+       (sequence (copy-seq "abcdef")))
+  (assert (char= #\f (read-char s)))
+  (assert (= (read-sequence sequence s) 2))
+  (assert (string= sequence "oocdef"))
+  (assert (string= (get-output-stream-string os) "foo")))
+
+(let* ((is (make-string-input-stream "foo"))
+       (os (make-string-output-stream))
+       (s (make-echo-stream is os))
+       (sequence (copy-seq "abcdef")))
+  (assert (char= #\f (read-char s)))
+  (unread-char #\f s)
+  (assert (= (read-sequence sequence s) 3))
+  (assert (string= sequence "foodef"))
+  (assert (string= (get-output-stream-string os) "foo")))