racket/collects/tests/units/multi-mod-sigs.ss
2008-02-24 21:27:36 +00:00

56 lines
1.3 KiB
Scheme

(module test1 mzscheme
(require mzlib/unit)
(provide s1)
(define-signature s1
((define-values (a) (+ 1 b))
b)))
(module test2 mzscheme
(require mzlib/unit test1)
(provide s2)
(define-signature s2 extends s1
((define-values (c) (list b a d))
d)))
(module test3 mzscheme
(require mzlib/unit test1 test2)
(provide (all-defined))
(define-unit u1 (import s1) (export)
(list a b))
(define-unit u2 (import s2) (export)
(list a b c d))
(define-unit u3 (import) (export s1)
(define b 100))
(define-unit u4 (import) (export s2)
(define b 1000)
(define d 10000)))
(module test4 mzscheme
(require mzlib/unit test1 test2 test3)
(require "test-harness.ss")
(test '(101 100)
(invoke-unit
(compound-unit/infer (import) (export s1) (link u3 u1))))
(test '(1001 1000)
(invoke-unit
(compound-unit/infer (import) (export s1) (link u4 u1))))
(test '(1001 1000)
(invoke-unit
(compound-unit/infer (import) (export s2) (link u4 u1))))
(test '(1001 1000 (1000 1001 10000) 10000)
(invoke-unit
(compound-unit/infer (import) (export s1) (link u4 u2))))
(test '(1001 1000 (1000 1001 10000) 10000)
(invoke-unit
(compound-unit/infer (import) (export s2) (link u4 u2))))
)
(require test4)