1<?php
2//
3// Copyright (c) ZeroC, Inc. All rights reserved.
4//
5
6$NS = function_exists("Ice\\initialize");
7require_once('Test.php');
8
9function allTests($helper)
10{
11    $ref = sprintf("test:%s", $helper->getTestEndpoint());
12    $communicator = $helper->communicator();
13    $obj = $communicator->stringToProxy($ref);
14    test($obj != null);
15    $proxy = $obj->ice_checkedCast("::Test::TestIntf");
16    test($proxy != null);
17
18    global $NS;
19
20    $ByteConst1 = $NS ? constant("Test\\ByteConst1") : constant("Test_ByteConst1");
21    $ShortConst1 = $NS ? constant("Test\\ShortConst1") : constant("Test_ShortConst1");
22    $IntConst1 = $NS ? constant("Test\\IntConst1") : constant("Test_IntConst1");
23    $LongConst1 = $NS ? constant("Test\\LongConst1") : constant("Test_LongConst1");
24
25    $ByteConst2 = $NS ? constant("Test\\ByteConst2") : constant("Test_ByteConst2");
26    $ShortConst2 = $NS ? constant("Test\\ShortConst2") : constant("Test_ShortConst2");
27    $IntConst2 = $NS ? constant("Test\\IntConst2") : constant("Test_IntConst2");
28    $LongConst2 = $NS ? constant("Test\\LongConst2") : constant("Test_LongConst2");
29
30    $benum1 = $NS ? constant("Test\\ByteEnum::benum1") : constant("Test_ByteEnum::benum1");
31    $benum2 = $NS ? constant("Test\\ByteEnum::benum2") : constant("Test_ByteEnum::benum2");
32    $benum3 = $NS ? constant("Test\\ByteEnum::benum3") : constant("Test_ByteEnum::benum3");
33    $benum4 = $NS ? constant("Test\\ByteEnum::benum4") : constant("Test_ByteEnum::benum4");
34    $benum5 = $NS ? constant("Test\\ByteEnum::benum5") : constant("Test_ByteEnum::benum5");
35    $benum6 = $NS ? constant("Test\\ByteEnum::benum6") : constant("Test_ByteEnum::benum6");
36    $benum7 = $NS ? constant("Test\\ByteEnum::benum7") : constant("Test_ByteEnum::benum7");
37    $benum8 = $NS ? constant("Test\\ByteEnum::benum8") : constant("Test_ByteEnum::benum8");
38    $benum9 = $NS ? constant("Test\\ByteEnum::benum9") : constant("Test_ByteEnum::benum9");
39    $benum10 = $NS ? constant("Test\\ByteEnum::benum10") : constant("Test_ByteEnum::benum10");
40    $benum11 = $NS ? constant("Test\\ByteEnum::benum11") : constant("Test_ByteEnum::benum11");
41
42    $senum1 = $NS ? constant("Test\\ShortEnum::senum1") : constant("Test_ShortEnum::senum1");
43    $senum2 = $NS ? constant("Test\\ShortEnum::senum2") : constant("Test_ShortEnum::senum2");
44    $senum3 = $NS ? constant("Test\\ShortEnum::senum3") : constant("Test_ShortEnum::senum3");
45    $senum4 = $NS ? constant("Test\\ShortEnum::senum4") : constant("Test_ShortEnum::senum4");
46    $senum5 = $NS ? constant("Test\\ShortEnum::senum5") : constant("Test_ShortEnum::senum5");
47    $senum6 = $NS ? constant("Test\\ShortEnum::senum6") : constant("Test_ShortEnum::senum6");
48    $senum7 = $NS ? constant("Test\\ShortEnum::senum7") : constant("Test_ShortEnum::senum7");
49    $senum8 = $NS ? constant("Test\\ShortEnum::senum8") : constant("Test_ShortEnum::senum8");
50    $senum9 = $NS ? constant("Test\\ShortEnum::senum9") : constant("Test_ShortEnum::senum9");
51    $senum10 = $NS ? constant("Test\\ShortEnum::senum10") : constant("Test_ShortEnum::senum10");
52    $senum11 = $NS ? constant("Test\\ShortEnum::senum11") : constant("Test_ShortEnum::senum11");
53
54    $ienum1 = $NS ? constant("Test\\IntEnum::ienum1") : constant("Test_IntEnum::ienum1");
55    $ienum2 = $NS ? constant("Test\\IntEnum::ienum2") : constant("Test_IntEnum::ienum2");
56    $ienum3 = $NS ? constant("Test\\IntEnum::ienum3") : constant("Test_IntEnum::ienum3");
57    $ienum4 = $NS ? constant("Test\\IntEnum::ienum4") : constant("Test_IntEnum::ienum4");
58    $ienum5 = $NS ? constant("Test\\IntEnum::ienum5") : constant("Test_IntEnum::ienum5");
59    $ienum6 = $NS ? constant("Test\\IntEnum::ienum6") : constant("Test_IntEnum::ienum6");
60    $ienum7 = $NS ? constant("Test\\IntEnum::ienum7") : constant("Test_IntEnum::ienum7");
61    $ienum8 = $NS ? constant("Test\\IntEnum::ienum8") : constant("Test_IntEnum::ienum8");
62    $ienum9 = $NS ? constant("Test\\IntEnum::ienum9") : constant("Test_IntEnum::ienum9");
63    $ienum10 = $NS ? constant("Test\\IntEnum::ienum10") : constant("Test_IntEnum::ienum10");
64    $ienum11 = $NS ? constant("Test\\IntEnum::ienum11") : constant("Test_IntEnum::ienum11");
65    $ienum12 = $NS ? constant("Test\\IntEnum::ienum12") : constant("Test_IntEnum::ienum12");
66
67    $red = $NS ? constant("Test\\SimpleEnum::red") : constant("Test_SimpleEnum::red");
68    $green = $NS ? constant("Test\\SimpleEnum::green") : constant("Test_SimpleEnum::green");
69    $blue = $NS ? constant("Test\\SimpleEnum::blue") : constant("Test_SimpleEnum::blue");
70
71    echo "testing enum values... ";
72    flush();
73
74    test($benum1 == 0);
75    test($benum2 == 1);
76    test($benum3 == $ByteConst1);
77    test($benum4 == $ByteConst1 + 1);
78    test($benum5 == $ShortConst1);
79    test($benum6 == $ShortConst1 + 1);
80    test($benum7 == $IntConst1);
81    test($benum8 == $IntConst1 + 1);
82    test($benum9 == $LongConst1);
83    test($benum10 == $LongConst1 + 1);
84    test($benum11 == $ByteConst2);
85
86    test($senum1 == 3);
87    test($senum2 == 4);
88    test($senum3 == $ByteConst1);
89    test($senum4 == $ByteConst1 + 1);
90    test($senum5 == $ShortConst1);
91    test($senum6 == $ShortConst1 + 1);
92    test($senum7 == $IntConst1);
93    test($senum8 == $IntConst1 + 1);
94    test($senum9 == $LongConst1);
95    test($senum10 == $LongConst1 + 1);
96    test($senum11 == $ShortConst2);
97
98    test($ienum1 == 0);
99    test($ienum2 == 1);
100    test($ienum3 == $ByteConst1);
101    test($ienum4 == $ByteConst1 + 1);
102    test($ienum5 == $ShortConst1);
103    test($ienum6 == $ShortConst1 + 1);
104    test($ienum7 == $IntConst1);
105    test($ienum8 == $IntConst1 + 1);
106    test($ienum9 == $LongConst1);
107    test($ienum10 == $LongConst1 + 1);
108    test($ienum11 == $IntConst2);
109    test($ienum12 == $LongConst2);
110
111    test($red == 0);
112    test($green == 1);
113    test($blue == 2);
114
115    echo "ok\n";
116
117    echo "testing enum operations... ";
118    flush();
119
120    $byteEnum = 0;
121    test($proxy->opByte($benum1, $byteEnum) == $benum1);
122    test($byteEnum == $benum1);
123    test($proxy->opByte($benum11, $byteEnum) == $benum11);
124    test($byteEnum == $benum11);
125
126    $shortEnum = 0;
127    test($proxy->opShort($senum1, $shortEnum) == $senum1);
128    test($shortEnum == $senum1);
129    test($proxy->opShort($senum11, $shortEnum) == $senum11);
130    test($shortEnum == $senum11);
131
132    $intEnum = 0;
133    test($proxy->opInt($ienum1, $intEnum) == $ienum1);
134    test($intEnum == $ienum1);
135    test($proxy->opInt($ienum11, $intEnum) == $ienum11);
136    test($intEnum == $ienum11);
137    test($proxy->opInt($ienum12, $intEnum) == $ienum12);
138    test($intEnum == $ienum12);
139
140    $s = 0;
141    test($proxy->opSimple($green, $s) == $green);
142    test($s == $green);
143
144    echo "ok\n";
145
146    echo "testing enum exceptions... ";
147    flush();
148
149    try
150    {
151        $proxy->opByte(-1, $byteEnum); // Negative enumerators are not supported
152        test(false);
153    }
154    catch(InvalidArgumentException $ex)
155    {
156    }
157
158    try
159    {
160        $proxy->opByte(2, $byteEnum); // Invalid enumerator
161        test(false);
162    }
163    catch(InvalidArgumentException $ex)
164    {
165    }
166
167    try
168    {
169        $proxy->opByte(128, $byteEnum); // Invalid enumerator
170        test(false);
171    }
172    catch(InvalidArgumentException $ex)
173    {
174    }
175
176    try
177    {
178        $proxy->opShort(-1, $shortEnum); // Negative enumerators are not supported
179        test(false);
180    }
181    catch(InvalidArgumentException $ex)
182    {
183    }
184
185    try
186    {
187        $proxy->opShort(0, $shortEnum); // Invalid enumerator
188        test(false);
189    }
190    catch(InvalidArgumentException $ex)
191    {
192    }
193
194    try
195    {
196        $proxy->opShort(128, $shortEnum); // Invalid enumerator
197        test(false);
198    }
199    catch(InvalidArgumentException $ex)
200    {
201    }
202
203    try
204    {
205        $proxy->opInt(-1, $intEnum); // Negative enumerators are not supported
206        test(false);
207    }
208    catch(InvalidArgumentException $ex)
209    {
210    }
211
212    try
213    {
214        $proxy->opInt(2, $intEnum); // Invalid enumerator
215        test(false);
216    }
217    catch(InvalidArgumentException $ex)
218    {
219    }
220
221    echo "ok\n";
222
223    return $proxy;
224}
225
226class Client extends TestHelper
227{
228    function run($args)
229    {
230        try
231        {
232            $communicator = $this->initialize($args);
233            $proxy= allTests($this);
234            $proxy->shutdown();
235            $communicator->destroy();
236        }
237        catch(Exception $ex)
238        {
239            $communicator->destroy();
240            throw $ex;
241        }
242    }
243}
244?>
245