38 lines
993 B
Scheme
38 lines
993 B
Scheme
|
|
;;; This is the union runtime testcase. It ensures that values within a
|
||
|
|
;;; union embedded within a struct can be set and read correctly.
|
||
|
|
|
||
|
|
;; Create new instances of SmallStruct and BigStruct for later use
|
||
|
|
(define small (make <SmallStruct>))
|
||
|
|
(slot-set! small 'jill 200)
|
||
|
|
|
||
|
|
(define big (make <BigStruct>))
|
||
|
|
(slot-set! big 'smallstruct small)
|
||
|
|
(slot-set! big 'jack 300)
|
||
|
|
|
||
|
|
;; Use SmallStruct then BigStruct to setup EmbeddedUnionTest.
|
||
|
|
;; Ensure values in EmbeddedUnionTest are set correctly for each.
|
||
|
|
(define eut (make <EmbeddedUnionTest>))
|
||
|
|
|
||
|
|
;; First check the SmallStruct in EmbeddedUnionTest
|
||
|
|
(slot-set! eut 'number 1)
|
||
|
|
(slot-set! (slot-ref eut 'uni) 'small small)
|
||
|
|
(let ((Jill1 (slot-ref
|
||
|
|
(slot-ref
|
||
|
|
(slot-ref eut 'uni)
|
||
|
|
'small)
|
||
|
|
'jill)))
|
||
|
|
(if (not (= Jill1 200))
|
||
|
|
(begin
|
||
|
|
(display "Runtime test 1 failed.")
|
||
|
|
(exit 1))))
|
||
|
|
|
||
|
|
(let ((Num1 (slot-ref eut 'number)))
|
||
|
|
(if (not (= Num1 1))
|
||
|
|
(begin
|
||
|
|
(display "Runtime test 2 failed.")
|
||
|
|
(exit 1))))
|
||
|
|
|
||
|
|
;; that should do
|
||
|
|
|
||
|
|
(exit 0)
|