X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Farray.pure.lisp;h=fe9c4f083c418008eb787f32667a384dc4404b86;hb=d8659f1e656234e8f0f47d5295b503dd6cff4aba;hp=f8ed9f530e2c0e64e6d50e1ad0dbda7865345c42;hpb=71e56a3ec29476514c3cdf57a7ac60a3d9733f1d;p=sbcl.git diff --git a/tests/array.pure.lisp b/tests/array.pure.lisp index f8ed9f5..fe9c4f0 100644 --- a/tests/array.pure.lisp +++ b/tests/array.pure.lisp @@ -220,3 +220,26 @@ array) (type-error () :good)))) + +;;; SIMPLE-VECTOR-COMPARE-AND-SWAP + +(let ((v (vector 1))) + ;; basics + (assert (eql 1 (sb-kernel:simple-vector-compare-and-swap v 0 1 2))) + (assert (eql 2 (sb-kernel:simple-vector-compare-and-swap v 0 1 3))) + (assert (eql 2 (svref v 0))) + ;; bounds + (multiple-value-bind (res err) + (ignore-errors (sb-kernel:simple-vector-compare-and-swap v -1 1 2)) + (assert (not res)) + (assert (typep err 'type-error))) + (multiple-value-bind (res err) + (ignore-errors (sb-kernel:simple-vector-compare-and-swap v 1 1 2)) + (assert (not res)) + (assert (typep err 'type-error)))) + +;; type of the first argument +(multiple-value-bind (res err) + (ignore-errors (sb-kernel:simple-vector-compare-and-swap "foo" 1 1 2)) + (assert (not res)) + (assert (typep err 'type-error)))