X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=result.lisp;h=eb49d0fc3773fb557c84e2cc581d918ff5066317;hb=6c233c812b0e160d80e613bb3dfcedc59514e3e9;hp=ba95e4a00eb7658075ed9a9bc51fd6704781c1f9;hpb=318cda1a328e9d99af2270c73cb13262e485a1ff;p=xlunit.git diff --git a/result.lisp b/result.lisp index ba95e4a..eb49d0f 100644 --- a/result.lisp +++ b/result.lisp @@ -2,32 +2,60 @@ ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; -;;;; Name: result.lisp -;;;; Purpose: Result functions for XLUnit -;;;; Authors: Kevin Rosenberg +;;;; ID: $Id: result.lisp,v 1.6 2003/08/04 19:31:34 kevin Exp $ +;;;; Purpose: Result functions for XLUnit ;;;; -;;;; $Id: result.lisp,v 1.1 2003/08/04 12:01:54 kevin Exp $ ;;;; ************************************************************************* (in-package #:xlunit) -(defclass test-result () +(defclass test-results () ((test :initarg :test :reader result-test) - (count :initform 0 :accessor test-count) - (failures :initarg :failures :reader test-failures :initform nil) - (errors :initarg :errors :reader test-errors :initform nil)) - (:documentation "The result of applying a test")) + (count :initform 0 :accessor run-tests) + (failures :initarg :failures :accessor failures :initform nil) + (errors :initarg :errors :accessor errors :initform nil) + (listeners :initform nil :accessor listeners) + (stop :initform nil :accessor stop)) + (:documentation "Results of running test(s)")) +(defmethod failure-count ((res test-results)) + (length (failures res))) -(defun make-test-result () - (make-instance 'test-result)) +(defmethod error-count ((res test-results)) + (length (errors res))) + +(defun make-test-results () + (make-instance 'test-results)) + + +(defmethod start-test ((tcase test) (res test-results)) + (incf (run-tests res)) + (mapc (lambda (listener) (start-test listener tcase)) (listeners res)) + res) + +(defmethod end-test ((tcase test) (res test-results)) + (mapc (lambda (listener) (end-test listener tcase)) (listeners res)) + res) + +(defmethod add-listener ((res test-results) (listener test-listener)) + (push listener (listeners res))) + + +;; Test Failures (defclass test-failure () ((failed-test :initarg :failed-test :reader failed-test) - (thrown-condition :initarg :thrown-condition :reader thrown-condition))) + (thrown-condition :initarg :thrown-condition + :reader thrown-condition)) + (:documentation "Stored failures/errors in test-results slots")) + +(defun make-test-failure (test condition) + (make-instance 'test-failure :failed-test test + :thrown-condition condition)) (defmethod is-failure ((failure test-failure)) + "Returns T if a failure was a test-failure condition" (typep (thrown-condition failure) 'test-failure-condition)) (defmethod print-object ((obj test-failure) stream) @@ -37,6 +65,25 @@ (simple-condition-format-control (thrown-condition obj)) (simple-condition-format-arguments (thrown-condition obj))))) -(defmethod was-successful ((result test-result)) - (and (null (test-failures result)) - (null (test-errors result)))) +(defmethod was-successful ((result test-results)) + "Returns T if a result has no failures or errors" + (and (null (failures result)) (null (errors result)))) + + +;---------------------------------------------------------------------- +; methods add-error, add-failure +;---------------------------------------------------------------------- + +(defmethod add-error ((ob test-results) (tcase test-case) condition) + (push (make-test-failure tcase condition) (errors ob)) + (mapc #'(lambda (single-listener) + (add-error single-listener tcase condition)) + (listeners ob))) + + +(defmethod add-failure ((ob test-results) (tcase test-case) condition) + (push (make-test-failure tcase condition) (failures ob)) + (mapc #'(lambda (single-listener) + (add-failure single-listener tcase condition)) + (listeners ob))) +