| |
| # 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 |
| |