#lang scheme/base
(require scheme/contract)
(define-struct test ())
(define-struct (schemeunit-test-case test) (name action) #:transparent)
(define-struct (schemeunit-test-suite test) (name tests before after) #:transparent)
(define-struct (exn:test exn) ())
(define-struct (exn:test:check exn:test) (stack))
(define-struct (exn:test:check:internal exn:test:check) ())
(define-struct test-result (test-case-name))
(define-struct (test-failure test-result) (result))
(define-struct (test-error test-result) (result))
(define-struct (test-success test-result) (result))
(provide/contract
(struct (schemeunit-test-case test)
((name (or/c string? false/c))
(action (-> any))))
(struct (schemeunit-test-suite test)
((name string?)
(tests procedure?)
(before (-> any))
(after (-> any)))))
(provide (struct-out test)
(struct-out exn:test)
(struct-out exn:test:check)
(struct-out exn:test:check:internal)
(struct-out test-result)
(struct-out test-failure)
(struct-out test-error)
(struct-out test-success))