X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Farray.pure.lisp;h=b07f5e35a344cffc18d9f181067b682e41f52752;hb=6127c0b282bb6d7fa6d225ee91d0a601d9b82360;hp=a44193b5cc692b50deaf88277f6cd622d1fe1995;hpb=4898ef32c639b1c7f4ee13a5ba566ce6debd03e6;p=sbcl.git diff --git a/tests/array.pure.lisp b/tests/array.pure.lisp index a44193b..b07f5e3 100644 --- a/tests/array.pure.lisp +++ b/tests/array.pure.lisp @@ -209,3 +209,43 @@ collect (logand 1 (funcall lf (aref v1 i) (aref v2 i)))) 'bit-vector) do (assert (bit-vector-equal r1 r2))))) + +(with-test (:name (adjust-array fill-pointer)) + ;; CLHS, ADJUST-ARRAY: An error of type error is signaled if + ;; fill-pointer is supplied and non-nil but array has no fill pointer. + (assert (eq :good + (handler-case + (let ((array (make-array 12))) + (assert (not (array-has-fill-pointer-p array))) + (adjust-array array 12 :fill-pointer t) + array) + (type-error () + :good))))) + +(with-test (:name (adjust-array multidimensional)) + (let ((ary (make-array '(2 2)))) + ;; SBCL used to give multidimensional arrays a bogus fill-pointer + (assert (not (array-has-fill-pointer-p (adjust-array ary '(2 2))))))) + +(with-test (:name %set-fill-pointer/error) + (let ((v (make-array 3 :fill-pointer 0))) + (handler-case + (progn + (setf (fill-pointer v) 12) + (error "WTF")) + (error (e) + (assert (eql 12 (type-error-datum e))) + (assert (equal '(integer 0 3) (type-error-expected-type e))))))) + +(with-test (:name array-storage-vector) + (let ((vec (vector 1 2 3))) + (assert (eq vec (sb-ext:array-storage-vector vec))) + (assert (equalp (vector 1 2 3 4) + (sb-ext:array-storage-vector + (make-array '(2 2) :initial-contents '((1 2) (3 4)))))) + (assert (eq 'fixnum (array-element-type + (sb-ext:array-storage-vector (make-array '(3 4 5) + :element-type 'fixnum))))) + (assert (not (array-has-fill-pointer-p + (sb-ext::array-storage-vector + (make-array 5 :fill-pointer 4)))))))