chiark / gitweb /
doc/concepts.tex: Typeset method rĂ´le names as identifiers.
[sod] / src / test-base.lisp
index 6e020cba09339aaf30ed8edbe4c6780d934c1d9d..915e33ded88cc440b1e85ed0422c6b0a3a2e913c 100644 (file)
@@ -7,7 +7,7 @@
 
 ;;;----- Licensing notice ---------------------------------------------------
 ;;;
-;;; This file is part of the Sensble Object Design, an object system for C.
+;;; This file is part of the Sensible Object Design, an object system for C.
 ;;;
 ;;; SOD is free software; you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -45,14 +45,34 @@ (defvar *sod-test-suite*
                 :description "Top-level test for the Sod translator."))
 
 (defun assert-princ (object string)
-  (let ((*print-right-margin* 77)
-       (print (princ-to-string object)))
+  (let* ((*print-right-margin* 77)
+        (*print-pretty* t)
+        (print (princ-to-string object)))
     (assert-equal print string
                  (format nil "Assert princ: ~S ~_prints as `~A' ~_~
                               rather than `~A'."
                          object print string))))
 
-(defun run-tests ()
-  (textui-test-run *sod-test-suite*))
+(defclass base-test (test-case) ())
+(add-test *sod-test-suite* (get-suite base-test))
+
+(defun run-tests (&optional which)
+  (textui-test-run (acond
+                    ((null which) *sod-test-suite*)
+                    ((labels ((dredge (suite)
+                                (cond
+                                  ((typep suite 'test-suite)
+                                   (some #'dredge (tests suite)))
+                                  ((eq (xlunit::name suite) which)
+                                   suite)
+                                  (t
+                                   nil))))
+                       (dredge *sod-test-suite*))
+                     it)
+                    ((find-class which nil)
+                     (suite (make-instance it)))
+                    (t
+                     (error "Don't know how to turn ~S into a test suite"
+                            which)))))
 
 ;;;----- That's all, folks --------------------------------------------------