www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

test-framework.rkt (2363B)


      1 #lang typed/racket
      2 
      3 ;; TODO: Warning: this file may be deprecated or out of date.
      4 
      5 (require "typed-untyped.rkt")
      6 (define-typed/untyped-modules #:no-test
      7   ;; Using check-equal? on some values result in the following error message:
      8   ;; Attempted to use a higher-order value passed as `Any` in untyped code
      9   ;; check-equal? and check-not-equal? are replaced by versions that work with
     10   ;; “higher-order values” below.
     11   
     12   (require (except-in (only-meta-in 0 typed/rackunit)
     13                       ;; Above: typed/racket risks complaining that it can't do
     14                       ;; for-meta in all-from-out if we don't use `only-meta-in`
     15                       check-equal?
     16                       check-not-equal?))
     17   
     18   (provide (all-from-out typed/rackunit)
     19            check-equal?
     20            check-not-equal?
     21            check-eval-equal?
     22            check-eval-string-equal?
     23            check-eval-string-equal?/ns)
     24   
     25   (require "eval-get-values.rkt")
     26   
     27   (require syntax/parse/define)
     28   
     29   (define-simple-macro (check-equal? x y . message)
     30     (check-true (equal? x y) . message))
     31   
     32   (define-simple-macro (check-not-equal? x y . message)
     33     (check-true (not (equal? x y)) . message))
     34   
     35   (define-simple-macro (check-eval-equal? to-eval y . message)
     36     (check-true (equal? (eval-get-values to-eval
     37                                          (variable-reference->namespace
     38                                           (#%variable-reference)))
     39                         y)
     40                 . message))
     41   
     42   (define-simple-macro (check-eval-string-equal? to-eval y . message)
     43     (check-true (equal? (eval-get-values (read (open-input-string to-eval))
     44                                          (variable-reference->namespace
     45                                           (#%variable-reference)))
     46                         y)
     47                 . message))
     48   
     49   (define-simple-macro (check-eval-string-equal?/ns ns-anchor to-eval y
     50                                                     . message)
     51     (check-true (equal? (eval-get-values (read (open-input-string to-eval))
     52                                          (namespace-anchor->namespace
     53                                           ns-anchor))
     54                         y)
     55                 . message))
     56   
     57   (define-syntax-rule (test-module body ...)
     58     (module* test typed/racket
     59       (require (submod ".."))
     60       body ...)))