1
2if [ catch { load ./cpp11_strongly_typed_enumerations[info sharedlibextension] cpp11_strongly_typed_enumerations} err_msg ] {
3	puts stderr "Could not load shared object:\n$err_msg"
4}
5
6proc enumCheck {actual expected} {
7  if {$actual != $expected} {
8    error "Enum value mismatch. Expected $expected. Actual: $actual"
9  }
10  return [expr $expected + 1]
11}
12
13#set val 0
14#set val [enumCheck $Enum1_Val1  $val]
15#set val [enumCheck $Enum1_Val2  $val]
16
17set val 0
18set val [enumCheck $Enum1_Val1 $val]
19set val [enumCheck $Enum1_Val2 $val]
20set val [enumCheck $Enum1_Val3 13]
21set val [enumCheck $Enum1_Val4 $val]
22set val [enumCheck $Enum1_Val5a 13]
23set val [enumCheck $Enum1_Val6a $val]
24
25set val 0
26set val [enumCheck $Enum2_Val1 $val]
27set val [enumCheck $Enum2_Val2 $val]
28set val [enumCheck $Enum2_Val3 23]
29set val [enumCheck $Enum2_Val4 $val]
30set val [enumCheck $Enum2_Val5b 23]
31set val [enumCheck $Enum2_Val6b $val]
32
33set val 0
34set val [enumCheck $Val1 $val]
35set val [enumCheck $Val2 $val]
36set val [enumCheck $Val3 43]
37set val [enumCheck $Val4 $val]
38
39set val 0
40set val [enumCheck $Enum5_Val1 $val]
41set val [enumCheck $Enum5_Val2 $val]
42set val [enumCheck $Enum5_Val3 53]
43set val [enumCheck $Enum5_Val4 $val]
44
45set val 0
46set val [enumCheck $Enum6_Val1 $val]
47set val [enumCheck $Enum6_Val2 $val]
48set val [enumCheck $Enum6_Val3 63]
49set val [enumCheck $Enum6_Val4 $val]
50
51set val 0
52set val [enumCheck $Enum7td_Val1 $val]
53set val [enumCheck $Enum7td_Val2 $val]
54set val [enumCheck $Enum7td_Val3 73]
55set val [enumCheck $Enum7td_Val4 $val]
56
57set val 0
58set val [enumCheck $Enum8_Val1 $val]
59set val [enumCheck $Enum8_Val2 $val]
60set val [enumCheck $Enum8_Val3 83]
61set val [enumCheck $Enum8_Val4 $val]
62
63set val 0
64set val [enumCheck $Enum10_Val1 $val]
65set val [enumCheck $Enum10_Val2 $val]
66set val [enumCheck $Enum10_Val3 103]
67set val [enumCheck $Enum10_Val4 $val]
68
69set val 0
70set val [enumCheck $Class1_Enum12_Val1 1121]
71set val [enumCheck $Class1_Enum12_Val2 1122]
72set val [enumCheck $Class1_Enum12_Val3 $val]
73set val [enumCheck $Class1_Enum12_Val4 $val]
74set val [enumCheck $Class1_Enum12_Val5c 1121]
75set val [enumCheck $Class1_Enum12_Val6c $val]
76
77set val 0
78set val [enumCheck $Class1_Val1 1131]
79set val [enumCheck $Class1_Val2 1132]
80set val [enumCheck $Class1_Val3 $val]
81set val [enumCheck $Class1_Val4 $val]
82set val [enumCheck $Class1_Val5d 1131]
83set val [enumCheck $Class1_Val6d $val]
84
85set val 0
86set val [enumCheck $Class1_Enum14_Val1 1141]
87set val [enumCheck $Class1_Enum14_Val2 1142]
88set val [enumCheck $Class1_Enum14_Val3 $val]
89set val [enumCheck $Class1_Enum14_Val4 $val]
90set val [enumCheck $Class1_Enum14_Val5e 1141]
91set val [enumCheck $Class1_Enum14_Val6e $val]
92
93# Requires nested class support to work
94#set val 0
95#set val [enumCheck $Class1_Struct1_Enum12_Val1 3121]
96#set val [enumCheck $Class1_Struct1_Enum12_Val2 3122]
97#set val [enumCheck $Class1_Struct1_Enum12_Val3 $val]
98#set val [enumCheck $Class1_Struct1_Enum12_Val4 $val]
99#set val [enumCheck $Class1_Struct1_Enum12_Val5f 3121]
100#set val [enumCheck $Class1_Struct1_Enum12_Val6f $val]
101#
102#set val 0
103#set val [enumCheck $Class1_Struct1_Val1 3131]
104#set val [enumCheck $Class1_Struct1_Val2 3132]
105#set val [enumCheck $Class1_Struct1_Val3 $val]
106#set val [enumCheck $Class1_Struct1_Val4 $val]
107#
108#set val 0
109#set val [enumCheck $Class1_Struct1_Enum14_Val1 3141]
110#set val [enumCheck $Class1_Struct1_Enum14_Val2 3142]
111#set val [enumCheck $Class1_Struct1_Enum14_Val3 $val]
112#set val [enumCheck $Class1_Struct1_Enum14_Val4 $val]
113#set val [enumCheck $Class1_Struct1_Enum14_Val5g 3141]
114#set val [enumCheck $Class1_Struct1_Enum14_Val6g $val]
115
116set val 0
117set val [enumCheck $Class2_Enum12_Val1 2121]
118set val [enumCheck $Class2_Enum12_Val2 2122]
119set val [enumCheck $Class2_Enum12_Val3 $val]
120set val [enumCheck $Class2_Enum12_Val4 $val]
121set val [enumCheck $Class2_Enum12_Val5h 2121]
122set val [enumCheck $Class2_Enum12_Val6h $val]
123
124set val 0
125set val [enumCheck $Class2_Val1 2131]
126set val [enumCheck $Class2_Val2 2132]
127set val [enumCheck $Class2_Val3 $val]
128set val [enumCheck $Class2_Val4 $val]
129set val [enumCheck $Class2_Val5i 2131]
130set val [enumCheck $Class2_Val6i $val]
131
132set val 0
133set val [enumCheck $Class2_Enum14_Val1 2141]
134set val [enumCheck $Class2_Enum14_Val2 2142]
135set val [enumCheck $Class2_Enum14_Val3 $val]
136set val [enumCheck $Class2_Enum14_Val4 $val]
137set val [enumCheck $Class2_Enum14_Val5j 2141]
138set val [enumCheck $Class2_Enum14_Val6j $val]
139
140# Requires nested class support to work
141#set val 0
142#set val [enumCheck $Class2_Struct1_Enum12_Val1 4121]
143#set val [enumCheck $Class2_Struct1_Enum12_Val2 4122]
144#set val [enumCheck $Class2_Struct1_Enum12_Val3 $val]
145#set val [enumCheck $Class2_Struct1_Enum12_Val4 $val]
146#set val [enumCheck $Class2_Struct1_Enum12_Val5k 4121]
147#set val [enumCheck $Class2_Struct1_Enum12_Val6k $val]
148#
149#set val 0
150#set val [enumCheck $Class2_Struct1_Val1 4131]
151#set val [enumCheck $Class2_Struct1_Val2 4132]
152#set val [enumCheck $Class2_Struct1_Val3 $val]
153#set val [enumCheck $Class2_Struct1_Val4 $val]
154#set val [enumCheck $Class2_Struct1_Val5l 4131]
155#set val [enumCheck $Class2_Struct1_Val6l $val]
156#
157#set val 0
158#set val [enumCheck $Class2_Struct1_Enum14_Val1 4141]
159#set val [enumCheck $Class2_Struct1_Enum14_Val2 4142]
160#set val [enumCheck $Class2_Struct1_Enum14_Val3 $val]
161#set val [enumCheck $Class2_Struct1_Enum14_Val4 $val]
162#set val [enumCheck $Class2_Struct1_Enum14_Val5m 4141]
163#set val [enumCheck $Class2_Struct1_Enum14_Val6m $val]
164
165set class1 [Class1]
166enumCheck [$class1 class1Test1 $Enum1_Val5a] 13
167enumCheck [$class1 class1Test2 $Class1_Enum12_Val5c] 1121
168#enumCheck [$class1 class1Test3 $Class1_Struct1_Enum12_Val5f] 3121
169
170enumCheck [globalTest1 $Enum1_Val5a] 13
171enumCheck [globalTest2 $Class1_Enum12_Val5c] 1121
172#enumCheck [globalTest3 $Class1_Struct1_Enum12_Val5f] 3121
173