169 lines
3.9 KiB
Racket
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))
|