56 lines
1.3 KiB
Racket
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)
|