37 lines
1.0 KiB
Scheme
37 lines
1.0 KiB
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 (new-SmallStruct))
|
|
(SmallStruct-jill-set small 200)
|
|
|
|
(define big (new-BigStruct))
|
|
(BigStruct-smallstruct-set big small)
|
|
(BigStruct-jack-set big 300)
|
|
|
|
;; Use SmallStruct then BigStruct to setup EmbeddedUnionTest.
|
|
;; Ensure values in EmbeddedUnionTest are set correctly for each.
|
|
(define eut (new-EmbeddedUnionTest))
|
|
|
|
;; First check the SmallStruct in EmbeddedUnionTest
|
|
(EmbeddedUnionTest-number-set eut 1)
|
|
(EmbeddedUnionTest-uni-small-set (EmbeddedUnionTest-uni-get eut)
|
|
small)
|
|
(let ((Jill1 (SmallStruct-jill-get
|
|
(EmbeddedUnionTest-uni-small-get
|
|
(EmbeddedUnionTest-uni-get eut)))))
|
|
(if (not (= Jill1 200))
|
|
(begin
|
|
(display "Runtime test 1 failed.")
|
|
(exit 1))))
|
|
|
|
(let ((Num1 (EmbeddedUnionTest-number-get eut)))
|
|
(if (not (= Num1 1))
|
|
(begin
|
|
(display "Runtime test 2 failed.")
|
|
(exit 1))))
|
|
|
|
;; that should do
|
|
|
|
(exit 0)
|