r5455: *** 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.9 2003/08/04 19:31:34 kevin Exp $
6 ;;;; Purpose: Test suite for XLUnit
7 ;;;;
8 ;;;; *************************************************************************
9
10 (in-package #:cl-user)
11 (defpackage #:xlunit-tests
12   (:use #:cl #:xlunit)
13   (:export #:do-tests))
14 (in-package #:xlunit-tests)
15
16
17 ;; Helper test fixture
18
19 (defclass was-run (test-case)
20   ((log :accessor ws-log)))
21
22 (defmethod set-up ((self was-run))
23     (setf (ws-log self) "setup "))
24
25 (defmethod tear-down ((self was-run))
26   (setf (ws-log self)
27         (concatenate 'string (ws-log self) "teardown ")))
28
29 (def-test-method (test-method self was-run :run nil)
30     (setf (ws-log self) 
31       (concatenate 'string (ws-log self) "test-method ")))
32
33 (def-test-method (test-broken-method self was-run :run nil)
34     (assert-equal pi (/ 22 7)))
35
36 (def-test-method (test-error-method self was-run :run nil)
37     (error "Err"))
38
39
40 ;;; Main test fixture
41
42 (defclass test-case-test (test-case)
43   ())
44
45
46 (def-test-method (test-template-method self test-case-test :run nil)
47   (let ((test (named-test 'test-method (get-suite was-run))))
48     (run test)
49     (assert-equal (ws-log test) "setup test-method teardown ")))
50
51 (def-test-method (test-results self test-case-test :run nil)
52   (assert-equal "1 run, 0 erred, 0 failed" 
53                 (summary (run (named-test 'test-method (get-suite was-run))))))
54
55 (def-test-method (test-fn self test-case-test :run nil)
56   (let ((test (make-instance 'test-case :name 'test-fn
57                               :method-body
58                               (lambda () 
59                                 (declare (ignore test))
60                                 (assert-equal 10 10)))))
61     (assert-equal "1 run, 0 erred, 0 failed"
62                   (summary (run test)))))
63
64 (def-test-method (test-failed-result self test-case-test :run nil)
65   (assert-equal "1 run, 0 erred, 1 failed"
66                 (summary (run-test
67                           (named-test 'test-broken-method (get-suite was-run))))))
68
69 (def-test-method (test-error-result self test-case-test :run nil)
70     (assert-equal "1 run, 1 erred, 0 failed"
71                   (summary (run-test
72                             (named-test 'test-error-method
73                                         (get-suite was-run))))))
74   
75 (def-test-method (test-suite self test-case-test :run nil)
76   (let ((suite (make-instance 'test-suite))
77         (result (make-test-results)))
78     (add-test suite (named-test 'test-method (get-suite was-run)))
79     (add-test suite (named-test 'test-broken-method (get-suite was-run)))
80     (run-on-test-results suite result)
81     (assert-equal "2 run, 0 erred, 1 failed" (summary result))))
82
83 (def-test-method (test-dynamic-suite self test-case-test :run nil)
84   (assert-equal "3 run, 1 erred, 1 failed" 
85                 (summary (run (get-suite was-run)))))
86
87
88 (textui-test-run (get-suite test-case-test))
89
90
91 (defun do-tests ()
92   (or (was-successful (run (get-suite test-case-test)))
93       (error "Failed tests")))