r5450: *** empty log message ***
[xlunit.git] / tests.lisp
1 ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
4 ;;;;
5 ;;;; Id:      $Id: tests.lisp,v 1.5 2003/08/04 12:16:13 kevin Exp $
6 ;;;; Purpose: Test suite for XLUnit
7 ;;;;
8 ;;;; *************************************************************************
9
10 (defpackage #:xlunit-tests
11   (:use #:cl #:xlunit))
12
13 (in-package #:xlunit-tests)
14
15
16 ;; Helper test fixture
17 (defclass was-run (test-fixture)
18   ((log :accessor ws-log)))
19
20 (defmethod setup ((self was-run))
21   (setf (ws-log self) "setup "))
22
23 (defmethod teardown ((self was-run))
24   (setf (ws-log self) (concatenate 'string (ws-log self) "teardown ")))
25
26 (defmethod test-method ((self was-run))
27   (setf (ws-log self) (concatenate 'string (ws-log self) "test-method ")))
28
29 (defmethod test-broken-method ((self was-run))
30   (assert-equal pi (/ 22 7)))
31
32 (defmethod test-error-method ((self was-run))
33   (error "Err"))
34
35 ;;; Main test fixture
36
37 (defclass test-case-test (test-fixture)
38   ())
39
40 (defmethod test-template-method ((self test-case-test))
41   (let ((test (make-test 'was-run 'test-method)))
42     (run-test test)
43     (assert-equal (ws-log test) "setup test-method teardown ")))
44
45 (defmethod test-result ((self test-case-test))
46   (assert-equal "1 run, 0 erred, 0 failed" 
47                 (summary (run-test (make-test 'was-run 'test-method)))))
48
49 (defmethod test-fn ((self test-case-test))
50   (let ((test (make-test 'was-run '"Test Failure"
51                          :test-fn
52                          (lambda (test) 
53                            (declare (ignore test))
54                            (assert-equal 10 10)))))
55     (assert-equal "1 run, 0 erred, 0 failed"
56                   (summary (run-test test)))))
57
58 (defmethod test-failed-result ((self test-case-test))
59   (assert-equal "1 run, 0 erred, 1 failed"
60                 (summary (run-test
61                           (make-test 'was-run 'test-broken-method)))))
62
63 (defmethod test-error-result ((self test-case-test))
64   (assert-equal "1 run, 1 erred, 0 failed"
65                 (summary (run-test
66                           (make-test 'was-run 'test-error-method)))))
67   
68 (defmethod test-suite ((self test-case-test))
69   (let ((suite (make-test-suite "TestSuite"))
70         (result (make-test-result)))
71     (add-test (make-test 'was-run 'test-method) suite)
72     (add-test (make-test 'was-run 'test-broken-method) suite)
73     (run-test suite :result result)
74     (assert-equal "2 run, 0 erred, 1 failed" (summary result))))
75
76 (defmethod test-dynamic-suite ((self test-case-test))
77   (assert-equal "3 run, 1 erred, 1 failed" 
78                 (summary (run-test (make-test-suite 'was-run)))))
79
80 (text-testrunner (make-test-suite 'test-case-test) :handle-errors nil)
81
82 (defun do-tests ()
83   (or (was-successful 
84        (run-test (make-test-suite 'test-case-test)))
85       (error "Failed tests")))