r5450: *** empty log message ***
[xlunit.git] / tests.lisp
index 9f2302adb23af5263f0a1aab3fa71b21c6344218..555b6acd382cca5a50d34f4dedf6be453e743ea1 100644 (file)
@@ -2,21 +2,84 @@
 ;;;; *************************************************************************
 ;;;; FILE IDENTIFICATION
 ;;;;
-;;;; Name:        tests.lisp
-;;;; Purpose:     Test suite for XLTest
-;;;; Author:     Kevin Rosenberg
+;;;; Id:      $Id: tests.lisp,v 1.5 2003/08/04 12:16:13 kevin Exp $
+;;;; Purpose: Test suite for XLUnit
 ;;;;
-;;;; Put in public domain by Kevin Rosenberg
-;;;; $Id: tests.lisp,v 1.1 2003/08/04 06:00:01 kevin Exp $
 ;;;; *************************************************************************
 
-(defpackage #:xltest-tests
-  (:use #:cl #:xltest))
+(defpackage #:xlunit-tests
+  (:use #:cl #:xlunit))
 
-(in-package #:xltest-tests)
+(in-package #:xlunit-tests)
 
-(defclass xltests (test-fixture)
-  ()
-  )
 
-(defmethod xltes
+;; Helper test fixture
+(defclass was-run (test-fixture)
+  ((log :accessor ws-log)))
+
+(defmethod setup ((self was-run))
+  (setf (ws-log self) "setup "))
+
+(defmethod teardown ((self was-run))
+  (setf (ws-log self) (concatenate 'string (ws-log self) "teardown ")))
+
+(defmethod test-method ((self was-run))
+  (setf (ws-log self) (concatenate 'string (ws-log self) "test-method ")))
+
+(defmethod test-broken-method ((self was-run))
+  (assert-equal pi (/ 22 7)))
+
+(defmethod test-error-method ((self was-run))
+  (error "Err"))
+
+;;; Main test fixture
+
+(defclass test-case-test (test-fixture)
+  ())
+
+(defmethod test-template-method ((self test-case-test))
+  (let ((test (make-test 'was-run 'test-method)))
+    (run-test test)
+    (assert-equal (ws-log test) "setup test-method teardown ")))
+
+(defmethod test-result ((self test-case-test))
+  (assert-equal "1 run, 0 erred, 0 failed" 
+               (summary (run-test (make-test 'was-run 'test-method)))))
+
+(defmethod test-fn ((self test-case-test))
+  (let ((test (make-test 'was-run '"Test Failure"
+                        :test-fn
+                        (lambda (test) 
+                          (declare (ignore test))
+                          (assert-equal 10 10)))))
+    (assert-equal "1 run, 0 erred, 0 failed"
+                 (summary (run-test test)))))
+
+(defmethod test-failed-result ((self test-case-test))
+  (assert-equal "1 run, 0 erred, 1 failed"
+               (summary (run-test
+                         (make-test 'was-run 'test-broken-method)))))
+
+(defmethod test-error-result ((self test-case-test))
+  (assert-equal "1 run, 1 erred, 0 failed"
+               (summary (run-test
+                         (make-test 'was-run 'test-error-method)))))
+  
+(defmethod test-suite ((self test-case-test))
+  (let ((suite (make-test-suite "TestSuite"))
+       (result (make-test-result)))
+    (add-test (make-test 'was-run 'test-method) suite)
+    (add-test (make-test 'was-run 'test-broken-method) suite)
+    (run-test suite :result result)
+    (assert-equal "2 run, 0 erred, 1 failed" (summary result))))
+
+(defmethod test-dynamic-suite ((self test-case-test))
+  (assert-equal "3 run, 1 erred, 1 failed" 
+               (summary (run-test (make-test-suite 'was-run)))))
+
+(text-testrunner (make-test-suite 'test-case-test) :handle-errors nil)
+
+(defun do-tests ()
+  (or (was-successful 
+       (run-test (make-test-suite 'test-case-test)))
+      (error "Failed tests")))