(module counter-test mzscheme
(require
(lib "plt-match.ss")
(planet "test.ss" ("schematics" "schemeunit.plt" 2))
(planet "plt/monad.ss" ("schematics" "schemeunit.plt" 2))
(planet "plt/hash-monad.ss" ("schematics" "schemeunit.plt" 2))
"counter.ss"
"test.ss")
(provide counter-tests)
(define a-success (make-test-success "success" #t))
(define an-error (make-test-error "error" #f))
(define a-failure (make-test-failure "failure" #f))
(define bug-test-case
(bug-case "Foo" (= 1 1)))
(define normal-test-case
(test-case "Foo" (= 1 1)))
(define counter-tests
(test-suite
"All tests for counter"
(test-case
"counter->vector is correct"
(let ((monad ((put-initial-counter) (make-empty-hash))))
((compose
(sequence* (update-counter! normal-test-case a-success)
(update-counter! bug-test-case a-failure)
(update-counter! bug-test-case an-error)
(counter->vector))
(match-lambda
((vector s f e b)
(check = s 1)
(check = f 1)
(check = e 1)
(check = b 2)
(return-hash (void)))))
monad)))
))
)