X-Git-Url: http://git.kpe.io/?p=xlunit.git;a=blobdiff_plain;f=result.lisp;h=80f411a7aab49ca343251cc9f144af6215cb2bb4;hp=e601ec64ac8a89671f861c5da0cef490579c6539;hb=HEAD;hpb=53c699a7ed91f78c0e31b7bbd7deda671ca9df05 diff --git a/result.lisp b/result.lisp index e601ec6..80f411a 100644 --- a/result.lisp +++ b/result.lisp @@ -2,7 +2,7 @@ ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; -;;;; ID: $Id: result.lisp,v 1.3 2003/08/04 12:28:46 kevin Exp $ +;;;; ID: $Id$ ;;;; Purpose: Result functions for XLUnit ;;;; ;;;; ************************************************************************* @@ -10,37 +10,82 @@ (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)) + (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)")) -(defun make-test-result () - (make-instance 'test-result)) +(defmethod failure-count ((res test-results)) + (length (failures res))) + +(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)) - (:documentation "Stored failures/errors in test-result slots")) + :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)) + :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)) + (typep (thrown-condition failure) 'assertion-failed)) (defmethod print-object ((obj test-failure) stream) (print-unreadable-object (obj stream :type t :identity nil) (format stream "~A: " (failed-test obj)) - (apply #'format stream - (simple-condition-format-control (thrown-condition obj)) - (simple-condition-format-arguments (thrown-condition obj))))) + (apply #'format stream + (simple-condition-format-control (thrown-condition obj)) + (simple-condition-format-arguments (thrown-condition obj))))) -(defmethod was-successful ((result test-result)) +(defmethod was-successful ((result test-results)) "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-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))) +