r5459: *** empty log message ***
authorKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 5 Aug 2003 23:00:28 +0000 (23:00 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 5 Aug 2003 23:00:28 +0000 (23:00 +0000)
symbols.lisp

index a61932785988967f169385fdb09baa005ffb2b80..12da177a1811d13941506040821540a6dd0a9045 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Apr 2000
 ;;;;
-;;;; $Id: symbols.lisp,v 1.4 2003/07/19 20:32:48 kevin Exp $
+;;;; $Id: symbols.lisp,v 1.5 2003/08/05 23:00:28 kevin Exp $
 ;;;;
 ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
        (format t "~&Function ~S~T -> ~S~%"
                sym
                (symbol-function sym))))))
+
+(defun find-test-generic-functions (instance)
+  "Return a list of symbols for generic functions specialized on the
+class of an instance and whose name begins with the string 'test-'"
+  (let ((res)
+       (package (symbol-package (class-name (class-of instance)))))
+    (do-symbols (s package)
+      (multiple-value-bind (sym status)
+         (find-symbol (symbol-name s) package)
+       (when (and (or (eq status :external)
+                      (eq status :internal))
+                  (fboundp sym)
+                  (eq (symbol-package sym) package)
+                  (> (length (symbol-name sym)) 5)
+                  (string-equal "test-" (subseq (symbol-name sym) 0 5))
+                  (typep (symbol-function sym) 'generic-function)
+                  (plusp 
+                   (length 
+                    (compute-applicable-methods 
+                     (ensure-generic-function sym)
+                     (list instance)))))
+         (push sym res))))
+    (nreverse res)))
+
+(defun run-tests-for-instance (instance)
+  (dolist (gf-name(find-test-generic-functions instance))
+    (funcall gf-name instance))
+  (values))