Skip to content

Commit

Permalink
Validate that assertion results can be described
Browse files Browse the repository at this point in the history
  • Loading branch information
foretspaisibles committed Aug 9, 2023
1 parent b6b0121 commit b47a9f8
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 11 deletions.
1 change: 1 addition & 0 deletions src/result.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
(defclass result nil
((path
:initarg :path
:initform nil
:documentation "The path of the result in the test hierarchy.
This is the stack of preceding testcases in the test hierarchy."))
(:documentation "The abstract class of testcase results."))
Expand Down
35 changes: 24 additions & 11 deletions testsuite/result.lisp
Original file line number Diff line number Diff line change
Expand Up @@ -13,43 +13,56 @@

(in-package #:org.melusina.confidence/testsuite)

(defun make-assertion-success-example ()
(defun make-some-assertion-success ()
(make-instance 'confidence::assertion-success
:name 'confidence:assert-t
:argument-values '(t)
:argument-names '(expr)
:form '(confidence:assert-t t)))

(defun make-assertion-failure-example ()
(defun make-some-assertion-failure ()
(make-instance 'confidence::assertion-failure
:name 'confidence:assert-t
:argument-values '(nil)
:argument-names nil
:form '(confidence:assert-t nil)
:description "The assertion (ASSERT-T EXPR) is true, iff EXPR is T."))

(defun make-assertion-condition-example ()
(defun make-some-assertion-condition ()
(make-instance 'confidence::assertion-condition
:name 'confidence:assert-t
:argument-values nil
:argument-names nil
:form '(confidence:assert-t (error "Some error"))
:condition (make-instance 'simple-error :format-control "Some error")))

(defun make-testcase-result-example ()
(defun make-some-testcase-result ()
(make-instance 'confidence::testcase-result
:name 'make-testcase-result-example
:name 'make-some-testcase-result
:argument-values nil
:argument-names nil
:results (list
(make-assertion-success-example)
(make-assertion-failure-example)
(make-assertion-condition-example))))
(make-some-assertion-success)
(make-some-assertion-failure)
(make-some-assertion-condition))))

(define-testcase validate-result ()
(assert-eq 3 (slot-value (make-testcase-result-example) 'confidence::total)))
(define-testcase validate-result-can-be-described ()
(loop :for make-some-result
:in '(make-some-assertion-success
make-some-assertion-failure
make-some-assertion-condition
make-some-testcase-result)
:do
(assert-string-match
(with-output-to-string (buffer)
(describe (funcall make-some-result) buffer))
"*Name: *")))

(define-testcase validate-result-total ()
(assert-eq 3 (slot-value (make-some-testcase-result) 'confidence::total)))

(define-testcase testsuite-result ()
(validate-result))
(validate-result-can-be-described)
(validate-result-total))

;;;; End of file `result.lisp'

0 comments on commit b47a9f8

Please sign in to comment.