;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; ;;;; Id: $Id: tests.lisp,v 1.6 2003/08/04 12:28:46 kevin Exp $ ;;;; Purpose: Test suite for XLUnit ;;;; ;;;; ************************************************************************* (in-package #:cl-user) (defpackage #:xlunit-tests (:use #:cl #:xlunit) (:export #:do-tests)) (in-package #:xlunit-tests) ;; Helper test fixture (defclass was-run (test-fixture) ((log :accessor ws-log))) (defmethod setup ((self was-run)) (setf (ws-log self) "setup ")) (defmethod teardown ((self was-run)) (setf (ws-log self) (concatenate 'string (ws-log self) "teardown "))) (defmethod test-method ((self was-run)) (setf (ws-log self) (concatenate 'string (ws-log self) "test-method "))) (defmethod test-broken-method ((self was-run)) (assert-equal pi (/ 22 7))) (defmethod test-error-method ((self was-run)) (error "Err")) ;;; Main test fixture (defclass test-case-test (test-fixture) ()) (defmethod test-template-method ((self test-case-test)) (let ((test (make-test 'was-run 'test-method))) (run-test test) (assert-equal (ws-log test) "setup test-method teardown "))) (defmethod test-result ((self test-case-test)) (assert-equal "1 run, 0 erred, 0 failed" (summary (run-test (make-test 'was-run 'test-method))))) (defmethod test-fn ((self test-case-test)) (let ((test (make-test 'was-run '"Test Failure" :test-fn (lambda (test) (declare (ignore test)) (assert-equal 10 10))))) (assert-equal "1 run, 0 erred, 0 failed" (summary (run-test test))))) (defmethod test-failed-result ((self test-case-test)) (assert-equal "1 run, 0 erred, 1 failed" (summary (run-test (make-test 'was-run 'test-broken-method))))) (defmethod test-error-result ((self test-case-test)) (assert-equal "1 run, 1 erred, 0 failed" (summary (run-test (make-test 'was-run 'test-error-method))))) (defmethod test-suite ((self test-case-test)) (let ((suite (make-test-suite "TestSuite")) (result (make-test-result))) (add-test (make-test 'was-run 'test-method) suite) (add-test (make-test 'was-run 'test-broken-method) suite) (run-test suite :result result) (assert-equal "2 run, 0 erred, 1 failed" (summary result)))) (defmethod test-dynamic-suite ((self test-case-test)) (assert-equal "3 run, 1 erred, 1 failed" (summary (run-test (make-test-suite 'was-run))))) (text-testrunner (make-test-suite 'test-case-test) :handle-errors nil) (defun do-tests () (or (was-successful (run-test (make-test-suite 'test-case-test))) (error "Failed tests")))