;-*- Mode:     Lisp -*-
;;;; Author:   Paul Dietz
;;;; Created:  Sun Jun 15 12:05:47 2003
;;;; Contains: Tests of CLASS-NAME



;;; This is mostly tested elsewhere.

(deftest class-name.1
  (class-name (find-class 'symbol))
  symbol)

(defclass class-name-class-01 () (a b c))

(report-and-ignore-errors
 (eval '(defmethod class-name ((x class-name-class-01)) 'silly)))

(deftest class-name.2
  (class-name (make-instance 'class-name-class-01))
  silly)

;; Tests of (setf class-name)

(deftest setf-class-name.1
  (typep* #'(setf class-name) 'standard-generic-function)
  t)

(deftest setf-class-name.2
  (let ((sym (gensym))
        (newsym (gensym)))
    (eval `(defclass ,sym () (a b c)))
    (let ((class (find-class sym)))
      (values
       (eqlt (class-name class) sym)
       (equalt
        (multiple-value-list (setf (class-name (find-class sym)) newsym))
        (list newsym))
       (eqlt newsym (class-name class)))))
  t t t)


;;; Error tests

(deftest class-name.error.1
  (signals-error (class-name) program-error)
  t)

(deftest class-name.error.2
  (signals-error (class-name (find-class 'symbol) nil)
                 program-error)
  t)
