;;; 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 )) (slot-set! small 'jill 200) (define big (make )) (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 )) ;; 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)