racket/collects/rackunit/private/test.rkt
2010-05-17 12:07:32 -04:00

169 lines
3.9 KiB
Racket

#lang racket/base
(require (for-syntax racket/base)
"base.rkt"
"check.rkt"
"check-info.rkt"
"result.rkt"
"test-case.rkt"
"test-suite.rkt"
"util.rkt")
(provide (struct-out exn:test)
(struct-out exn:test:check)
(struct-out check-info)
(struct-out test-result)
(struct-out test-failure)
(struct-out test-error)
(struct-out test-success)
(struct-out rackunit-test-case)
(struct-out rackunit-test-suite)
with-check-info
with-check-info*
make-check-name
make-check-params
make-check-location
make-check-expression
make-check-message
make-check-actual
make-check-expected
check-name?
check-params?
check-location?
check-expression?
check-message?
check-actual?
check-expected?
test-begin
test-case
test-suite
make-test-suite
delay-test
(rename-out [make-rackunit-test-case make-test-case]
[rackunit-test-case? test-case?]
[rackunit-test-suite? test-suite?])
current-test-name
current-test-case-around
test-suite-test-case-around
test-suite-check-around
define-test-suite
define/provide-test-suite
test-suite*
before
after
around
require/expose
define-shortcut
test-check
test-pred
test-equal?
test-eq?
test-eqv?
test-=
test-true
test-false
test-not-false
test-exn
test-not-exn
foldts
fold-test-results
run-test-case
run-test
fail-check
define-check
define-simple-check
define-binary-check
current-check-handler
current-check-around
check
check-exn
check-not-exn
check-true
check-false
check-pred
check-eq?
check-eqv?
check-equal?
check-=
check-not-false
check-not-eq?
check-not-eqv?
check-not-equal?
check-regexp-match
fail)
(define (void-thunk) (void))
(define-syntax (define-shortcut stx)
(syntax-case stx ()
[(_ (name param ...) expr)
(with-syntax ([expected-form (syntax->datum
#`(#,(syntax name)
test-desc
#,@(syntax (param ...))))])
(syntax/loc stx
(define-syntax (name name-stx)
(syntax-case name-stx ()
[(name test-desc param ...)
(with-syntax ([name-expr (syntax/loc name-stx expr)])
(syntax/loc name-stx
(test-case test-desc name-expr)))]
[_
(raise-syntax-error
#f
(format "Correct form is ~a" (quote expected-form))
name-stx)]))))]
[_
(raise-syntax-error
#f
"Correct form is (define-shortcut (name param ...) expr)"
stx)]))
(define-shortcut (test-check operator expr1 expr2)
(check operator expr1 expr2))
(define-shortcut (test-pred pred expr)
(check-pred pred expr))
(define-shortcut (test-equal? expr1 expr2)
(check-equal? expr1 expr2))
(define-shortcut (test-eq? expr1 expr2)
(check-eq? expr1 expr2))
(define-shortcut (test-eqv? expr1 expr2)
(check-eqv? expr1 expr2))
(define-shortcut (test-= expr1 expr2 epsilon)
(check-= expr1 expr2 epsilon))
(define-shortcut (test-true expr)
(check-true expr))
(define-shortcut (test-false expr)
(check-false expr))
(define-shortcut (test-not-false expr)
(check-not-false expr))
(define-shortcut (test-exn pred thunk)
(check-exn pred thunk))
(define-shortcut (test-not-exn thunk)
(check-not-exn thunk))