typed-racket/typed-racket-test/unit-tests/generalize-tests.rkt
2014-12-16 10:07:25 -05:00

35 lines
918 B
Racket

#lang racket/base
(require "test-utils.rkt"
racket/format
rackunit
(rep rep-utils)
(types generalize abbrev union)
(for-syntax racket/base syntax/parse))
(provide tests)
(gen-test-main)
(define-syntax check-generalize
(syntax-parser
[(_ t*:expr exp*:expr)
#'(test-case (~a `(t* => exp*))
(define actual (generalize t*))
(define expected exp*)
(with-check-info (['actual actual]
['expected expected])
(unless (type-equal? actual expected)
(fail-check "Didn't generalize to expected type."))))]))
(define tests
(test-suite "Generalize Tests"
(check-generalize -Null (-lst Univ))
(check-generalize
(-pair -Symbol (-lst -Symbol))
(-lst -Symbol))
(check-generalize
(-pair -Symbol (Un -Null (-pair -Symbol (-lst -Symbol))))
(-lst -Symbol))
))