OLD | NEW |
| (Empty) |
1 <?php | |
2 | |
3 use Foo\TestEnum; | |
4 use Foo\TestMessage; | |
5 use Foo\TestMessage_Sub; | |
6 use Foo\TestPackedMessage; | |
7 use Foo\TestUnpackedMessage; | |
8 | |
9 define('MAX_FLOAT_DIFF', 0.000001); | |
10 | |
11 if (PHP_INT_SIZE == 8) { | |
12 define('MAX_INT_STRING', '9223372036854775807'); | |
13 define('MAX_INT_UPPER_STRING', '9223372036854775808'); | |
14 } else { | |
15 define('MAX_INT_STRING', '2147483647'); | |
16 define('MAX_INT_UPPER_STRING', '2147483648'); | |
17 } | |
18 | |
19 define('MAX_INT32', 2147483647); | |
20 define('MAX_INT32_FLOAT', 2147483647.0); | |
21 define('MAX_INT32_STRING', '2147483647'); | |
22 | |
23 define('MIN_INT32', (int)-2147483648); | |
24 define('MIN_INT32_FLOAT', -2147483648.0); | |
25 define('MIN_INT32_STRING', '-2147483648'); | |
26 | |
27 define('MAX_UINT32', 4294967295); | |
28 define('MAX_UINT32_FLOAT', 4294967295.0); | |
29 define('MAX_UINT32_STRING', '4294967295'); | |
30 | |
31 define('MIN_UINT32', (int)-2147483648); | |
32 define('MIN_UINT32_FLOAT', -2147483648.0); | |
33 define('MIN_UINT32_STRING', '-2147483648'); | |
34 | |
35 define('MAX_INT64_STRING', '9223372036854775807'); | |
36 define('MIN_INT64_STRING', '-9223372036854775808'); | |
37 define('MAX_UINT64_STRING', '-9223372036854775808'); | |
38 | |
39 if (PHP_INT_SIZE === 8) { | |
40 define('MAX_INT64', (int)9223372036854775807); | |
41 define('MIN_INT64', (int)-9223372036854775808); | |
42 define('MAX_UINT64', (int)-9223372036854775808); | |
43 } else { | |
44 define('MAX_INT64', MAX_INT64_STRING); | |
45 define('MIN_INT64', MIN_INT64_STRING); | |
46 define('MAX_UINT64', MAX_UINT64_STRING); | |
47 } | |
48 | |
49 class TestUtil | |
50 { | |
51 | |
52 public static function setTestMessage(TestMessage $m) | |
53 { | |
54 $sub = new TestMessage_Sub(); | |
55 | |
56 $m->setOptionalInt32(-42); | |
57 $m->setOptionalInt64(-43); | |
58 $m->setOptionalUint32(42); | |
59 $m->setOptionalUint64(43); | |
60 $m->setOptionalSint32(-44); | |
61 $m->setOptionalSint64(-45); | |
62 $m->setOptionalFixed32(46); | |
63 $m->setOptionalFixed64(47); | |
64 $m->setOptionalSfixed32(-46); | |
65 $m->setOptionalSfixed64(-47); | |
66 $m->setOptionalFloat(1.5); | |
67 $m->setOptionalDouble(1.6); | |
68 $m->setOptionalBool(true); | |
69 $m->setOptionalString('a'); | |
70 $m->setOptionalBytes('b'); | |
71 $m->setOptionalEnum(TestEnum::ONE); | |
72 $m->setOptionalMessage($sub); | |
73 $m->getOptionalMessage()->SetA(33); | |
74 | |
75 $m->getRepeatedInt32() []= -42; | |
76 $m->getRepeatedInt64() []= -43; | |
77 $m->getRepeatedUint32() []= 42; | |
78 $m->getRepeatedUint64() []= 43; | |
79 $m->getRepeatedSint32() []= -44; | |
80 $m->getRepeatedSint64() []= -45; | |
81 $m->getRepeatedFixed32() []= 46; | |
82 $m->getRepeatedFixed64() []= 47; | |
83 $m->getRepeatedSfixed32() []= -46; | |
84 $m->getRepeatedSfixed64() []= -47; | |
85 $m->getRepeatedFloat() []= 1.5; | |
86 $m->getRepeatedDouble() []= 1.6; | |
87 $m->getRepeatedBool() []= true; | |
88 $m->getRepeatedString() []= 'a'; | |
89 $m->getRepeatedBytes() []= 'b'; | |
90 $m->getRepeatedEnum() []= TestEnum::ZERO; | |
91 $m->getRepeatedMessage() []= new TestMessage_Sub(); | |
92 $m->getRepeatedMessage()[0]->setA(34); | |
93 | |
94 $m->getRepeatedInt32() []= -52; | |
95 $m->getRepeatedInt64() []= -53; | |
96 $m->getRepeatedUint32() []= 52; | |
97 $m->getRepeatedUint64() []= 53; | |
98 $m->getRepeatedSint32() []= -54; | |
99 $m->getRepeatedSint64() []= -55; | |
100 $m->getRepeatedFixed32() []= 56; | |
101 $m->getRepeatedFixed64() []= 57; | |
102 $m->getRepeatedSfixed32() []= -56; | |
103 $m->getRepeatedSfixed64() []= -57; | |
104 $m->getRepeatedFloat() []= 2.5; | |
105 $m->getRepeatedDouble() []= 2.6; | |
106 $m->getRepeatedBool() []= false; | |
107 $m->getRepeatedString() []= 'c'; | |
108 $m->getRepeatedBytes() []= 'd'; | |
109 $m->getRepeatedEnum() []= TestEnum::ONE; | |
110 $m->getRepeatedMessage() []= new TestMessage_Sub(); | |
111 $m->getRepeatedMessage()[1]->SetA(35); | |
112 | |
113 $m->getMapInt32Int32()[-62] = -62; | |
114 $m->getMapInt64Int64()[-63] = -63; | |
115 $m->getMapUint32Uint32()[62] = 62; | |
116 $m->getMapUint64Uint64()[63] = 63; | |
117 $m->getMapSint32Sint32()[-64] = -64; | |
118 $m->getMapSint64Sint64()[-65] = -65; | |
119 $m->getMapFixed32Fixed32()[66] = 66; | |
120 $m->getMapFixed64Fixed64()[67] = 67; | |
121 $m->getMapInt32Float()[1] = 3.5; | |
122 $m->getMapInt32Double()[1] = 3.6; | |
123 $m->getMapBoolBool()[true] = true; | |
124 $m->getMapStringString()['e'] = 'e'; | |
125 $m->getMapInt32Bytes()[1] = 'f'; | |
126 $m->getMapInt32Enum()[1] = TestEnum::ONE; | |
127 $m->getMapInt32Message()[1] = new TestMessage_Sub(); | |
128 $m->getMapInt32Message()[1]->SetA(36); | |
129 } | |
130 | |
131 public static function assertTestMessage(TestMessage $m) | |
132 { | |
133 if (PHP_INT_SIZE == 4) { | |
134 assert('-43' === $m->getOptionalInt64()); | |
135 assert('43' === $m->getOptionalUint64()); | |
136 assert('-45' === $m->getOptionalSint64()); | |
137 assert('47' === $m->getOptionalFixed64()); | |
138 assert('-47' === $m->getOptionalSfixed64()); | |
139 } else { | |
140 assert(-43 === $m->getOptionalInt64()); | |
141 assert(43 === $m->getOptionalUint64()); | |
142 assert(-45 === $m->getOptionalSint64()); | |
143 assert(47 === $m->getOptionalFixed64()); | |
144 assert(-47 === $m->getOptionalSfixed64()); | |
145 } | |
146 assert(-42 === $m->getOptionalInt32()); | |
147 assert(42 === $m->getOptionalUint32()); | |
148 assert(-44 === $m->getOptionalSint32()); | |
149 assert(46 === $m->getOptionalFixed32()); | |
150 assert(-46 === $m->getOptionalSfixed32()); | |
151 assert(1.5 === $m->getOptionalFloat()); | |
152 assert(1.6 === $m->getOptionalDouble()); | |
153 assert(true=== $m->getOptionalBool()); | |
154 assert('a' === $m->getOptionalString()); | |
155 assert('b' === $m->getOptionalBytes()); | |
156 assert(TestEnum::ONE === $m->getOptionalEnum()); | |
157 assert(33 === $m->getOptionalMessage()->getA()); | |
158 | |
159 if (PHP_INT_SIZE == 4) { | |
160 assert('-43' === $m->getRepeatedInt64()[0]); | |
161 assert('43' === $m->getRepeatedUint64()[0]); | |
162 assert('-45' === $m->getRepeatedSint64()[0]); | |
163 assert('47' === $m->getRepeatedFixed64()[0]); | |
164 assert('-47' === $m->getRepeatedSfixed64()[0]); | |
165 } else { | |
166 assert(-43 === $m->getRepeatedInt64()[0]); | |
167 assert(43 === $m->getRepeatedUint64()[0]); | |
168 assert(-45 === $m->getRepeatedSint64()[0]); | |
169 assert(47 === $m->getRepeatedFixed64()[0]); | |
170 assert(-47 === $m->getRepeatedSfixed64()[0]); | |
171 } | |
172 assert(-42 === $m->getRepeatedInt32()[0]); | |
173 assert(42 === $m->getRepeatedUint32()[0]); | |
174 assert(-44 === $m->getRepeatedSint32()[0]); | |
175 assert(46 === $m->getRepeatedFixed32()[0]); | |
176 assert(-46 === $m->getRepeatedSfixed32()[0]); | |
177 assert(1.5 === $m->getRepeatedFloat()[0]); | |
178 assert(1.6 === $m->getRepeatedDouble()[0]); | |
179 assert(true=== $m->getRepeatedBool()[0]); | |
180 assert('a' === $m->getRepeatedString()[0]); | |
181 assert('b' === $m->getRepeatedBytes()[0]); | |
182 assert(TestEnum::ZERO === $m->getRepeatedEnum()[0]); | |
183 assert(34 === $m->getRepeatedMessage()[0]->getA()); | |
184 | |
185 if (PHP_INT_SIZE == 4) { | |
186 assert('-53' === $m->getRepeatedInt64()[1]); | |
187 assert('53' === $m->getRepeatedUint64()[1]); | |
188 assert('-55' === $m->getRepeatedSint64()[1]); | |
189 assert('57' === $m->getRepeatedFixed64()[1]); | |
190 assert('-57' === $m->getRepeatedSfixed64()[1]); | |
191 } else { | |
192 assert(-53 === $m->getRepeatedInt64()[1]); | |
193 assert(53 === $m->getRepeatedUint64()[1]); | |
194 assert(-55 === $m->getRepeatedSint64()[1]); | |
195 assert(57 === $m->getRepeatedFixed64()[1]); | |
196 assert(-57 === $m->getRepeatedSfixed64()[1]); | |
197 } | |
198 assert(-52 === $m->getRepeatedInt32()[1]); | |
199 assert(52 === $m->getRepeatedUint32()[1]); | |
200 assert(-54 === $m->getRepeatedSint32()[1]); | |
201 assert(56 === $m->getRepeatedFixed32()[1]); | |
202 assert(-56 === $m->getRepeatedSfixed32()[1]); | |
203 assert(2.5 === $m->getRepeatedFloat()[1]); | |
204 assert(2.6 === $m->getRepeatedDouble()[1]); | |
205 assert(false === $m->getRepeatedBool()[1]); | |
206 assert('c' === $m->getRepeatedString()[1]); | |
207 assert('d' === $m->getRepeatedBytes()[1]); | |
208 assert(TestEnum::ONE === $m->getRepeatedEnum()[1]); | |
209 assert(35 === $m->getRepeatedMessage()[1]->getA()); | |
210 | |
211 if (PHP_INT_SIZE == 4) { | |
212 assert('-63' === $m->getMapInt64Int64()['-63']); | |
213 assert('63' === $m->getMapUint64Uint64()['63']); | |
214 assert('-65' === $m->getMapSint64Sint64()['-65']); | |
215 assert('67' === $m->getMapFixed64Fixed64()['67']); | |
216 } else { | |
217 assert(-63 === $m->getMapInt64Int64()[-63]); | |
218 assert(63 === $m->getMapUint64Uint64()[63]); | |
219 assert(-65 === $m->getMapSint64Sint64()[-65]); | |
220 assert(67 === $m->getMapFixed64Fixed64()[67]); | |
221 } | |
222 assert(-62 === $m->getMapInt32Int32()[-62]); | |
223 assert(62 === $m->getMapUint32Uint32()[62]); | |
224 assert(-64 === $m->getMapSint32Sint32()[-64]); | |
225 assert(66 === $m->getMapFixed32Fixed32()[66]); | |
226 assert(3.5 === $m->getMapInt32Float()[1]); | |
227 assert(3.6 === $m->getMapInt32Double()[1]); | |
228 assert(true === $m->getMapBoolBool()[true]); | |
229 assert('e' === $m->getMapStringString()['e']); | |
230 assert('f' === $m->getMapInt32Bytes()[1]); | |
231 assert(TestEnum::ONE === $m->getMapInt32Enum()[1]); | |
232 assert(36 === $m->getMapInt32Message()[1]->GetA()); | |
233 } | |
234 | |
235 public static function getGoldenTestMessage() | |
236 { | |
237 return hex2bin( | |
238 "08D6FFFFFF0F" . | |
239 "10D5FFFFFFFFFFFFFFFF01" . | |
240 "182A" . | |
241 "202B" . | |
242 "2857" . | |
243 "3059" . | |
244 "3D2E000000" . | |
245 "412F00000000000000" . | |
246 "4DD2FFFFFF" . | |
247 "51D1FFFFFFFFFFFFFF" . | |
248 "5D0000C03F" . | |
249 "619A9999999999F93F" . | |
250 "6801" . | |
251 "720161" . | |
252 "7A0162" . | |
253 "800101" . | |
254 "8A01020821" . | |
255 | |
256 "F801D6FFFFFF0F" . | |
257 "F801CCFFFFFF0F" . | |
258 "8002D5FFFFFFFFFFFFFFFF01" . | |
259 "8002CBFFFFFFFFFFFFFFFF01" . | |
260 "88022A" . | |
261 "880234" . | |
262 "90022B" . | |
263 "900235" . | |
264 "980257" . | |
265 "98026B" . | |
266 "A00259" . | |
267 "A0026D" . | |
268 "AD022E000000" . | |
269 "AD0238000000" . | |
270 "B1022F00000000000000" . | |
271 "B1023900000000000000" . | |
272 "BD02D2FFFFFF" . | |
273 "BD02C8FFFFFF" . | |
274 "C102D1FFFFFFFFFFFFFF" . | |
275 "C102C7FFFFFFFFFFFFFF" . | |
276 "CD020000C03F" . | |
277 "CD0200002040" . | |
278 "D1029A9999999999F93F" . | |
279 "D102CDCCCCCCCCCC0440" . | |
280 "D80201" . | |
281 "D80200" . | |
282 "E2020161" . | |
283 "E2020163" . | |
284 "EA020162" . | |
285 "EA020164" . | |
286 "F00200" . | |
287 "F00201" . | |
288 "FA02020822" . | |
289 "FA02020823" . | |
290 | |
291 "BA040C08C2FFFFFF0F10C2FFFFFF0F" . | |
292 "C2041608C1FFFFFFFFFFFFFFFF0110C1FFFFFFFFFFFFFFFF01" . | |
293 "CA0404083E103E" . | |
294 "D20404083F103F" . | |
295 "DA0404087f107F" . | |
296 "E20406088101108101" . | |
297 "EA040A0D420000001542000000" . | |
298 "F20412094300000000000000114300000000000000" . | |
299 "8A050708011500006040" . | |
300 "92050B080111CDCCCCCCCCCC0C40" . | |
301 "9A050408011001" . | |
302 "A205060a0165120165" . | |
303 "AA05050801120166" . | |
304 "B2050408011001" . | |
305 "Ba0506080112020824" | |
306 ); | |
307 } | |
308 | |
309 public static function setTestPackedMessage($m) | |
310 { | |
311 $m->getRepeatedInt32()[] = -42; | |
312 $m->getRepeatedInt32()[] = -52; | |
313 $m->getRepeatedInt64()[] = -43; | |
314 $m->getRepeatedInt64()[] = -53; | |
315 $m->getRepeatedUint32()[] = 42; | |
316 $m->getRepeatedUint32()[] = 52; | |
317 $m->getRepeatedUint64()[] = 43; | |
318 $m->getRepeatedUint64()[] = 53; | |
319 $m->getRepeatedSint32()[] = -44; | |
320 $m->getRepeatedSint32()[] = -54; | |
321 $m->getRepeatedSint64()[] = -45; | |
322 $m->getRepeatedSint64()[] = -55; | |
323 $m->getRepeatedFixed32()[] = 46; | |
324 $m->getRepeatedFixed32()[] = 56; | |
325 $m->getRepeatedFixed64()[] = 47; | |
326 $m->getRepeatedFixed64()[] = 57; | |
327 $m->getRepeatedSfixed32()[] = -46; | |
328 $m->getRepeatedSfixed32()[] = -56; | |
329 $m->getRepeatedSfixed64()[] = -47; | |
330 $m->getRepeatedSfixed64()[] = -57; | |
331 $m->getRepeatedFloat()[] = 1.5; | |
332 $m->getRepeatedFloat()[] = 2.5; | |
333 $m->getRepeatedDouble()[] = 1.6; | |
334 $m->getRepeatedDouble()[] = 2.6; | |
335 $m->getRepeatedBool()[] = true; | |
336 $m->getRepeatedBool()[] = false; | |
337 $m->getRepeatedEnum()[] = TestEnum::ONE; | |
338 $m->getRepeatedEnum()[] = TestEnum::ZERO; | |
339 } | |
340 | |
341 public static function assertTestPackedMessage($m) | |
342 { | |
343 assert(2 === count($m->getRepeatedInt32())); | |
344 assert(2 === count($m->getRepeatedInt64())); | |
345 assert(2 === count($m->getRepeatedUint32())); | |
346 assert(2 === count($m->getRepeatedUint64())); | |
347 assert(2 === count($m->getRepeatedSint32())); | |
348 assert(2 === count($m->getRepeatedSint64())); | |
349 assert(2 === count($m->getRepeatedFixed32())); | |
350 assert(2 === count($m->getRepeatedFixed64())); | |
351 assert(2 === count($m->getRepeatedSfixed32())); | |
352 assert(2 === count($m->getRepeatedSfixed64())); | |
353 assert(2 === count($m->getRepeatedFloat())); | |
354 assert(2 === count($m->getRepeatedDouble())); | |
355 assert(2 === count($m->getRepeatedBool())); | |
356 assert(2 === count($m->getRepeatedEnum())); | |
357 | |
358 assert(-42 === $m->getRepeatedInt32()[0]); | |
359 assert(-52 === $m->getRepeatedInt32()[1]); | |
360 assert(42 === $m->getRepeatedUint32()[0]); | |
361 assert(52 === $m->getRepeatedUint32()[1]); | |
362 assert(-44 === $m->getRepeatedSint32()[0]); | |
363 assert(-54 === $m->getRepeatedSint32()[1]); | |
364 assert(46 === $m->getRepeatedFixed32()[0]); | |
365 assert(56 === $m->getRepeatedFixed32()[1]); | |
366 assert(-46 === $m->getRepeatedSfixed32()[0]); | |
367 assert(-56 === $m->getRepeatedSfixed32()[1]); | |
368 assert(1.5 === $m->getRepeatedFloat()[0]); | |
369 assert(2.5 === $m->getRepeatedFloat()[1]); | |
370 assert(1.6 === $m->getRepeatedDouble()[0]); | |
371 assert(2.6 === $m->getRepeatedDouble()[1]); | |
372 assert(true === $m->getRepeatedBool()[0]); | |
373 assert(false === $m->getRepeatedBool()[1]); | |
374 assert(TestEnum::ONE === $m->getRepeatedEnum()[0]); | |
375 assert(TestEnum::ZERO === $m->getRepeatedEnum()[1]); | |
376 if (PHP_INT_SIZE == 4) { | |
377 assert('-43' === $m->getRepeatedInt64()[0]); | |
378 assert('-53' === $m->getRepeatedInt64()[1]); | |
379 assert('43' === $m->getRepeatedUint64()[0]); | |
380 assert('53' === $m->getRepeatedUint64()[1]); | |
381 assert('-45' === $m->getRepeatedSint64()[0]); | |
382 assert('-55' === $m->getRepeatedSint64()[1]); | |
383 assert('47' === $m->getRepeatedFixed64()[0]); | |
384 assert('57' === $m->getRepeatedFixed64()[1]); | |
385 assert('-47' === $m->getRepeatedSfixed64()[0]); | |
386 assert('-57' === $m->getRepeatedSfixed64()[1]); | |
387 } else { | |
388 assert(-43 === $m->getRepeatedInt64()[0]); | |
389 assert(-53 === $m->getRepeatedInt64()[1]); | |
390 assert(43 === $m->getRepeatedUint64()[0]); | |
391 assert(53 === $m->getRepeatedUint64()[1]); | |
392 assert(-45 === $m->getRepeatedSint64()[0]); | |
393 assert(-55 === $m->getRepeatedSint64()[1]); | |
394 assert(47 === $m->getRepeatedFixed64()[0]); | |
395 assert(57 === $m->getRepeatedFixed64()[1]); | |
396 assert(-47 === $m->getRepeatedSfixed64()[0]); | |
397 assert(-57 === $m->getRepeatedSfixed64()[1]); | |
398 } | |
399 } | |
400 | |
401 public static function getGoldenTestPackedMessage() | |
402 { | |
403 return hex2bin( | |
404 "D2050AD6FFFFFF0FCCFFFFFF0F" . | |
405 "DA0514D5FFFFFFFFFFFFFFFF01CBFFFFFFFFFFFFFFFF01" . | |
406 "E205022A34" . | |
407 "EA05022B35" . | |
408 "F20502576B" . | |
409 "FA0502596D" . | |
410 "8206082E00000038000000" . | |
411 "8A06102F000000000000003900000000000000" . | |
412 "920608D2FFFFFFC8FFFFFF" . | |
413 "9A0610D1FFFFFFFFFFFFFFC7FFFFFFFFFFFFFF" . | |
414 "A206080000C03F00002040" . | |
415 "AA06109A9999999999F93FCDCCCCCCCCCC0440" . | |
416 "B206020100" . | |
417 "BA06020100" | |
418 ); | |
419 } | |
420 | |
421 public static function getGoldenTestUnpackedMessage() | |
422 { | |
423 return hex2bin( | |
424 "D005D6FFFFFF0FD005CCFFFFFF0F" . | |
425 "D805D5FFFFFFFFFFFFFFFF01D805CBFFFFFFFFFFFFFFFF01" . | |
426 "E0052AE00534" . | |
427 "E8052BE80535" . | |
428 "F00557F0056B" . | |
429 "F80559F8056D" . | |
430 "85062E000000850638000000" . | |
431 "89062F0000000000000089063900000000000000" . | |
432 "9506D2FFFFFF9506C8FFFFFF" . | |
433 "9906D1FFFFFFFFFFFFFF9906C7FFFFFFFFFFFFFF" . | |
434 "A5060000C03FA50600002040" . | |
435 "A9069A9999999999F93FA906CDCCCCCCCCCC0440" . | |
436 "B00601B00600" . | |
437 "B80601B80600" | |
438 ); | |
439 } | |
440 } | |
OLD | NEW |