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