X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=result.lisp;h=3ddead3d9fcd39df3a24b2b28db7d517afc6015f;hb=53e193feda5d4cb757ef13d622fac03cf99178a2;hp=57ceba31def2df3f9373202cfb578f9b63f8974e;hpb=8133177de9c5d202520bd83b5e797ef7a39942ad;p=xlunit.git diff --git a/result.lisp b/result.lisp index 57ceba3..3ddead3 100644 --- a/result.lisp +++ b/result.lisp @@ -2,7 +2,7 @@ ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; -;;;; ID: $Id: result.lisp,v 1.2 2003/08/04 12:16:13 kevin Exp $ +;;;; ID: $Id: result.lisp,v 1.4 2003/08/04 16:13:58 kevin Exp $ ;;;; Purpose: Result functions for XLUnit ;;;; ;;;; ************************************************************************* @@ -12,19 +12,44 @@ (defclass test-result () ((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)) + (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-result)) + (length (failures res))) + +(defmethod error-count ((res test-result)) + (length (errors res))) + (defun make-test-result () (make-instance 'test-result)) + +(defmethod start-test ((tcase test) (res test-result)) + (incf (run-tests res)) + (mapc (lambda (listener) (start-test listener tcase)) (listeners res)) + res) + +(defmethod end-test ((tcase test) (res test-result)) + (incf (run-tests res)) + (mapc (lambda (listener) (end-test listener tcase)) (listeners res)) + res) + +(defmethod add-listener ((res test-result) (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)) - (:documention "Stored failures/errors in test-result slots")) + (:documentation "Stored failures/errors in test-result slots")) (defun make-test-failure (test condition) (make-instance 'test-failure :failed-test test @@ -43,4 +68,23 @@ (defmethod was-successful ((result test-result)) "Returns T if a result has no failures or errors" - (and (null (test-failures result)) (null (test-errors result)))) + (and (null (failures result)) (null (errors result)))) + + +;---------------------------------------------------------------------- +; methods add-error, add-failure +;---------------------------------------------------------------------- + +(defmethod add-error ((ob test-result) (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-result) (tcase test-case) condition) + (push (make-test-failure tcase condition) (failures ob)) + (mapc #'(lambda (single-listener) + (add-failure single-listener tcase condition)) + (listeners ob))) +