0.8.16.16:
[sbcl.git] / tests / dump.impure-cload.lisp
index 6017d0b..d5854ce 100644 (file)
                                       :fill-pointer 2
                                       :element-type 'character))
 
+;;; SBCL 0.7.8 incorrectly read high bits of (COMPLEX DOUBLE-FLOAT)
+;;; components as unsigned bytes.
+(defparameter *numbers*
+  '(-1s0 -1f0 -1d0 -1l0
+    #c(-1s0 -1s0) #c(-1f0 -1f0) #c(-1d0 -1d0) #c(-1l0 -1l0)))
+\f
+;;; tests for MAKE-LOAD-FORM-SAVING-SLOTS
+(eval-when (:compile-toplevel :load-toplevel :execute)
+  (defstruct savable-structure
+    (a nil :type symbol)
+    (b nil :type symbol :read-only t)
+    (c nil :read-only t)
+    (d 0 :type fixnum)
+    (e 17 :type (unsigned-byte 32) :read-only t))
+  (defmethod make-load-form ((s savable-structure) &optional env)
+    (make-load-form-saving-slots s :environment env)))
+(defparameter *savable-structure*
+  #.(make-savable-structure :a t :b 'frob :c 1 :d 39 :e 19))
+(assert (eql (savable-structure-a *savable-structure*) t))
+(assert (eql (savable-structure-b *savable-structure*) 'frob))
+(assert (eql (savable-structure-c *savable-structure*) 1))
+(assert (eql (savable-structure-d *savable-structure*) 39))
+(assert (eql (savable-structure-e *savable-structure*) 19))
+\f
+;;; ensure that we can dump and reload specialized arrays whose element
+;;; size is smaller than a byte (caused a few problems circa SBCL
+;;; 0.8.14.4)
+
+(defvar *1-bit* #.(make-array 5 :element-type 'bit :initial-element 0))
+(defvar *2-bit* #.(make-array 5 :element-type '(unsigned-byte 2) :initial-element 0))
+(defvar *4-bit* #.(make-array 5 :element-type '(unsigned-byte 4) :initial-element 1))
+\f
+;;; tests for constant coalescing (and absence of such) in the
+;;; presence of strings.
+(progn
+  (defvar *character-string-1* #.(make-string 5 :initial-element #\a))
+  (defvar *character-string-2* #.(make-string 5 :initial-element #\a))
+  (assert (eq *character-string-1* *character-string-2*))
+  (assert (typep *character-string-1* '(simple-array character (5)))))
+
+(progn
+  (defvar *base-string-1*
+    #.(make-string 5 :initial-element #\b :element-type 'base-char))
+  (defvar *base-string-2*
+    #.(make-string 5 :initial-element #\b :element-type 'base-char))
+  (assert (eq *base-string-1* *base-string-2*))
+  (assert (typep *base-string-1* '(simple-base-string 5))))
+
+#-#.(cl:if (cl:subtypep 'cl:character 'cl:base-char) '(and) '(or))
+(progn
+  (defvar *base-string*
+    #.(make-string 5 :element-type 'base-char :initial-element #\x))
+  (defvar *character-string*
+    #.(make-string 5 :initial-element #\x))
+  (assert (not (eq *base-string* *character-string*)))
+  (assert (typep *base-string* 'base-string))
+  (assert (typep *character-string* '(vector character))))
+\f
 (sb-ext:quit :unix-status 104) ; success