+(assert (null (class-prototype (find-class 'null))))
+\f
+;;; simple consistency checks for the SB-MOP package: all of the
+;;; functionality specified in AMOP is in functions and classes:
+(assert (null (loop for x being each external-symbol in "SB-MOP"
+ unless (or (fboundp x) (find-class x)) collect x)))
+;;; and all generic functions in SB-MOP have at least one specified
+;;; method, except for UPDATE-DEPENDENT
+(assert (null (loop for x being each external-symbol in "SB-MOP"
+ unless (or (not (fboundp x))
+ (eq x 'update-dependent)
+ (not (typep (fdefinition x) 'generic-function))
+ (> (length (generic-function-methods
+ (fdefinition x)))
+ 0))
+ collect x)))
+\f
+;;; make sure that ENSURE-CLASS-USING-CLASS's arguments are the right
+;;; way round (!)
+(defvar *e-c-u-c-arg-order* nil)
+(defmethod ensure-class-using-class :after
+ (class (name (eql 'e-c-u-c-arg-order)) &key &allow-other-keys)
+ (setf *e-c-u-c-arg-order* t))
+(defclass e-c-u-c-arg-orderoid () ())
+(assert (null *e-c-u-c-arg-order*))
+(defclass e-c-u-c-arg-order () ())
+(assert (eq *e-c-u-c-arg-order* t))
+\f
+;;; verify that FIND-CLASS works after FINALIZE-INHERITANCE
+(defclass automethod-class (standard-class) ())
+(defmethod validate-superclass ((c1 automethod-class) (c2 standard-class))
+ t)
+(defmethod finalize-inheritance :after ((x automethod-class))
+ (format t "~&~S ~S~%" x (find-class (class-name x))))
+(defclass automethod-object () ()
+ (:metaclass automethod-class))
+(defvar *automethod-object* (make-instance 'automethod-object))
+(assert (typep *automethod-object* 'automethod-object))
+\f
+;;; COMPUTE-EFFECTIVE-SLOT-DEFINITION should take three arguments, one
+;;; of which is the name of the slot.
+(defvar *compute-effective-slot-definition-count* 0)
+(defmethod compute-effective-slot-definition :before
+ (class (name (eql 'foo)) dsds)
+ (incf *compute-effective-slot-definition-count*))
+(defclass cesd-test-class ()
+ ((foo :initarg :foo)))
+(make-instance 'cesd-test-class :foo 3)
+;;; FIXME: this assertion seems a little weak. I don't know why
+;;; COMPUTE-EFFECTIVE-SLOT-DEFINITION gets called twice in this
+;;; sequence, nor whether that's compliant with AMOP. -- CSR,
+;;; 2003-04-17
+(assert (> *compute-effective-slot-definition-count* 0))