;-*- Mode:     Lisp -*-
;;;; Author:   Paul Dietz
;;;; Created:  Sat May 17 08:12:35 2003
;;;; Contains: Tests of MAKE-INSTANCES-OBSOLETE



(defclass make-instances-obsolete-class-01 ()
  ((a :initarg :a)
   (b :initarg :b :allocation :class)
   (c :initarg :c :initform 'abc)
   (d :initarg :d :type fixnum :initform 0)))

(deftest make-instances-obsolete.1
  (let* ((class-designator 'make-instances-obsolete-class-01)
         (class (find-class class-designator))
         (obj (make-instance class :a 'x :b 'y :c 'z :d 17)))
    (values
     (eqt (class-of obj) class)
     (map-slot-value obj '(a b c d))
     (let ((val (make-instances-obsolete class)))
       (or (eqt val class-designator)
           (eqt val class)))
     (map-slot-value obj '(a b c d))))
  t (x y z 17) t (x y z 17))

(deftest make-instances-obsolete.2
  (let* ((class-designator 'make-instances-obsolete-class-01)
         (class (find-class class-designator))
         (obj (make-instance class :a 'x :b 'y :c 'z :d 17)))
    (values
     (eqt (class-of obj) class)
     (map-slot-value obj '(a b c d))
     (let ((val (make-instances-obsolete class-designator)))
       (or (eqt val class-designator)
           (eqt val class)))
     (map-slot-value obj '(a b c d))))
  t (x y z 17) t (x y z 17))

;;; Error cases

(deftest make-instances-obsolete.error.1
  (signals-error (make-instances-obsolete) program-error)
  t)

(deftest make-instances-obsolete.error.2
  (signals-error (make-instances-obsolete
                   (find-class 'make-instances-obsolete-class-01)
                   nil)
                 program-error)
  t)
