| // This is the union runtime testcase. It ensures that values within a |
| // union embedded within a struct can be set and read correctly. |
| |
| package main |
| |
| import "./unions" |
| |
| func main() { |
| // Create new instances of SmallStruct and BigStruct for later use |
| small := unions.NewSmallStruct() |
| small.SetJill(200) |
| |
| big := unions.NewBigStruct() |
| big.SetSmallstruct(small) |
| big.SetJack(300) |
| |
| // Use SmallStruct then BigStruct to setup EmbeddedUnionTest. |
| // Ensure values in EmbeddedUnionTest are set correctly for each. |
| eut := unions.NewEmbeddedUnionTest() |
| |
| // First check the SmallStruct in EmbeddedUnionTest |
| eut.SetNumber(1) |
| eut.GetUni().SetSmall(small) |
| Jill1 := eut.GetUni().GetSmall().GetJill() |
| if Jill1 != 200 { |
| panic("Runtime test1 failed") |
| } |
| |
| Num1 := eut.GetNumber() |
| if Num1 != 1 { |
| panic("Runtime test2 failed") |
| } |
| |
| // Secondly check the BigStruct in EmbeddedUnionTest |
| eut.SetNumber(2) |
| eut.GetUni().SetBig(big) |
| Jack1 := eut.GetUni().GetBig().GetJack() |
| if Jack1 != 300 { |
| panic("Runtime test3 failed") |
| } |
| |
| Jill2 := eut.GetUni().GetBig().GetSmallstruct().GetJill() |
| if Jill2 != 200 { |
| panic("Runtime test4 failed") |
| } |
| |
| Num2 := eut.GetNumber() |
| if Num2 != 2 { |
| panic("Runtime test5 failed") |
| } |
| } |