+
+(with-test (:name (:typep :character-set :negation))
+ (flet ((generate-chars ()
+ (loop repeat 100
+ collect (code-char (random char-code-limit)))))
+ (dotimes (i 1000)
+ (let* ((chars (generate-chars))
+ (type `(member ,@chars))
+ (not-type `(not ,type)))
+ (dolist (char chars)
+ (assert (typep char type))
+ (assert (not (typep char not-type))))
+ (let ((other-chars (generate-chars)))
+ (dolist (char other-chars)
+ (unless (member char chars)
+ (assert (not (typep char type)))
+ (assert (typep char not-type)))))))))
+
+(with-test (:name (:check-type :store-value :complex-place))
+ (let ((a (cons 0.0 2))
+ (handler-invoked nil))
+ (handler-bind ((error
+ (lambda (c)
+ (declare (ignore c))
+ (assert (not handler-invoked))
+ (setf handler-invoked t)
+ (invoke-restart 'store-value 1))))
+ (check-type (car a) integer))
+ (assert (eql (car a) 1))))
+
+
+
+