50 lines
1.2 KiB
Mathematica
50 lines
1.2 KiB
Mathematica
|
|
# This is the union runtime testcase. It ensures that values within a
|
|
# union embedded within a struct can be set and read correctly.
|
|
|
|
unions
|
|
|
|
# Create new instances of SmallStruct and BigStruct for later use
|
|
small = unions.SmallStruct();
|
|
small.jill = 200;
|
|
|
|
big = unions.BigStruct();
|
|
big.smallstruct = small;
|
|
big.jack = 300;
|
|
|
|
# Use SmallStruct then BigStruct to setup EmbeddedUnionTest.
|
|
# Ensure values in EmbeddedUnionTest are set correctly for each.
|
|
eut = unions.EmbeddedUnionTest();
|
|
|
|
# First check the SmallStruct in EmbeddedUnionTest
|
|
eut.number = 1;
|
|
eut.uni.small = small;
|
|
Jill1 = eut.uni.small.jill;
|
|
if (Jill1 != 200)
|
|
error("Runtime test1 failed. eut.uni.small.jill=%i" , Jill1)
|
|
endif
|
|
|
|
Num1 = eut.number;
|
|
if (Num1 != 1)
|
|
error("Runtime test2 failed. eut.number=%i" , Num1)
|
|
endif
|
|
|
|
# Secondly check the BigStruct in EmbeddedUnionTest
|
|
eut.number = 2;
|
|
eut.uni.big = big;
|
|
Jack1 = eut.uni.big.jack;
|
|
if (Jack1 != 300)
|
|
error("Runtime test3 failed. eut.uni.big.jack=%i" , Jack1)
|
|
endif
|
|
|
|
Jill2 = eut.uni.big.smallstruct.jill;
|
|
if (Jill2 != 200)
|
|
error("Runtime test4 failed. eut.uni.big.smallstruct.jill=%i" , Jill2)
|
|
endif
|
|
|
|
Num2 = eut.number;
|
|
if (Num2 != 2)
|
|
error("Runtime test5 failed. eut.number=%i" , Num2)
|
|
endif
|
|
|