[armedbear-cvs] r12658 - in trunk/abcl: . test/lisp/abcl

Erik Huelsmann ehuelsmann at common-lisp.net
Fri May 7 21:08:14 UTC 2010


Author: ehuelsmann
Date: Fri May  7 17:08:12 2010
New Revision: 12658

Log:
Close #38: Add some metaclass tests - to be expanded
upon fixing encountered issues.

Added:
   trunk/abcl/test/lisp/abcl/metaclass.lisp
Modified:
   trunk/abcl/abcl.asd

Modified: trunk/abcl/abcl.asd
==============================================================================
--- trunk/abcl/abcl.asd	(original)
+++ trunk/abcl/abcl.asd	Fri May  7 17:08:12 2010
@@ -32,6 +32,7 @@
 		     :pathname "test/lisp/abcl/" :components
                      ((:file "compiler-tests")
                       (:file "condition-tests")
+                      (:file "metaclass")
                       (:file "mop-tests-setup")
                       (:file "mop-tests" :depends-on ("mop-tests-setup"))
                       (:file "file-system-tests")

Added: trunk/abcl/test/lisp/abcl/metaclass.lisp
==============================================================================
--- (empty file)
+++ trunk/abcl/test/lisp/abcl/metaclass.lisp	Fri May  7 17:08:12 2010
@@ -0,0 +1,118 @@
+;;; metaclass.lisp
+;;;
+;;; Copyright (C) 2005 Peter Graves
+;;; $Id: misc-tests.lisp 12402 2010-01-26 11:15:48Z mevenson $
+;;;
+;;; This program is free software; you can redistribute it and/or
+;;; modify it under the terms of the GNU General Public License
+;;; as published by the Free Software Foundation; either version 2
+;;; of the License, or (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program; if not, write to the Free Software
+;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+(in-package #:abcl.test.lisp)
+
+(defclass testclass1 () ()
+  (:metaclass standard-class))
+(defclass testclass2 () ()
+  (:metaclass standard-class)
+  (:documentation "test"))
+(defclass metaclass1 (standard-class) ()
+  (:metaclass standard-class))
+(defclass metaclass2 (standard-class) ()
+  (:metaclass standard-class)
+  (:documentation "test"))
+
+(defclass testclass3 () ()
+  (:metaclass metaclass1)
+  (:documentation "test"))
+
+(deftest testclass1.instantiate
+    (not (null (make-instance 'testclass1)))
+  T)
+(deftest testclass2.instantiate
+    (not (null (make-instance 'testclass2)))
+  T)
+(deftest testclass3.instantiate
+    (not (null (make-instance 'testclass3)))
+  T)
+
+(deftest testclass1.class-of
+    (eq (class-of (make-instance 'testclass1)) (find-class 'testclass1))
+  T)
+(deftest testclass1.metaclass-of
+    (eq (class-of (class-of (make-instance 'testclass1)))
+        (find-class 'standard-class))
+  T)
+
+(deftest testclass3.metaclass-of
+    (eq (class-of (class-of (make-instance 'testclass3)))
+        (find-class 'metaclass1))
+  T)
+
+(deftest standard-class.typep.class
+    (typep (class-of (find-class 'standard-class)) 'class)
+  T)
+(deftest standard-class.typep.standard-class
+    (typep (class-of (class-of (find-class 'standard-class))) 'standard-class)
+  T)
+(deftest metaclass1.typep.class
+    (typep (find-class 'metaclass1) 'class)
+  T)
+(deftest metaclass1.typep.standard-class
+    (typep (find-class 'metaclass1) 'standard-class)
+  T)
+(deftest testclass3.class-of.typep
+    (typep (class-of (make-instance 'testclass3)) 'metaclass1)
+  T)
+(deftest testclass3.metaclass-of.typep
+    (typep (class-of (class-of (make-instance 'testclass3))) 'standard-class)
+  T)
+
+(defclass testclass4 ()
+  ((a :initarg :a :initform 3)
+   (b :initarg :b :initform 4))
+  (:metaclass metaclass1)
+  (:documentation "test"))
+
+(deftest testclass4.init-noargs
+    (slot-value (make-instance 'testclass4) 'a)
+  3)
+
+(deftest testclass4.initargs
+    (slot-value (make-instance 'testclass4 :a 2) 'a)
+  2)
+
+(defclass testclass5 ()
+  ((a :initarg :a)
+   (b :initarg :b :initform 1))
+  (:metaclass metaclass1)
+  (:default-initargs :a 5))
+
+(deftest testclass5.init-noargs
+    (slot-value (make-instance 'testclass5) 'a)
+  5)
+
+(deftest testclass5.initargs
+    (slot-value (make-instance 'testclass5 :a 3) 'a)
+  3)
+
+(defclass testclass6 ()
+  ((a :initarg :a :allocation :class))
+  (:metaclass metaclass1)
+  (:documentation "test"))
+
+(deftest testclass6.1
+    (let ((instance1 (make-instance 'testclass6 :a 3))
+          (instance2 (make-instance 'testclass6 :a 4)))
+      (slot-value instance1 'a))
+  4)
+
+




More information about the armedbear-cvs mailing list