Update domain name to kpe.io
[xlunit.git] / tests.lisp
index 9e4d4b7fcfd5f5d83aacb53b5412960854c23296..06f4a0b81a3e95f248f6fb726caf7af2b1c789fc 100644 (file)
 ;;;; *************************************************************************
 ;;;; FILE IDENTIFICATION
 ;;;;
-;;;; Name:        tests.lisp
-;;;; Purpose:     Test suite for XLTest
-;;;; Author:     Kevin Rosenberg
+;;;; Id:      $Id$
+;;;; Purpose: Self Test suite for XLUnit
 ;;;;
-;;;; Put in public domain by Kevin Rosenberg
-;;;; $Id: tests.lisp,v 1.2 2003/08/04 09:46:44 kevin Exp $
 ;;;; *************************************************************************
 
-(defpackage #:xltest-tests
-  (:use #:cl #:xltest))
+(in-package #:cl-user)
+(defpackage #:xlunit-tests
+  (:use #:cl #:xlunit)
+  (:export #:do-tests))
+(in-package #:xlunit-tests)
 
-(in-package #:xltest-tests)
+(define-condition test-condition (error)
+  ())
 
-(defclass was-run (test-fixture)
+
+;; Helper test fixture
+
+(defclass was-run (test-case)
   ((log :accessor ws-log)))
 
+(defmethod set-up ((self was-run))
+    (setf (ws-log self) "setup "))
 
-(defmethod setup ((self was-run))
-  (setf (ws-log self) "setup "))
+(defmethod tear-down ((self was-run))
+  (setf (ws-log self)
+        (concatenate 'string (ws-log self) "teardown ")))
 
-(defmethod teardown ((self was-run))
-  (setf (ws-log self) (concatenate 'string (ws-log self) "teardown ")))
+(def-test-method test-method ((self was-run) :run nil)
+    (setf (ws-log self)
+      (concatenate 'string (ws-log self) "test-method ")))
 
-(defmethod test-method ((self was-run))
-  (setf (ws-log self) (concatenate 'string (ws-log self) "test-method ")))
+(def-test-method test-broken-method ((self was-run) :run nil)
+    (assert-equal pi (/ 22 7)))
 
-(defmethod test-broken-method ((self was-run))
-  (assert-equal pi (/ 22 7)))
+(def-test-method test-not-eql ((self was-run) :run nil)
+    (assert-not-eql (cons t t) (cons t t)))
 
-(defmethod test-error-method ((self was-run))
-  (error "Err"))
+(def-test-method test-eql ((self was-run) :run nil)
+    (let ((obj (cons t t)))
+      (assert-eql obj obj)))
 
-(defclass test-case-test (test-fixture)
-  ((result :accessor result)))
+(def-test-method test-error-method ((self was-run) :run nil)
+    (error "Err"))
 
-(defmethod setup ((self test-case-test))
-  (setf (result self) (make-instance 'test-result)))
+(def-test-method test-condition-without-cond ((self was-run) :run nil)
+  (assert-condition 'error (list 'no-error)))
 
-(defmethod test-template-method ((self test-case-test))
-  (let ((test (make-test 'was-run 'test-method)))
-    (run-test test (result self))
-    (assert-equal (ws-log test) "setup test-method teardown ")))
+#+ignore
+(def-test-method test-not-condition-with-cond ((self was-run) :run nil)
+  (assert-not-condition 'test-condition
+                        (signal 'test-condition)))
+
+
+;;; Second helper test case
+
+(defclass test-two-cases (test-case)
+  ())
 
-(defmethod test-result ((self test-case-test))
-  (let ((test (make-test 'was-run 'test-method)))
-    (run-test test (result self))
-    (assert-equal "1 run, 0 errored, 0 failed" (summary (result self)))))
-
-(defmethod test-thunk ((self test-case-test))
-  (let ((test (make-test 'was-run '"Test Failure"
-                        :test-thunk
-                        (lambda (test) 
-                          (declare (ignore test))
-                          (assert-equal 10 10)))))
-    (run-test test (result self))
-    (assert-equal "1 run, 0 errored, 0 failed"
-                 (summary (result self)))))
-
-(defmethod test-failed-result ((self test-case-test))
-  (let ((test (make-test 'was-run 'test-broken-method)))
-    (run-test test (result self))
-    (assert-equal "1 run, 0 errored, 1 failed"
-                 (summary (result self)))))
-
-(defmethod test-error-result ((self test-case-test))
-  (let ((test (make-test 'was-run 'test-error-method)))
-    (run-test test (result self))
-    (assert-equal "1 run, 1 errored, 0 failed"
-                 (summary (result self)))))
-
-(defmethod test-suite ((self test-case-test))
-  (let ((suite (make-test-suite "TestSuite")))
-    (add-test (make-test 'was-run 'test-method) suite)
-    (add-test (make-test 'was-run 'test-broken-method) suite)
-    (run-test suite (result self)))
-  (assert-equal "2 run, 0 errored, 1 failed" 
-               (summary (result self))))
-
-(defmethod test-dynamic-suite ((self test-case-test))
-  (let ((suite (make-test-suite 'was-run)))
-    (run-test suite (result self)))
-  (assert-equal "3 run, 1 errored, 1 failed" 
-               (summary (result self))))
-
-(text-testrunner (make-test-suite 'test-case-test))
+(def-test-method test-1 ((self test-two-cases) :run nil)
+    (assert-true t))
+
+(def-test-method test-2 ((self test-two-cases) :run nil)
+    (assert-false nil))
+
+;;; Main test fixture
+
+(defclass test-case-test (test-case)
+  ())
+
+
+(def-test-method test-template-method ((self test-case-test) :run nil)
+  (let ((test (named-test 'test-method (get-suite was-run))))
+    (run test)
+    (assert-equal (ws-log test) "setup test-method teardown ")))
 
+(def-test-method test-results ((self test-case-test) :run nil)
+  (assert-equal "1 run, 0 erred, 0 failed"
+                (summary (run (named-test 'test-method
+                                          (get-suite was-run))))))
+
+(def-test-method test-eql ((self test-case-test) :run nil)
+  (assert-equal "1 run, 0 erred, 0 failed"
+                (summary (run (named-test 'test-eql (get-suite was-run))))))
+
+(def-test-method test-not-eql ((self test-case-test) :run nil)
+  (assert-equal "1 run, 0 erred, 0 failed"
+                (summary (run (named-test 'test-not-eql
+                                          (get-suite was-run))))))
+
+(def-test-method test-fn ((self test-case-test) :run nil)
+  (let ((test (make-instance 'test-case :name 'test-fn
+                              :method-body
+                              (lambda ()
+                                (declare (ignore test))
+                                (assert-equal 10 10)))))
+    (assert-equal "1 run, 0 erred, 0 failed"
+                  (summary (run test)))))
+
+(def-test-method test-failed-result ((self test-case-test) :run nil)
+  (assert-equal "1 run, 0 erred, 1 failed"
+                (summary (run
+                          (named-test 'test-broken-method
+                                      (get-suite was-run))))))
+
+(def-test-method test-error-result ((self test-case-test) :run nil)
+    (assert-equal "1 run, 1 erred, 0 failed"
+                  (summary (run
+                            (named-test 'test-error-method
+                                        (get-suite was-run))))))
+
+(def-test-method test-suite ((self test-case-test) :run nil)
+  (let ((suite (make-instance 'test-suite))
+        (result (make-test-results)))
+    (add-test suite (named-test 'test-method (get-suite was-run)))
+    (add-test suite (named-test 'test-broken-method (get-suite was-run)))
+    (run-on-test-results suite result)
+    (assert-equal "2 run, 0 erred, 1 failed" (summary result))))
+
+(def-test-method test-dynamic-suite ((self test-case-test) :run nil)
+  (assert-equal "2 run, 0 erred, 0 failed"
+                (summary (run (get-suite test-two-cases)))))
+
+(def-test-method test-condition ((self test-case-test) :run nil)
+  (assert-condition
+   'test-condition
+   (error 'test-condition)))
+
+(def-test-method test-condition-without-cond ((self test-case-test)
+                                              :run nil)
+  (assert-equal "1 run, 0 erred, 1 failed"
+                (summary (run
+                          (named-test 'test-condition-without-cond
+                                      (get-suite was-run))))))
+
+#+ignore
+(def-test-method test-not-condition ((self test-case-test) :run nil)
+  (assert-not-condition
+   'test-condition
+   (progn)))
+
+#+ignore
+(def-test-method test-not-condition-with-cond ((self test-case-test)
+                                              :run nil)
+  (assert-equal "1 run, 0 erred, 1 failed"
+                (summary (run
+                          (named-test 'test-not-condition-with-cond
+                                      (get-suite was-run))))))
+
+#+ignore
+(textui-test-run (get-suite test-case-test))
+
+
+(defun do-tests ()
+  (or (was-successful (run (get-suite test-case-test)))
+      (error "Failed tests")))