racket/collects/tests/units/multi-mod-sigs.rktl
2010-05-01 09:58:16 -06:00

56 lines
1.3 KiB
Racket

(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)