diff options
Diffstat (limited to 'Examples/test-suite/tcl/unions_runme.tcl')
| -rw-r--r-- | Examples/test-suite/tcl/unions_runme.tcl | 63 |
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 +} + |
