summaryrefslogtreecommitdiff
path: root/Examples/test-suite/go/unions_runme.go
blob: 6e2981192346c23833c193ccf34f7d5b56c0c94c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// 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")
	}
}