1 ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
5 ;;;; Id: $Id: tests.lisp,v 1.13 2003/08/06 14:51:01 kevin Exp $
6 ;;;; Purpose: Self Test suite for XLUnit
8 ;;;; *************************************************************************
10 (in-package #:cl-user)
11 (defpackage #:xlunit-tests
14 (in-package #:xlunit-tests)
17 ;; Helper test fixture
19 (defclass was-run (test-case)
20 ((log :accessor ws-log)))
22 (defmethod set-up ((self was-run))
23 (setf (ws-log self) "setup "))
25 (defmethod tear-down ((self was-run))
27 (concatenate 'string (ws-log self) "teardown ")))
29 (def-test-method test-method ((self was-run) :run nil)
31 (concatenate 'string (ws-log self) "test-method ")))
33 (def-test-method test-broken-method ((self was-run) :run nil)
34 (assert-equal pi (/ 22 7)))
36 (def-test-method test-not-eql ((self was-run) :run nil)
37 (assert-not-eql (cons t t) (cons t t)))
39 (def-test-method test-eql ((self was-run) :run nil)
40 (let ((obj (cons t t)))
41 (assert-eql obj obj)))
43 (def-test-method test-error-method ((self was-run) :run nil)
47 ;;; Second helper test case
49 (defclass test-two-cases (test-case)
52 (def-test-method test-1 ((self test-two-cases) :run nil)
55 (def-test-method test-2 ((self test-two-cases) :run nil)
60 (defclass test-case-test (test-case)
64 (def-test-method test-template-method ((self test-case-test) :run nil)
65 (let ((test (named-test 'test-method (get-suite was-run))))
67 (assert-equal (ws-log test) "setup test-method teardown ")))
69 (def-test-method test-results ((self test-case-test) :run nil)
70 (assert-equal "1 run, 0 erred, 0 failed"
71 (summary (run (named-test 'test-method
72 (get-suite was-run))))))
74 (def-test-method test-eql ((self test-case-test) :run nil)
75 (assert-equal "1 run, 0 erred, 0 failed"
76 (summary (run (named-test 'test-eql (get-suite was-run))))))
78 (def-test-method test-not-eql ((self test-case-test) :run nil)
79 (assert-equal "1 run, 0 erred, 0 failed"
80 (summary (run (named-test 'test-not-eql
81 (get-suite was-run))))))
83 (def-test-method test-fn ((self test-case-test) :run nil)
84 (let ((test (make-instance 'test-case :name 'test-fn
87 (declare (ignore test))
88 (assert-equal 10 10)))))
89 (assert-equal "1 run, 0 erred, 0 failed"
90 (summary (run test)))))
92 (def-test-method test-failed-result ((self test-case-test) :run nil)
93 (assert-equal "1 run, 0 erred, 1 failed"
95 (named-test 'test-broken-method
96 (get-suite was-run))))))
98 (def-test-method test-error-result ((self test-case-test) :run nil)
99 (assert-equal "1 run, 1 erred, 0 failed"
101 (named-test 'test-error-method
102 (get-suite was-run))))))
104 (def-test-method test-suite ((self test-case-test) :run nil)
105 (let ((suite (make-instance 'test-suite))
106 (result (make-test-results)))
107 (add-test suite (named-test 'test-method (get-suite was-run)))
108 (add-test suite (named-test 'test-broken-method (get-suite was-run)))
109 (run-on-test-results suite result)
110 (assert-equal "2 run, 0 erred, 1 failed" (summary result))))
112 (def-test-method test-dynamic-suite ((self test-case-test) :run nil)
113 (assert-equal "2 run, 0 erred, 0 failed"
114 (summary (run (get-suite test-two-cases)))))
116 (define-condition test-condition (error)
119 (def-test-method test-condition ((self test-case-test) :run nil)
122 (error (make-instance 'test-condition))))
124 (textui-test-run (get-suite test-case-test))
128 (or (was-successful (run (get-suite test-case-test)))
129 (error "Failed tests")))