rackunit/testing-util-lib/rackunit/log.rkt
2016-04-29 12:45:59 -05:00

40 lines
864 B
Racket

#lang racket/base
(require racket/contract)
(define TOTAL 0)
(define FAILED 0)
(define-syntax-rule (inc! id)
(set! id (add1 id)))
(define (test-log! result)
(inc! TOTAL)
(unless result
(inc! FAILED)))
(define (test-log #:display? [display? #f]
#:exit? [exit? #f])
(when display?
(unless (zero? TOTAL)
(cond
[(zero? FAILED)
(printf "~a test~a passed\n"
TOTAL
(if (= TOTAL 1) "" "s"))]
[else
(eprintf "~a/~a test failures\n"
FAILED TOTAL)])))
(when exit?
(unless (zero? FAILED)
(exit 1)))
(cons FAILED TOTAL))
(provide
(contract-out
[test-log!
(-> any/c void?)]
[test-log
(->* () (#:display? boolean? #:exit? boolean?)
(cons/c exact-nonnegative-integer?
exact-nonnegative-integer?))]))