summaryrefslogtreecommitdiff
path: root/Examples/test-suite/tcl/unions_runme.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/tcl/unions_runme.tcl')
-rw-r--r--Examples/test-suite/tcl/unions_runme.tcl63
1 files changed, 63 insertions, 0 deletions
diff --git a/Examples/test-suite/tcl/unions_runme.tcl b/Examples/test-suite/tcl/unions_runme.tcl
new file mode 100644
index 0000000..8c31095
--- /dev/null
+++ b/Examples/test-suite/tcl/unions_runme.tcl
@@ -0,0 +1,63 @@
+
+# This is the union runtime testcase. It ensures that values within a
+# union embedded within a struct can be set and read correctly.
+
+if [ catch { load ./unions[info sharedlibextension] unions} err_msg ] {
+ puts stderr "Could not load shared object:\n$err_msg"
+}
+
+# Create new instances of SmallStruct and BigStruct for later use
+SmallStruct small
+small configure -jill 200
+
+BigStruct big
+big configure -smallstruct [small cget -this]
+big configure -jack 300
+
+# Use SmallStruct then BigStruct to setup EmbeddedUnionTest.
+# Ensure values in EmbeddedUnionTest are set correctly for each.
+EmbeddedUnionTest eut
+
+# First check the SmallStruct in EmbeddedUnionTest
+eut configure -number 1
+
+#eut.uni.small = small
+EmbeddedUnionTest_uni_small_set [EmbeddedUnionTest_uni_get [eut cget -this] ] [small cget -this]
+
+#Jill1 = eut.uni.small.jill
+set Jill1 [SmallStruct_jill_get [EmbeddedUnionTest_uni_small_get [EmbeddedUnionTest_uni_get [eut cget -this] ] ] ]
+if {$Jill1 != 200} {
+ puts stderr "Runtime test1 failed. eut.uni.small.jill=$Jill1"
+ exit 1
+}
+
+set Num1 [eut cget -number]
+if {$Num1 != 1} {
+ puts stderr "Runtime test2 failed. eut.number=$Num1"
+ exit 1
+}
+
+# Secondly check the BigStruct in EmbeddedUnionTest
+eut configure -number 2
+#eut.uni.big = big
+EmbeddedUnionTest_uni_big_set [EmbeddedUnionTest_uni_get [eut cget -this] ] [big cget -this]
+#Jack1 = eut.uni.big.jack
+set Jack1 [BigStruct_jack_get [EmbeddedUnionTest_uni_big_get [EmbeddedUnionTest_uni_get [eut cget -this] ] ] ]
+if {$Jack1 != 300} {
+ puts stderr "Runtime test3 failed. eut.uni.big.jack=$Jack1"
+ exit 1
+}
+
+#Jill2 = eut.uni.big.smallstruct.jill
+set Jill2 [SmallStruct_jill_get [BigStruct_smallstruct_get [EmbeddedUnionTest_uni_big_get [EmbeddedUnionTest_uni_get [eut cget -this] ] ] ] ]
+if {$Jill2 != 200} {
+ puts stderr "Runtime test4 failed. eut.uni.big.smallstruct.jill=$Jill2"
+ exit 1
+}
+
+set Num2 [eut cget -number]
+if {$Num2 != 2} {
+ puts stderr "Runtime test5 failed. eut.number=$Num2"
+ exit 1
+}
+