# 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 }