blob: 6e2981192346c23833c193ccf34f7d5b56c0c94c [file] [log] [blame]
// 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")
}
}