;;; This is the union runtime testcase. It ensures that values within a ;;; union embedded within a struct can be set and read correctly. (load-extension "unions.so") ;; 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)) (void))) (let ((Num1 (EmbeddedUnionTest-number-get eut))) (if (not (= Num1 1)) (begin (display "Runtime test 2 failed.") (exit 1)) (void))) ;; that should do (exit 0)