548 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			548 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| 
 | |
| use Foo\TestEnum;
 | |
| use Foo\TestMessage;
 | |
| use Foo\TestMessage\Sub;
 | |
| use Foo\TestPackedMessage;
 | |
| use Foo\TestUnpackedMessage;
 | |
| 
 | |
| define('MAX_FLOAT_DIFF', 0.000001);
 | |
| 
 | |
| if (PHP_INT_SIZE == 8) {
 | |
|     define('MAX_INT_STRING', '9223372036854775807');
 | |
|     define('MAX_INT_UPPER_STRING', '9223372036854775808');
 | |
| } else {
 | |
|     define('MAX_INT_STRING', '2147483647');
 | |
|     define('MAX_INT_UPPER_STRING', '2147483648');
 | |
| }
 | |
| 
 | |
| define('MAX_INT32', 2147483647);
 | |
| define('MAX_INT32_FLOAT', 2147483647.0);
 | |
| define('MAX_INT32_STRING', '2147483647');
 | |
| 
 | |
| define('MIN_INT32', (int)-2147483648);
 | |
| define('MIN_INT32_FLOAT', -2147483648.0);
 | |
| define('MIN_INT32_STRING', '-2147483648');
 | |
| 
 | |
| define('MAX_UINT32', 4294967295);
 | |
| define('MAX_UINT32_FLOAT', 4294967295.0);
 | |
| define('MAX_UINT32_STRING', '4294967295');
 | |
| 
 | |
| define('MIN_UINT32', (int)-2147483648);
 | |
| define('MIN_UINT32_FLOAT', -2147483648.0);
 | |
| define('MIN_UINT32_STRING', '-2147483648');
 | |
| 
 | |
| define('MAX_INT64_STRING',  '9223372036854775807');
 | |
| define('MIN_INT64_STRING',  '-9223372036854775808');
 | |
| define('MAX_UINT64_STRING', '-9223372036854775808');
 | |
| 
 | |
| if (PHP_INT_SIZE === 8) {
 | |
|     define('MAX_INT64',  (int)9223372036854775807);
 | |
|     define('MIN_INT64',  (int)-9223372036854775808);
 | |
|     define('MAX_UINT64', (int)-9223372036854775808);
 | |
| } else {
 | |
|     define('MAX_INT64', MAX_INT64_STRING);
 | |
|     define('MIN_INT64', MIN_INT64_STRING);
 | |
|     define('MAX_UINT64', MAX_UINT64_STRING);
 | |
| }
 | |
| 
 | |
| class TestUtil
 | |
| {
 | |
| 
 | |
|     public static function setTestMessage(TestMessage $m)
 | |
|     {
 | |
|         $m->setOptionalInt32(-42);
 | |
|         $m->setOptionalInt64(-43);
 | |
|         $m->setOptionalUint32(42);
 | |
|         $m->setOptionalUint64(43);
 | |
|         $m->setOptionalSint32(-44);
 | |
|         $m->setOptionalSint64(-45);
 | |
|         $m->setOptionalFixed32(46);
 | |
|         $m->setOptionalFixed64(47);
 | |
|         $m->setOptionalSfixed32(-46);
 | |
|         $m->setOptionalSfixed64(-47);
 | |
|         $m->setOptionalFloat(1.5);
 | |
|         $m->setOptionalDouble(1.6);
 | |
|         $m->setOptionalBool(true);
 | |
|         $m->setOptionalString('a');
 | |
|         $m->setOptionalBytes('bbbb');
 | |
|         $m->setOptionalEnum(TestEnum::ONE);
 | |
|         $sub = new Sub();
 | |
|         $m->setOptionalMessage($sub);
 | |
|         $m->getOptionalMessage()->SetA(33);
 | |
| 
 | |
|         self::appendHelper($m, 'RepeatedInt32',    -42);
 | |
|         self::appendHelper($m, 'RepeatedInt64',    -43);
 | |
|         self::appendHelper($m, 'RepeatedUint32',    42);
 | |
|         self::appendHelper($m, 'RepeatedUint64',    43);
 | |
|         self::appendHelper($m, 'RepeatedSint32',   -44);
 | |
|         self::appendHelper($m, 'RepeatedSint64',   -45);
 | |
|         self::appendHelper($m, 'RepeatedFixed32',   46);
 | |
|         self::appendHelper($m, 'RepeatedFixed64',   47);
 | |
|         self::appendHelper($m, 'RepeatedSfixed32', -46);
 | |
|         self::appendHelper($m, 'RepeatedSfixed64', -47);
 | |
|         self::appendHelper($m, 'RepeatedFloat',    1.5);
 | |
|         self::appendHelper($m, 'RepeatedDouble',   1.6);
 | |
|         self::appendHelper($m, 'RepeatedBool',     true);
 | |
|         self::appendHelper($m, 'RepeatedString',   'a');
 | |
|         self::appendHelper($m, 'RepeatedBytes',    'bbbb');
 | |
|         self::appendHelper($m, 'RepeatedEnum',     TestEnum::ZERO);
 | |
|         self::appendHelper($m, 'RepeatedMessage',  new Sub());
 | |
|         $m->getRepeatedMessage()[0]->setA(34);
 | |
| 
 | |
|         self::appendHelper($m, 'RepeatedInt32',    -52);
 | |
|         self::appendHelper($m, 'RepeatedInt64',    -53);
 | |
|         self::appendHelper($m, 'RepeatedUint32',    52);
 | |
|         self::appendHelper($m, 'RepeatedUint64',    53);
 | |
|         self::appendHelper($m, 'RepeatedSint32',   -54);
 | |
|         self::appendHelper($m, 'RepeatedSint64',   -55);
 | |
|         self::appendHelper($m, 'RepeatedFixed32',   56);
 | |
|         self::appendHelper($m, 'RepeatedFixed64',   57);
 | |
|         self::appendHelper($m, 'RepeatedSfixed32', -56);
 | |
|         self::appendHelper($m, 'RepeatedSfixed64', -57);
 | |
|         self::appendHelper($m, 'RepeatedFloat',    2.5);
 | |
|         self::appendHelper($m, 'RepeatedDouble',   2.6);
 | |
|         self::appendHelper($m, 'RepeatedBool',     false);
 | |
|         self::appendHelper($m, 'RepeatedString',   'c');
 | |
|         self::appendHelper($m, 'RepeatedBytes',    'dddd');
 | |
|         self::appendHelper($m, 'RepeatedEnum',     TestEnum::ONE);
 | |
|         self::appendHelper($m, 'RepeatedMessage',  new Sub());
 | |
|         $m->getRepeatedMessage()[1]->SetA(35);
 | |
| 
 | |
|         self::kvUpdateHelper($m, 'MapInt32Int32', -62, -62);
 | |
|         self::kvUpdateHelper($m, 'MapInt64Int64', -63, -63);
 | |
|         self::kvUpdateHelper($m, 'MapUint32Uint32', 62, 62);
 | |
|         self::kvUpdateHelper($m, 'MapUint64Uint64', 63, 63);
 | |
|         self::kvUpdateHelper($m, 'MapSint32Sint32', -64, -64);
 | |
|         self::kvUpdateHelper($m, 'MapSint64Sint64', -65, -65);
 | |
|         self::kvUpdateHelper($m, 'MapFixed32Fixed32', 66, 66);
 | |
|         self::kvUpdateHelper($m, 'MapFixed64Fixed64', 67, 67);
 | |
|         self::kvUpdateHelper($m, 'MapSfixed32Sfixed32', -68, -68);
 | |
|         self::kvUpdateHelper($m, 'MapSfixed64Sfixed64', -69, -69);
 | |
|         self::kvUpdateHelper($m, 'MapInt32Float', 1, 3.5);
 | |
|         self::kvUpdateHelper($m, 'MapInt32Double', 1, 3.6);
 | |
|         self::kvUpdateHelper($m, 'MapBoolBool', true, true);
 | |
|         self::kvUpdateHelper($m, 'MapStringString', 'e', 'e');
 | |
|         self::kvUpdateHelper($m, 'MapInt32Bytes', 1, 'ffff');
 | |
|         self::kvUpdateHelper($m, 'MapInt32Enum', 1, TestEnum::ONE);
 | |
|         self::kvUpdateHelper($m, 'MapInt32Message', 1, new Sub());
 | |
|         $m->getMapInt32Message()[1]->SetA(36);
 | |
|     }
 | |
| 
 | |
|     public static function setTestMessage2(TestMessage $m)
 | |
|     {
 | |
|         $sub = new Sub();
 | |
| 
 | |
|         $m->setOptionalInt32(-142);
 | |
|         $m->setOptionalInt64(-143);
 | |
|         $m->setOptionalUint32(142);
 | |
|         $m->setOptionalUint64(143);
 | |
|         $m->setOptionalSint32(-144);
 | |
|         $m->setOptionalSint64(-145);
 | |
|         $m->setOptionalFixed32(146);
 | |
|         $m->setOptionalFixed64(147);
 | |
|         $m->setOptionalSfixed32(-146);
 | |
|         $m->setOptionalSfixed64(-147);
 | |
|         $m->setOptionalFloat(11.5);
 | |
|         $m->setOptionalDouble(11.6);
 | |
|         $m->setOptionalBool(true);
 | |
|         $m->setOptionalString('aa');
 | |
|         $m->setOptionalBytes('bb');
 | |
|         $m->setOptionalEnum(TestEnum::TWO);
 | |
|         $m->setOptionalMessage($sub);
 | |
|         $m->getOptionalMessage()->SetA(133);
 | |
| 
 | |
|         self::appendHelper($m, 'RepeatedInt32',    -142);
 | |
|         self::appendHelper($m, 'RepeatedInt64',    -143);
 | |
|         self::appendHelper($m, 'RepeatedUint32',    142);
 | |
|         self::appendHelper($m, 'RepeatedUint64',    143);
 | |
|         self::appendHelper($m, 'RepeatedSint32',   -144);
 | |
|         self::appendHelper($m, 'RepeatedSint64',   -145);
 | |
|         self::appendHelper($m, 'RepeatedFixed32',   146);
 | |
|         self::appendHelper($m, 'RepeatedFixed64',   147);
 | |
|         self::appendHelper($m, 'RepeatedSfixed32', -146);
 | |
|         self::appendHelper($m, 'RepeatedSfixed64', -147);
 | |
|         self::appendHelper($m, 'RepeatedFloat',    11.5);
 | |
|         self::appendHelper($m, 'RepeatedDouble',   11.6);
 | |
|         self::appendHelper($m, 'RepeatedBool',     false);
 | |
|         self::appendHelper($m, 'RepeatedString',   'aa');
 | |
|         self::appendHelper($m, 'RepeatedBytes',    'bb');
 | |
|         self::appendHelper($m, 'RepeatedEnum',     TestEnum::TWO);
 | |
|         self::appendHelper($m, 'RepeatedMessage',  new Sub());
 | |
|         $m->getRepeatedMessage()[0]->setA(134);
 | |
| 
 | |
|         self::kvUpdateHelper($m, 'MapInt32Int32', -62, -162);
 | |
|         self::kvUpdateHelper($m, 'MapInt64Int64', -63, -163);
 | |
|         self::kvUpdateHelper($m, 'MapUint32Uint32', 62, 162);
 | |
|         self::kvUpdateHelper($m, 'MapUint64Uint64', 63, 163);
 | |
|         self::kvUpdateHelper($m, 'MapSint32Sint32', -64, -164);
 | |
|         self::kvUpdateHelper($m, 'MapSint64Sint64', -65, -165);
 | |
|         self::kvUpdateHelper($m, 'MapFixed32Fixed32', 66, 166);
 | |
|         self::kvUpdateHelper($m, 'MapFixed64Fixed64', 67, 167);
 | |
|         self::kvUpdateHelper($m, 'MapSfixed32Sfixed32', -68, -168);
 | |
|         self::kvUpdateHelper($m, 'MapSfixed64Sfixed64', -69, -169);
 | |
|         self::kvUpdateHelper($m, 'MapInt32Float', 1, 13.5);
 | |
|         self::kvUpdateHelper($m, 'MapInt32Double', 1, 13.6);
 | |
|         self::kvUpdateHelper($m, 'MapBoolBool', true, false);
 | |
|         self::kvUpdateHelper($m, 'MapStringString', 'e', 'ee');
 | |
|         self::kvUpdateHelper($m, 'MapInt32Bytes', 1, 'ff');
 | |
|         self::kvUpdateHelper($m, 'MapInt32Enum', 1, TestEnum::TWO);
 | |
|         self::kvUpdateHelper($m, 'MapInt32Message', 1, new Sub());
 | |
|         $m->getMapInt32Message()[1]->SetA(136);
 | |
| 
 | |
|         self::kvUpdateHelper($m, 'MapInt32Int32', -162, -162);
 | |
|         self::kvUpdateHelper($m, 'MapInt64Int64', -163, -163);
 | |
|         self::kvUpdateHelper($m, 'MapUint32Uint32', 162, 162);
 | |
|         self::kvUpdateHelper($m, 'MapUint64Uint64', 163, 163);
 | |
|         self::kvUpdateHelper($m, 'MapSint32Sint32', -164, -164);
 | |
|         self::kvUpdateHelper($m, 'MapSint64Sint64', -165, -165);
 | |
|         self::kvUpdateHelper($m, 'MapFixed32Fixed32', 166, 166);
 | |
|         self::kvUpdateHelper($m, 'MapFixed64Fixed64', 167, 167);
 | |
|         self::kvUpdateHelper($m, 'MapSfixed32Sfixed32', -168, -168);
 | |
|         self::kvUpdateHelper($m, 'MapSfixed64Sfixed64', -169, -169);
 | |
|         self::kvUpdateHelper($m, 'MapInt32Float', 2, 13.5);
 | |
|         self::kvUpdateHelper($m, 'MapInt32Double', 2, 13.6);
 | |
|         self::kvUpdateHelper($m, 'MapBoolBool', false, false);
 | |
|         self::kvUpdateHelper($m, 'MapStringString', 'ee', 'ee');
 | |
|         self::kvUpdateHelper($m, 'MapInt32Bytes', 2, 'ff');
 | |
|         self::kvUpdateHelper($m, 'MapInt32Enum', 2, TestEnum::TWO);
 | |
|         self::kvUpdateHelper($m, 'MapInt32Message', 2, new Sub());
 | |
|         $m->getMapInt32Message()[2]->SetA(136);
 | |
|     }
 | |
| 
 | |
|     public static function assertTestMessage(TestMessage $m)
 | |
|     {
 | |
|         if (PHP_INT_SIZE == 4) {
 | |
|             assert('-43' === $m->getOptionalInt64());
 | |
|             assert('43'  === $m->getOptionalUint64());
 | |
|             assert('-45' === $m->getOptionalSint64());
 | |
|             assert('47'  === $m->getOptionalFixed64());
 | |
|             assert('-47' === $m->getOptionalSfixed64());
 | |
|         } else {
 | |
|             assert(-43 === $m->getOptionalInt64());
 | |
|             assert(43  === $m->getOptionalUint64());
 | |
|             assert(-45 === $m->getOptionalSint64());
 | |
|             assert(47  === $m->getOptionalFixed64());
 | |
|             assert(-47 === $m->getOptionalSfixed64());
 | |
|         }
 | |
|         assert(-42 === $m->getOptionalInt32());
 | |
|         assert(42  === $m->getOptionalUint32());
 | |
|         assert(-44 === $m->getOptionalSint32());
 | |
|         assert(46  === $m->getOptionalFixed32());
 | |
|         assert(-46 === $m->getOptionalSfixed32());
 | |
|         assert(1.5 === $m->getOptionalFloat());
 | |
|         assert(1.6 === $m->getOptionalDouble());
 | |
|         assert(true=== $m->getOptionalBool());
 | |
|         assert('a' === $m->getOptionalString());
 | |
|         assert('bbbb' === $m->getOptionalBytes());
 | |
|         assert(TestEnum::ONE === $m->getOptionalEnum());
 | |
|         assert(33  === $m->getOptionalMessage()->getA());
 | |
| 
 | |
|         if (PHP_INT_SIZE == 4) {
 | |
|             assert('-43' === $m->getRepeatedInt64()[0]);
 | |
|             assert('43'  === $m->getRepeatedUint64()[0]);
 | |
|             assert('-45' === $m->getRepeatedSint64()[0]);
 | |
|             assert('47'  === $m->getRepeatedFixed64()[0]);
 | |
|             assert('-47' === $m->getRepeatedSfixed64()[0]);
 | |
|         } else {
 | |
|             assert(-43 === $m->getRepeatedInt64()[0]);
 | |
|             assert(43  === $m->getRepeatedUint64()[0]);
 | |
|             assert(-45 === $m->getRepeatedSint64()[0]);
 | |
|             assert(47  === $m->getRepeatedFixed64()[0]);
 | |
|             assert(-47 === $m->getRepeatedSfixed64()[0]);
 | |
|         }
 | |
|         assert(-42 === $m->getRepeatedInt32()[0]);
 | |
|         assert(42  === $m->getRepeatedUint32()[0]);
 | |
|         assert(-44 === $m->getRepeatedSint32()[0]);
 | |
|         assert(46  === $m->getRepeatedFixed32()[0]);
 | |
|         assert(-46 === $m->getRepeatedSfixed32()[0]);
 | |
|         assert(1.5 === $m->getRepeatedFloat()[0]);
 | |
|         assert(1.6 === $m->getRepeatedDouble()[0]);
 | |
|         assert(true=== $m->getRepeatedBool()[0]);
 | |
|         assert('a' === $m->getRepeatedString()[0]);
 | |
|         assert('bbbb' === $m->getRepeatedBytes()[0]);
 | |
|         assert(TestEnum::ZERO === $m->getRepeatedEnum()[0]);
 | |
|         assert(34  === $m->getRepeatedMessage()[0]->getA());
 | |
| 
 | |
|         if (PHP_INT_SIZE == 4) {
 | |
|             assert('-53' === $m->getRepeatedInt64()[1]);
 | |
|             assert('53'  === $m->getRepeatedUint64()[1]);
 | |
|             assert('-55' === $m->getRepeatedSint64()[1]);
 | |
|             assert('57'  === $m->getRepeatedFixed64()[1]);
 | |
|             assert('-57' === $m->getRepeatedSfixed64()[1]);
 | |
|         } else {
 | |
|             assert(-53 === $m->getRepeatedInt64()[1]);
 | |
|             assert(53  === $m->getRepeatedUint64()[1]);
 | |
|             assert(-55 === $m->getRepeatedSint64()[1]);
 | |
|             assert(57  === $m->getRepeatedFixed64()[1]);
 | |
|             assert(-57 === $m->getRepeatedSfixed64()[1]);
 | |
|         }
 | |
|         assert(-52 === $m->getRepeatedInt32()[1]);
 | |
|         assert(52  === $m->getRepeatedUint32()[1]);
 | |
|         assert(-54 === $m->getRepeatedSint32()[1]);
 | |
|         assert(56  === $m->getRepeatedFixed32()[1]);
 | |
|         assert(-56 === $m->getRepeatedSfixed32()[1]);
 | |
|         assert(2.5 === $m->getRepeatedFloat()[1]);
 | |
|         assert(2.6 === $m->getRepeatedDouble()[1]);
 | |
|         assert(false === $m->getRepeatedBool()[1]);
 | |
|         assert('c' === $m->getRepeatedString()[1]);
 | |
|         assert('dddd' === $m->getRepeatedBytes()[1]);
 | |
|         assert(TestEnum::ONE === $m->getRepeatedEnum()[1]);
 | |
|         assert(35  === $m->getRepeatedMessage()[1]->getA());
 | |
| 
 | |
|         if (PHP_INT_SIZE == 4) {
 | |
|             assert('-63' === $m->getMapInt64Int64()['-63']);
 | |
|             assert('63'  === $m->getMapUint64Uint64()['63']);
 | |
|             assert('-65' === $m->getMapSint64Sint64()['-65']);
 | |
|             assert('67'  === $m->getMapFixed64Fixed64()['67']);
 | |
|             assert('-69'  === $m->getMapSfixed64Sfixed64()['-69']);
 | |
|         } else {
 | |
|             assert(-63 === $m->getMapInt64Int64()[-63]);
 | |
|             assert(63  === $m->getMapUint64Uint64()[63]);
 | |
|             assert(-65 === $m->getMapSint64Sint64()[-65]);
 | |
|             assert(67  === $m->getMapFixed64Fixed64()[67]);
 | |
|             assert(-69  === $m->getMapSfixed64Sfixed64()[-69]);
 | |
|         }
 | |
|         assert(-62 === $m->getMapInt32Int32()[-62]);
 | |
|         assert(62  === $m->getMapUint32Uint32()[62]);
 | |
|         assert(-64 === $m->getMapSint32Sint32()[-64]);
 | |
|         assert(66  === $m->getMapFixed32Fixed32()[66]);
 | |
|         assert(-68  === $m->getMapSfixed32Sfixed32()[-68]);
 | |
|         assert(3.5 === $m->getMapInt32Float()[1]);
 | |
|         assert(3.6 === $m->getMapInt32Double()[1]);
 | |
|         assert(true === $m->getMapBoolBool()[true]);
 | |
|         assert('e' === $m->getMapStringString()['e']);
 | |
|         assert('ffff' === $m->getMapInt32Bytes()[1]);
 | |
|         assert(TestEnum::ONE === $m->getMapInt32Enum()[1]);
 | |
|         assert(36  === $m->getMapInt32Message()[1]->GetA());
 | |
|     }
 | |
| 
 | |
|     public static function getGoldenTestMessage()
 | |
|     {
 | |
|         return hex2bin(
 | |
|             "08D6FFFFFFFFFFFFFFFF01" .
 | |
|             "10D5FFFFFFFFFFFFFFFF01" .
 | |
|             "182A" .
 | |
|             "202B" .
 | |
|             "2857" .
 | |
|             "3059" .
 | |
|             "3D2E000000" .
 | |
|             "412F00000000000000" .
 | |
|             "4DD2FFFFFF" .
 | |
|             "51D1FFFFFFFFFFFFFF" .
 | |
|             "5D0000C03F" .
 | |
|             "619A9999999999F93F" .
 | |
|             "6801" .
 | |
|             "720161" .
 | |
|             "7A0462626262" .
 | |
|             "800101" .
 | |
|             "8A01020821" .
 | |
| 
 | |
|             "F801D6FFFFFFFFFFFFFFFF01" .
 | |
|             "F801CCFFFFFFFFFFFFFFFF01" .
 | |
|             "8002D5FFFFFFFFFFFFFFFF01" .
 | |
|             "8002CBFFFFFFFFFFFFFFFF01" .
 | |
|             "88022A" .
 | |
|             "880234" .
 | |
|             "90022B" .
 | |
|             "900235" .
 | |
|             "980257" .
 | |
|             "98026B" .
 | |
|             "A00259" .
 | |
|             "A0026D" .
 | |
|             "AD022E000000" .
 | |
|             "AD0238000000" .
 | |
|             "B1022F00000000000000" .
 | |
|             "B1023900000000000000" .
 | |
|             "BD02D2FFFFFF" .
 | |
|             "BD02C8FFFFFF" .
 | |
|             "C102D1FFFFFFFFFFFFFF" .
 | |
|             "C102C7FFFFFFFFFFFFFF" .
 | |
|             "CD020000C03F" .
 | |
|             "CD0200002040" .
 | |
|             "D1029A9999999999F93F" .
 | |
|             "D102CDCCCCCCCCCC0440" .
 | |
|             "D80201" .
 | |
|             "D80200" .
 | |
|             "E2020161" .
 | |
|             "E2020163" .
 | |
|             "EA020462626262" .
 | |
|             "EA020464646464" .
 | |
|             "F00200" .
 | |
|             "F00201" .
 | |
|             "FA02020822" .
 | |
|             "FA02020823" .
 | |
| 
 | |
|             "BA041608C2FFFFFFFFFFFFFFFF0110C2FFFFFFFFFFFFFFFF01" .
 | |
|             "C2041608C1FFFFFFFFFFFFFFFF0110C1FFFFFFFFFFFFFFFF01" .
 | |
|             "CA0404083E103E" .
 | |
|             "D20404083F103F" .
 | |
|             "DA0404087f107F" .
 | |
|             "E20406088101108101" .
 | |
|             "EA040A0D420000001542000000" .
 | |
|             "F20412094300000000000000114300000000000000" .
 | |
|             "FA040A0DBCFFFFFF15BCFFFFFF" .
 | |
|             "82051209BBFFFFFFFFFFFFFF11BBFFFFFFFFFFFFFF" .
 | |
|             "8A050708011500006040" .
 | |
|             "92050B080111CDCCCCCCCCCC0C40" .
 | |
|             "9A050408011001" .
 | |
|             "A205060a0165120165" .
 | |
|             "AA05080801120466666666" .
 | |
|             "B2050408011001" .
 | |
|             "Ba0506080112020824"
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     public static function setTestPackedMessage($m)
 | |
|     {
 | |
|         self::appendHelper($m, 'RepeatedInt32', -42);
 | |
|         self::appendHelper($m, 'RepeatedInt32', -52);
 | |
|         self::appendHelper($m, 'RepeatedInt64', -43);
 | |
|         self::appendHelper($m, 'RepeatedInt64', -53);
 | |
|         self::appendHelper($m, 'RepeatedUint32', 42);
 | |
|         self::appendHelper($m, 'RepeatedUint32', 52);
 | |
|         self::appendHelper($m, 'RepeatedUint64', 43);
 | |
|         self::appendHelper($m, 'RepeatedUint64', 53);
 | |
|         self::appendHelper($m, 'RepeatedSint32', -44);
 | |
|         self::appendHelper($m, 'RepeatedSint32', -54);
 | |
|         self::appendHelper($m, 'RepeatedSint64', -45);
 | |
|         self::appendHelper($m, 'RepeatedSint64', -55);
 | |
|         self::appendHelper($m, 'RepeatedFixed32', 46);
 | |
|         self::appendHelper($m, 'RepeatedFixed32', 56);
 | |
|         self::appendHelper($m, 'RepeatedFixed64', 47);
 | |
|         self::appendHelper($m, 'RepeatedFixed64', 57);
 | |
|         self::appendHelper($m, 'RepeatedSfixed32', -46);
 | |
|         self::appendHelper($m, 'RepeatedSfixed32', -56);
 | |
|         self::appendHelper($m, 'RepeatedSfixed64', -47);
 | |
|         self::appendHelper($m, 'RepeatedSfixed64', -57);
 | |
|         self::appendHelper($m, 'RepeatedFloat', 1.5);
 | |
|         self::appendHelper($m, 'RepeatedFloat', 2.5);
 | |
|         self::appendHelper($m, 'RepeatedDouble', 1.6);
 | |
|         self::appendHelper($m, 'RepeatedDouble', 2.6);
 | |
|         self::appendHelper($m, 'RepeatedBool', true);
 | |
|         self::appendHelper($m, 'RepeatedBool', false);
 | |
|         self::appendHelper($m, 'RepeatedEnum', TestEnum::ONE);
 | |
|         self::appendHelper($m, 'RepeatedEnum', TestEnum::ZERO);
 | |
|     }
 | |
| 
 | |
|     public static function assertTestPackedMessage($m)
 | |
|     {
 | |
|         assert(2 === count($m->getRepeatedInt32()));
 | |
|         assert(2 === count($m->getRepeatedInt64()));
 | |
|         assert(2 === count($m->getRepeatedUint32()));
 | |
|         assert(2 === count($m->getRepeatedUint64()));
 | |
|         assert(2 === count($m->getRepeatedSint32()));
 | |
|         assert(2 === count($m->getRepeatedSint64()));
 | |
|         assert(2 === count($m->getRepeatedFixed32()));
 | |
|         assert(2 === count($m->getRepeatedFixed64()));
 | |
|         assert(2 === count($m->getRepeatedSfixed32()));
 | |
|         assert(2 === count($m->getRepeatedSfixed64()));
 | |
|         assert(2 === count($m->getRepeatedFloat()));
 | |
|         assert(2 === count($m->getRepeatedDouble()));
 | |
|         assert(2 === count($m->getRepeatedBool()));
 | |
|         assert(2 === count($m->getRepeatedEnum()));
 | |
| 
 | |
|         assert(-42 === $m->getRepeatedInt32()[0]);
 | |
|         assert(-52 === $m->getRepeatedInt32()[1]);
 | |
|         assert(42  === $m->getRepeatedUint32()[0]);
 | |
|         assert(52  === $m->getRepeatedUint32()[1]);
 | |
|         assert(-44 === $m->getRepeatedSint32()[0]);
 | |
|         assert(-54 === $m->getRepeatedSint32()[1]);
 | |
|         assert(46  === $m->getRepeatedFixed32()[0]);
 | |
|         assert(56  === $m->getRepeatedFixed32()[1]);
 | |
|         assert(-46 === $m->getRepeatedSfixed32()[0]);
 | |
|         assert(-56 === $m->getRepeatedSfixed32()[1]);
 | |
|         assert(1.5 === $m->getRepeatedFloat()[0]);
 | |
|         assert(2.5 === $m->getRepeatedFloat()[1]);
 | |
|         assert(1.6 === $m->getRepeatedDouble()[0]);
 | |
|         assert(2.6 === $m->getRepeatedDouble()[1]);
 | |
|         assert(true  === $m->getRepeatedBool()[0]);
 | |
|         assert(false === $m->getRepeatedBool()[1]);
 | |
|         assert(TestEnum::ONE  === $m->getRepeatedEnum()[0]);
 | |
|         assert(TestEnum::ZERO === $m->getRepeatedEnum()[1]);
 | |
|         if (PHP_INT_SIZE == 4) {
 | |
|             assert('-43' === $m->getRepeatedInt64()[0]);
 | |
|             assert('-53' === $m->getRepeatedInt64()[1]);
 | |
|             assert('43'  === $m->getRepeatedUint64()[0]);
 | |
|             assert('53'  === $m->getRepeatedUint64()[1]);
 | |
|             assert('-45' === $m->getRepeatedSint64()[0]);
 | |
|             assert('-55' === $m->getRepeatedSint64()[1]);
 | |
|             assert('47'  === $m->getRepeatedFixed64()[0]);
 | |
|             assert('57'  === $m->getRepeatedFixed64()[1]);
 | |
|             assert('-47' === $m->getRepeatedSfixed64()[0]);
 | |
|             assert('-57' === $m->getRepeatedSfixed64()[1]);
 | |
|         } else {
 | |
|             assert(-43 === $m->getRepeatedInt64()[0]);
 | |
|             assert(-53 === $m->getRepeatedInt64()[1]);
 | |
|             assert(43  === $m->getRepeatedUint64()[0]);
 | |
|             assert(53  === $m->getRepeatedUint64()[1]);
 | |
|             assert(-45 === $m->getRepeatedSint64()[0]);
 | |
|             assert(-55 === $m->getRepeatedSint64()[1]);
 | |
|             assert(47  === $m->getRepeatedFixed64()[0]);
 | |
|             assert(57  === $m->getRepeatedFixed64()[1]);
 | |
|             assert(-47 === $m->getRepeatedSfixed64()[0]);
 | |
|             assert(-57 === $m->getRepeatedSfixed64()[1]);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public static function getGoldenTestPackedMessage()
 | |
|     {
 | |
|         return hex2bin(
 | |
|             "D20514D6FFFFFFFFFFFFFFFF01CCFFFFFFFFFFFFFFFF01" .
 | |
|             "DA0514D5FFFFFFFFFFFFFFFF01CBFFFFFFFFFFFFFFFF01" .
 | |
|             "E205022A34" .
 | |
|             "EA05022B35" .
 | |
|             "F20502576B" .
 | |
|             "FA0502596D" .
 | |
|             "8206082E00000038000000" .
 | |
|             "8A06102F000000000000003900000000000000" .
 | |
|             "920608D2FFFFFFC8FFFFFF" .
 | |
|             "9A0610D1FFFFFFFFFFFFFFC7FFFFFFFFFFFFFF" .
 | |
|             "A206080000C03F00002040" .
 | |
|             "AA06109A9999999999F93FCDCCCCCCCCCC0440" .
 | |
|             "B206020100" .
 | |
|             "BA06020100"
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     public static function getGoldenTestUnpackedMessage()
 | |
|     {
 | |
|         return hex2bin(
 | |
|             "D005D6FFFFFFFFFFFFFFFF01D005CCFFFFFFFFFFFFFFFF01" .
 | |
|             "D805D5FFFFFFFFFFFFFFFF01D805CBFFFFFFFFFFFFFFFF01" .
 | |
|             "E0052AE00534" .
 | |
|             "E8052BE80535" .
 | |
|             "F00557F0056B" .
 | |
|             "F80559F8056D" .
 | |
|             "85062E000000850638000000" .
 | |
|             "89062F0000000000000089063900000000000000" .
 | |
|             "9506D2FFFFFF9506C8FFFFFF" .
 | |
|             "9906D1FFFFFFFFFFFFFF9906C7FFFFFFFFFFFFFF" .
 | |
|             "A5060000C03FA50600002040" .
 | |
|             "A9069A9999999999F93FA906CDCCCCCCCCCC0440" .
 | |
|             "B00601B00600" .
 | |
|             "B80601B80600"
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     private static function appendHelper($obj, $func_suffix, $value)
 | |
|     {
 | |
|         $getter_function = 'get'.$func_suffix;
 | |
|         $setter_function = 'set'.$func_suffix;
 | |
| 
 | |
|         $arr = $obj->$getter_function();
 | |
|         $arr[] = $value;
 | |
|         $obj->$setter_function($arr);
 | |
|     }
 | |
| 
 | |
|     private static function kvUpdateHelper($obj, $func_suffix, $key, $value)
 | |
|     {
 | |
|         $getter_function = 'get'.$func_suffix;
 | |
|         $setter_function = 'set'.$func_suffix;
 | |
| 
 | |
|         $arr = $obj->$getter_function();
 | |
|         $arr[$key] = $value;
 | |
|         $obj->$setter_function($arr);
 | |
|     }
 | |
| }
 |