52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
// 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 "swigtests/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")
|
|
}
|
|
}
|