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 |