| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547 | <?phpuse 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);    }}
 |