1<?php
2
3use Foo\TestMessage;
4use Foo\TestEnum;
5use Foo\TestMessage\Sub;
6
7class TestBase extends \PHPUnit\Framework\TestCase
8{
9
10    public function setFields(TestMessage $m)
11    {
12        TestUtil::setTestMessage($m);
13    }
14
15    public function setFields2(TestMessage $m)
16    {
17        TestUtil::setTestMessage2($m);
18    }
19
20    public function expectFields(TestMessage $m)
21    {
22        $this->assertSame(-42,  $m->getOptionalInt32());
23        $this->assertSame(42,  $m->getOptionalUint32());
24        $this->assertSame(-44,  $m->getOptionalSint32());
25        $this->assertSame(46,   $m->getOptionalFixed32());
26        $this->assertSame(-46,  $m->getOptionalSfixed32());
27        $this->assertSame(1.5,  $m->getOptionalFloat());
28        $this->assertSame(1.6,  $m->getOptionalDouble());
29        $this->assertSame(true, $m->getOptionalBool());
30        $this->assertSame('a',  $m->getOptionalString());
31        $this->assertSame('bbbb',  $m->getOptionalBytes());
32        $this->assertSame(TestEnum::ONE, $m->getOptionalEnum());
33        $this->assertSame(33,   $m->getOptionalMessage()->getA());
34        if (PHP_INT_SIZE == 4) {
35            $this->assertSame('-43',  $m->getOptionalInt64());
36            $this->assertSame('43',   $m->getOptionalUint64());
37            $this->assertSame('-45',  $m->getOptionalSint64());
38            $this->assertSame('47',   $m->getOptionalFixed64());
39            $this->assertSame('-47',  $m->getOptionalSfixed64());
40        } else {
41            $this->assertSame(-43,  $m->getOptionalInt64());
42            $this->assertSame(43,   $m->getOptionalUint64());
43            $this->assertSame(-45,  $m->getOptionalSint64());
44            $this->assertSame(47,   $m->getOptionalFixed64());
45            $this->assertSame(-47,  $m->getOptionalSfixed64());
46        }
47
48        $this->assertEquals(-42,  $m->getRepeatedInt32()[0]);
49        $this->assertEquals(42,   $m->getRepeatedUint32()[0]);
50        $this->assertEquals(-43,  $m->getRepeatedInt64()[0]);
51        $this->assertEquals(43,   $m->getRepeatedUint64()[0]);
52        $this->assertEquals(-44,  $m->getRepeatedSint32()[0]);
53        $this->assertEquals(-45,  $m->getRepeatedSint64()[0]);
54        $this->assertEquals(46,   $m->getRepeatedFixed32()[0]);
55        $this->assertEquals(47,   $m->getRepeatedFixed64()[0]);
56        $this->assertEquals(-46,  $m->getRepeatedSfixed32()[0]);
57        $this->assertEquals(-47,  $m->getRepeatedSfixed64()[0]);
58        $this->assertEquals(1.5,  $m->getRepeatedFloat()[0]);
59        $this->assertEquals(1.6,  $m->getRepeatedDouble()[0]);
60        $this->assertEquals(true, $m->getRepeatedBool()[0]);
61        $this->assertEquals('a',  $m->getRepeatedString()[0]);
62        $this->assertEquals('bbbb',  $m->getRepeatedBytes()[0]);
63        $this->assertEquals(34,   $m->getRepeatedMessage()[0]->GetA());
64
65        $this->assertEquals(-52,   $m->getRepeatedInt32()[1]);
66        $this->assertEquals(52,    $m->getRepeatedUint32()[1]);
67        $this->assertEquals(-53,   $m->getRepeatedInt64()[1]);
68        $this->assertEquals(53,    $m->getRepeatedUint64()[1]);
69        $this->assertEquals(-54,   $m->getRepeatedSint32()[1]);
70        $this->assertEquals(-55,   $m->getRepeatedSint64()[1]);
71        $this->assertEquals(56,    $m->getRepeatedFixed32()[1]);
72        $this->assertEquals(57,    $m->getRepeatedFixed64()[1]);
73        $this->assertEquals(-56,   $m->getRepeatedSfixed32()[1]);
74        $this->assertEquals(-57,   $m->getRepeatedSfixed64()[1]);
75        $this->assertEquals(2.5,   $m->getRepeatedFloat()[1]);
76        $this->assertEquals(2.6,   $m->getRepeatedDouble()[1]);
77        $this->assertEquals(false, $m->getRepeatedBool()[1]);
78        $this->assertEquals('c',   $m->getRepeatedString()[1]);
79        $this->assertEquals('dddd',   $m->getRepeatedBytes()[1]);
80        $this->assertEquals(35,    $m->getRepeatedMessage()[1]->GetA());
81
82        if (PHP_INT_SIZE == 4) {
83            $this->assertEquals('-63', $m->getMapInt64Int64()['-63']);
84            $this->assertEquals('63',  $m->getMapUint64Uint64()['63']);
85            $this->assertEquals('-65', $m->getMapSint64Sint64()['-65']);
86            $this->assertEquals('67',  $m->getMapFixed64Fixed64()['67']);
87            $this->assertEquals('-69',  $m->getMapSfixed64Sfixed64()['-69']);
88        } else {
89            $this->assertEquals(-63, $m->getMapInt64Int64()[-63]);
90            $this->assertEquals(63,  $m->getMapUint64Uint64()[63]);
91            $this->assertEquals(-65, $m->getMapSint64Sint64()[-65]);
92            $this->assertEquals(67,  $m->getMapFixed64Fixed64()[67]);
93            $this->assertEquals(-69,  $m->getMapSfixed64Sfixed64()[-69]);
94        }
95        $this->assertEquals(-62, $m->getMapInt32Int32()[-62]);
96        $this->assertEquals(62,  $m->getMapUint32Uint32()[62]);
97        $this->assertEquals(-64, $m->getMapSint32Sint32()[-64]);
98        $this->assertEquals(66,  $m->getMapFixed32Fixed32()[66]);
99        $this->assertEquals(-68,  $m->getMapSfixed32Sfixed32()[-68]);
100        $this->assertEquals(3.5, $m->getMapInt32Float()[1]);
101        $this->assertEquals(3.6, $m->getMapInt32Double()[1]);
102        $this->assertEquals(true , $m->getMapBoolBool()[true]);
103        $this->assertEquals('e', $m->getMapStringString()['e']);
104        $this->assertEquals('ffff', $m->getMapInt32Bytes()[1]);
105        $this->assertEquals(TestEnum::ONE, $m->getMapInt32Enum()[1]);
106        $this->assertEquals(36, $m->getMapInt32Message()[1]->GetA());
107    }
108
109    // Test message merged from setFields and setFields2.
110    public function expectFieldsMerged(TestMessage $m)
111    {
112        $this->assertSame(-144,  $m->getOptionalSint32());
113        $this->assertSame(146,   $m->getOptionalFixed32());
114        $this->assertSame(-146,  $m->getOptionalSfixed32());
115        $this->assertSame(11.5,  $m->getOptionalFloat());
116        $this->assertSame(11.6,  $m->getOptionalDouble());
117        $this->assertSame(true, $m->getOptionalBool());
118        $this->assertSame('aa',  $m->getOptionalString());
119        $this->assertSame('bb',  $m->getOptionalBytes());
120        $this->assertSame(133,   $m->getOptionalMessage()->getA());
121        if (PHP_INT_SIZE == 4) {
122            $this->assertSame('-143',  $m->getOptionalInt64());
123            $this->assertSame('143',   $m->getOptionalUint64());
124            $this->assertSame('-145',  $m->getOptionalSint64());
125            $this->assertSame('147',   $m->getOptionalFixed64());
126            $this->assertSame('-147',  $m->getOptionalSfixed64());
127        } else {
128            $this->assertSame(-143,  $m->getOptionalInt64());
129            $this->assertSame(143,   $m->getOptionalUint64());
130            $this->assertSame(-145,  $m->getOptionalSint64());
131            $this->assertSame(147,   $m->getOptionalFixed64());
132            $this->assertSame(-147,  $m->getOptionalSfixed64());
133        }
134
135        $this->assertEquals(-42,  $m->getRepeatedInt32()[0]);
136        $this->assertEquals(42,   $m->getRepeatedUint32()[0]);
137        $this->assertEquals(-43,  $m->getRepeatedInt64()[0]);
138        $this->assertEquals(43,   $m->getRepeatedUint64()[0]);
139        $this->assertEquals(-44,  $m->getRepeatedSint32()[0]);
140        $this->assertEquals(-45,  $m->getRepeatedSint64()[0]);
141        $this->assertEquals(46,   $m->getRepeatedFixed32()[0]);
142        $this->assertEquals(47,   $m->getRepeatedFixed64()[0]);
143        $this->assertEquals(-46,  $m->getRepeatedSfixed32()[0]);
144        $this->assertEquals(-47,  $m->getRepeatedSfixed64()[0]);
145        $this->assertEquals(1.5,  $m->getRepeatedFloat()[0]);
146        $this->assertEquals(1.6,  $m->getRepeatedDouble()[0]);
147        $this->assertEquals(true, $m->getRepeatedBool()[0]);
148        $this->assertEquals('a',  $m->getRepeatedString()[0]);
149        $this->assertEquals('bbbb',  $m->getRepeatedBytes()[0]);
150        $this->assertEquals(TestEnum::ZERO,  $m->getRepeatedEnum()[0]);
151        $this->assertEquals(34,   $m->getRepeatedMessage()[0]->GetA());
152
153        $this->assertEquals(-52,   $m->getRepeatedInt32()[1]);
154        $this->assertEquals(52,    $m->getRepeatedUint32()[1]);
155        $this->assertEquals(-53,   $m->getRepeatedInt64()[1]);
156        $this->assertEquals(53,    $m->getRepeatedUint64()[1]);
157        $this->assertEquals(-54,   $m->getRepeatedSint32()[1]);
158        $this->assertEquals(-55,   $m->getRepeatedSint64()[1]);
159        $this->assertEquals(56,    $m->getRepeatedFixed32()[1]);
160        $this->assertEquals(57,    $m->getRepeatedFixed64()[1]);
161        $this->assertEquals(-56,   $m->getRepeatedSfixed32()[1]);
162        $this->assertEquals(-57,   $m->getRepeatedSfixed64()[1]);
163        $this->assertEquals(2.5,   $m->getRepeatedFloat()[1]);
164        $this->assertEquals(2.6,   $m->getRepeatedDouble()[1]);
165        $this->assertEquals(false, $m->getRepeatedBool()[1]);
166        $this->assertEquals('c',   $m->getRepeatedString()[1]);
167        $this->assertEquals('dddd',   $m->getRepeatedBytes()[1]);
168        $this->assertEquals(TestEnum::ONE,  $m->getRepeatedEnum()[1]);
169        $this->assertEquals(35,    $m->getRepeatedMessage()[1]->GetA());
170
171        $this->assertEquals(-142,  $m->getRepeatedInt32()[2]);
172        $this->assertEquals(142,   $m->getRepeatedUint32()[2]);
173        $this->assertEquals(-143,  $m->getRepeatedInt64()[2]);
174        $this->assertEquals(143,   $m->getRepeatedUint64()[2]);
175        $this->assertEquals(-144,  $m->getRepeatedSint32()[2]);
176        $this->assertEquals(-145,  $m->getRepeatedSint64()[2]);
177        $this->assertEquals(146,   $m->getRepeatedFixed32()[2]);
178        $this->assertEquals(147,   $m->getRepeatedFixed64()[2]);
179        $this->assertEquals(-146,  $m->getRepeatedSfixed32()[2]);
180        $this->assertEquals(-147,  $m->getRepeatedSfixed64()[2]);
181        $this->assertEquals(11.5,  $m->getRepeatedFloat()[2]);
182        $this->assertEquals(11.6,  $m->getRepeatedDouble()[2]);
183        $this->assertEquals(false, $m->getRepeatedBool()[2]);
184        $this->assertEquals('aa',  $m->getRepeatedString()[2]);
185        $this->assertEquals('bb',  $m->getRepeatedBytes()[2]);
186        $this->assertEquals(TestEnum::TWO,  $m->getRepeatedEnum()[2]);
187        $this->assertEquals(134,   $m->getRepeatedMessage()[2]->GetA());
188
189        if (PHP_INT_SIZE == 4) {
190            $this->assertEquals('-163', $m->getMapInt64Int64()['-63']);
191            $this->assertEquals('163',  $m->getMapUint64Uint64()['63']);
192            $this->assertEquals('-165', $m->getMapSint64Sint64()['-65']);
193            $this->assertEquals('167',  $m->getMapFixed64Fixed64()['67']);
194            $this->assertEquals('-169',  $m->getMapSfixed64Sfixed64()['-69']);
195        } else {
196            $this->assertEquals(-163, $m->getMapInt64Int64()[-63]);
197            $this->assertEquals(163,  $m->getMapUint64Uint64()[63]);
198            $this->assertEquals(-165, $m->getMapSint64Sint64()[-65]);
199            $this->assertEquals(167,  $m->getMapFixed64Fixed64()[67]);
200            $this->assertEquals(-169,  $m->getMapSfixed64Sfixed64()[-69]);
201        }
202        $this->assertEquals(-162, $m->getMapInt32Int32()[-62]);
203        $this->assertEquals(162,  $m->getMapUint32Uint32()[62]);
204        $this->assertEquals(-164, $m->getMapSint32Sint32()[-64]);
205        $this->assertEquals(166,  $m->getMapFixed32Fixed32()[66]);
206        $this->assertEquals(-168,  $m->getMapSfixed32Sfixed32()[-68]);
207        $this->assertEquals(13.5, $m->getMapInt32Float()[1]);
208        $this->assertEquals(13.6, $m->getMapInt32Double()[1]);
209        $this->assertEquals(false , $m->getMapBoolBool()[true]);
210        $this->assertEquals('ee', $m->getMapStringString()['e']);
211        $this->assertEquals('ff', $m->getMapInt32Bytes()[1]);
212        $this->assertEquals(TestEnum::TWO, $m->getMapInt32Enum()[1]);
213        $this->assertEquals(136, $m->getMapInt32Message()[1]->GetA());
214
215        if (PHP_INT_SIZE == 4) {
216            $this->assertEquals('-163', $m->getMapInt64Int64()['-163']);
217            $this->assertEquals('163',  $m->getMapUint64Uint64()['163']);
218            $this->assertEquals('-165', $m->getMapSint64Sint64()['-165']);
219            $this->assertEquals('167',  $m->getMapFixed64Fixed64()['167']);
220            $this->assertEquals('-169',  $m->getMapSfixed64Sfixed64()['-169']);
221        } else {
222            $this->assertEquals(-163, $m->getMapInt64Int64()[-163]);
223            $this->assertEquals(163,  $m->getMapUint64Uint64()[163]);
224            $this->assertEquals(-165, $m->getMapSint64Sint64()[-165]);
225            $this->assertEquals(167,  $m->getMapFixed64Fixed64()[167]);
226            $this->assertEquals(-169,  $m->getMapSfixed64Sfixed64()[-169]);
227        }
228        $this->assertEquals(-162, $m->getMapInt32Int32()[-162]);
229        $this->assertEquals(162,  $m->getMapUint32Uint32()[162]);
230        $this->assertEquals(-164, $m->getMapSint32Sint32()[-164]);
231        $this->assertEquals(166,  $m->getMapFixed32Fixed32()[166]);
232        $this->assertEquals(-168,  $m->getMapSfixed32Sfixed32()[-168]);
233        $this->assertEquals(13.5, $m->getMapInt32Float()[2]);
234        $this->assertEquals(13.6, $m->getMapInt32Double()[2]);
235        $this->assertEquals(false , $m->getMapBoolBool()[false]);
236        $this->assertEquals('ee', $m->getMapStringString()['ee']);
237        $this->assertEquals('ff', $m->getMapInt32Bytes()[2]);
238        $this->assertEquals(TestEnum::TWO, $m->getMapInt32Enum()[2]);
239        $this->assertEquals(136, $m->getMapInt32Message()[2]->GetA());
240    }
241
242    public function expectEmptyFields(TestMessage $m)
243    {
244        $this->assertSame(0,   $m->getOptionalInt32());
245        $this->assertSame(0,   $m->getOptionalUint32());
246        $this->assertSame(0,   $m->getOptionalSint32());
247        $this->assertSame(0,   $m->getOptionalFixed32());
248        $this->assertSame(0,   $m->getOptionalSfixed32());
249        $this->assertSame(0.0, $m->getOptionalFloat());
250        $this->assertSame(0.0, $m->getOptionalDouble());
251        $this->assertSame(false, $m->getOptionalBool());
252        $this->assertSame('',  $m->getOptionalString());
253        $this->assertSame('',  $m->getOptionalBytes());
254        $this->assertSame(0, $m->getOptionalEnum());
255        $this->assertNull($m->getOptionalMessage());
256        $this->assertNull($m->getOptionalIncludedMessage());
257        $this->assertNull($m->getRecursive());
258        if (PHP_INT_SIZE == 4) {
259            $this->assertSame("0", $m->getOptionalInt64());
260            $this->assertSame("0", $m->getOptionalUint64());
261            $this->assertSame("0", $m->getOptionalSint64());
262            $this->assertSame("0", $m->getOptionalFixed64());
263            $this->assertSame("0", $m->getOptionalSfixed64());
264        } else {
265            $this->assertSame(0, $m->getOptionalInt64());
266            $this->assertSame(0, $m->getOptionalUint64());
267            $this->assertSame(0, $m->getOptionalSint64());
268            $this->assertSame(0, $m->getOptionalFixed64());
269            $this->assertSame(0, $m->getOptionalSfixed64());
270        }
271
272        $this->assertEquals(0, count($m->getRepeatedInt32()));
273        $this->assertEquals(0, count($m->getRepeatedUint32()));
274        $this->assertEquals(0, count($m->getRepeatedInt64()));
275        $this->assertEquals(0, count($m->getRepeatedUint64()));
276        $this->assertEquals(0, count($m->getRepeatedSint32()));
277        $this->assertEquals(0, count($m->getRepeatedSint64()));
278        $this->assertEquals(0, count($m->getRepeatedFixed32()));
279        $this->assertEquals(0, count($m->getRepeatedFixed64()));
280        $this->assertEquals(0, count($m->getRepeatedSfixed32()));
281        $this->assertEquals(0, count($m->getRepeatedSfixed64()));
282        $this->assertEquals(0, count($m->getRepeatedFloat()));
283        $this->assertEquals(0, count($m->getRepeatedDouble()));
284        $this->assertEquals(0, count($m->getRepeatedBool()));
285        $this->assertEquals(0, count($m->getRepeatedString()));
286        $this->assertEquals(0, count($m->getRepeatedBytes()));
287        $this->assertEquals(0, count($m->getRepeatedEnum()));
288        $this->assertEquals(0, count($m->getRepeatedMessage()));
289        $this->assertEquals(0, count($m->getRepeatedRecursive()));
290
291        $this->assertSame("", $m->getMyOneof());
292        $this->assertSame(0,   $m->getOneofInt32());
293        $this->assertSame(0,   $m->getOneofUint32());
294        $this->assertSame(0,   $m->getOneofSint32());
295        $this->assertSame(0,   $m->getOneofFixed32());
296        $this->assertSame(0,   $m->getOneofSfixed32());
297        $this->assertSame(0.0, $m->getOneofFloat());
298        $this->assertSame(0.0, $m->getOneofDouble());
299        $this->assertSame(false, $m->getOneofBool());
300        $this->assertSame('',  $m->getOneofString());
301        $this->assertSame('',  $m->getOneofBytes());
302        $this->assertSame(0, $m->getOneofEnum());
303        $this->assertNull($m->getOptionalMessage());
304        if (PHP_INT_SIZE == 4) {
305            $this->assertSame("0", $m->getOneofInt64());
306            $this->assertSame("0", $m->getOneofUint64());
307            $this->assertSame("0", $m->getOneofSint64());
308            $this->assertSame("0", $m->getOneofFixed64());
309            $this->assertSame("0", $m->getOneofSfixed64());
310        } else {
311            $this->assertSame(0, $m->getOneofInt64());
312            $this->assertSame(0, $m->getOneofUint64());
313            $this->assertSame(0, $m->getOneofSint64());
314            $this->assertSame(0, $m->getOneofFixed64());
315            $this->assertSame(0, $m->getOneofSfixed64());
316        }
317
318        $this->assertEquals(0, count($m->getMapInt64Int64()));
319        $this->assertEquals(0, count($m->getMapUint64Uint64()));
320        $this->assertEquals(0, count($m->getMapSint64Sint64()));
321        $this->assertEquals(0, count($m->getMapFixed64Fixed64()));
322        $this->assertEquals(0, count($m->getMapInt32Int32()));
323        $this->assertEquals(0, count($m->getMapUint32Uint32()));
324        $this->assertEquals(0, count($m->getMapSint32Sint32()));
325        $this->assertEquals(0, count($m->getMapFixed32Fixed32()));
326        $this->assertEquals(0, count($m->getMapSfixed32Sfixed32()));
327        $this->assertEquals(0, count($m->getMapSfixed64Sfixed64()));
328        $this->assertEquals(0, count($m->getMapInt32Float()));
329        $this->assertEquals(0, count($m->getMapInt32Double()));
330        $this->assertEquals(0, count($m->getMapBoolBool()));
331        $this->assertEquals(0, count($m->getMapStringString()));
332        $this->assertEquals(0, count($m->getMapInt32Bytes()));
333        $this->assertEquals(0, count($m->getMapInt32Enum()));
334        $this->assertEquals(0, count($m->getMapInt32Message()));
335        $this->assertEquals(0, count($m->getMapRecursive()));
336    }
337
338  // This test is to avoid the warning of no test by php unit.
339  public function testNone()
340  {
341      $this->assertTrue(true);
342  }
343}
344