1<?php
2
3require "tests.php";
4require "cpp11_strongly_typed_enumerations.php";
5
6function enumCheck($actual, $expected) {
7  check::equal($actual, $expected, "Enum value mismatch");
8  return $expected + 1;
9}
10
11
12$val = 0;
13$val = enumCheck(Enum1_Val1, $val);
14$val = enumCheck(Enum1_Val2, $val);
15$val = enumCheck(Enum1_Val3, 13);
16$val = enumCheck(Enum1_Val4, $val);
17$val = enumCheck(Enum1_Val5a, 13);
18$val = enumCheck(Enum1_Val6a, $val);
19
20$val = 0;
21$val = enumCheck(Enum2_Val1, $val);
22$val = enumCheck(Enum2_Val2, $val);
23$val = enumCheck(Enum2_Val3, 23);
24$val = enumCheck(Enum2_Val4, $val);
25$val = enumCheck(Enum2_Val5b, 23);
26$val = enumCheck(Enum2_Val6b, $val);
27
28$val = 0;
29$val = enumCheck(Val1, $val);
30$val = enumCheck(Val2, $val);
31$val = enumCheck(Val3, 43);
32$val = enumCheck(Val4, $val);
33
34$val = 0;
35$val = enumCheck(Enum5_Val1, $val);
36$val = enumCheck(Enum5_Val2, $val);
37$val = enumCheck(Enum5_Val3, 53);
38$val = enumCheck(Enum5_Val4, $val);
39
40$val = 0;
41$val = enumCheck(Enum6_Val1, $val);
42$val = enumCheck(Enum6_Val2, $val);
43$val = enumCheck(Enum6_Val3, 63);
44$val = enumCheck(Enum6_Val4, $val);
45
46$val = 0;
47$val = enumCheck(Enum7td_Val1, $val);
48$val = enumCheck(Enum7td_Val2, $val);
49$val = enumCheck(Enum7td_Val3, 73);
50$val = enumCheck(Enum7td_Val4, $val);
51
52$val = 0;
53$val = enumCheck(Enum8_Val1, $val);
54$val = enumCheck(Enum8_Val2, $val);
55$val = enumCheck(Enum8_Val3, 83);
56$val = enumCheck(Enum8_Val4, $val);
57
58$val = 0;
59$val = enumCheck(Enum10_Val1, $val);
60$val = enumCheck(Enum10_Val2, $val);
61$val = enumCheck(Enum10_Val3, 103);
62$val = enumCheck(Enum10_Val4, $val);
63
64$val = 0;
65$val = enumCheck(Class1::Enum12_Val1, 1121);
66$val = enumCheck(Class1::Enum12_Val2, 1122);
67$val = enumCheck(Class1::Enum12_Val3, $val);
68$val = enumCheck(Class1::Enum12_Val4, $val);
69$val = enumCheck(Class1::Enum12_Val5c, 1121);
70$val = enumCheck(Class1::Enum12_Val6c, $val);
71
72$val = 0;
73$val = enumCheck(Class1::Val1, 1131);
74$val = enumCheck(Class1::Val2, 1132);
75$val = enumCheck(Class1::Val3, $val);
76$val = enumCheck(Class1::Val4, $val);
77$val = enumCheck(Class1::Val5d, 1131);
78$val = enumCheck(Class1::Val6d, $val);
79
80$val = 0;
81$val = enumCheck(Class1::Enum14_Val1, 1141);
82$val = enumCheck(Class1::Enum14_Val2, 1142);
83$val = enumCheck(Class1::Enum14_Val3, $val);
84$val = enumCheck(Class1::Enum14_Val4, $val);
85$val = enumCheck(Class1::Enum14_Val5e, 1141);
86$val = enumCheck(Class1::Enum14_Val6e, $val);
87
88# Requires nested class support to work
89#$val = 0;
90#$val = enumCheck(Class1::Struct1.Enum12_Val1, 3121);
91#$val = enumCheck(Class1::Struct1.Enum12_Val2, 3122);
92#$val = enumCheck(Class1::Struct1.Enum12_Val3, $val);
93#$val = enumCheck(Class1::Struct1.Enum12_Val4, $val);
94#$val = enumCheck(Class1::Struct1.Enum12_Val5f, 3121);
95#$val = enumCheck(Class1::Struct1.Enum12_Val6f, $val);
96#
97#$val = 0;
98#$val = enumCheck(Class1::Struct1.$val1, 3131);
99#$val = enumCheck(Class1::Struct1.$val2, 3132);
100#$val = enumCheck(Class1::Struct1.$val3, $val);
101#$val = enumCheck(Class1::Struct1.$val4, $val);
102#
103#$val = 0;
104#$val = enumCheck(Class1::Struct1.Enum14_Val1, 3141);
105#$val = enumCheck(Class1::Struct1.Enum14_Val2, 3142);
106#$val = enumCheck(Class1::Struct1.Enum14_Val3, $val);
107#$val = enumCheck(Class1::Struct1.Enum14_Val4, $val);
108#$val = enumCheck(Class1::Struct1.Enum14_Val5g, 3141);
109#$val = enumCheck(Class1::Struct1.Enum14_Val6g, $val);
110
111$val = 0;
112$val = enumCheck(Class2::Enum12_Val1, 2121);
113$val = enumCheck(Class2::Enum12_Val2, 2122);
114$val = enumCheck(Class2::Enum12_Val3, $val);
115$val = enumCheck(Class2::Enum12_Val4, $val);
116$val = enumCheck(Class2::Enum12_Val5h, 2121);
117$val = enumCheck(Class2::Enum12_Val6h, $val);
118
119$val = 0;
120$val = enumCheck(Class2::Val1, 2131);
121$val = enumCheck(Class2::Val2, 2132);
122$val = enumCheck(Class2::Val3, $val);
123$val = enumCheck(Class2::Val4, $val);
124$val = enumCheck(Class2::Val5i, 2131);
125$val = enumCheck(Class2::Val6i, $val);
126
127$val = 0;
128$val = enumCheck(Class2::Enum14_Val1, 2141);
129$val = enumCheck(Class2::Enum14_Val2, 2142);
130$val = enumCheck(Class2::Enum14_Val3, $val);
131$val = enumCheck(Class2::Enum14_Val4, $val);
132$val = enumCheck(Class2::Enum14_Val5j, 2141);
133$val = enumCheck(Class2::Enum14_Val6j, $val);
134
135# Requires nested class support to work
136#$val = 0;
137#$val = enumCheck(Class2::Struct1.Enum12_Val1, 4121);
138#$val = enumCheck(Class2::Struct1.Enum12_Val2, 4122);
139#$val = enumCheck(Class2::Struct1.Enum12_Val3, $val);
140#$val = enumCheck(Class2::Struct1.Enum12_Val4, $val);
141#$val = enumCheck(Class2::Struct1.Enum12_Val5k, 4121);
142#$val = enumCheck(Class2::Struct1.Enum12_Val6k, $val);
143#
144#$val = 0;
145#$val = enumCheck(Class2::Struct1.$val1, 4131);
146#$val = enumCheck(Class2::Struct1.$val2, 4132);
147#$val = enumCheck(Class2::Struct1.$val3, $val);
148#$val = enumCheck(Class2::Struct1.$val4, $val);
149#$val = enumCheck(Class2::Struct1.$val5l, 4131);
150#$val = enumCheck(Class2::Struct1.$val6l, $val);
151#
152#$val = 0;
153#$val = enumCheck(Class2::Struct1.Enum14_Val1, 4141);
154#$val = enumCheck(Class2::Struct1.Enum14_Val2, 4142);
155#$val = enumCheck(Class2::Struct1.Enum14_Val3, $val);
156#$val = enumCheck(Class2::Struct1.Enum14_Val4, $val);
157#$val = enumCheck(Class2::Struct1.Enum14_Val5m, 4141);
158#$val = enumCheck(Class2::Struct1.Enum14_Val6m, $val);
159
160$class1 = new Class1();
161enumCheck($class1->class1Test1(Enum1_Val5a), 13);
162enumCheck($class1->class1Test2(Class1::Enum12_Val5c), 1121);
163#enumCheck($class1.class1Test3(Class1::Struct1.Enum12_Val5f), 3121);
164
165enumCheck(globalTest1(Enum1_Val5a), 13);
166enumCheck(globalTest2(Class1::Enum12_Val5c), 1121);
167#enumCheck(globalTest3(Class1::Struct1.Enum12_Val5f), 3121);
168
169?>
170