| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445 | <?phprequire_once('test_base.php');require_once('test_util.php');use Google\Protobuf\RepeatedField;use Google\Protobuf\GPBType;use Foo\TestEnum;use Foo\TestMessage;use Foo\TestMessage_Sub;use Foo\TestPackedMessage;use Foo\TestUnpackedMessage;class EncodeDecodeTest extends TestBase{#     public function testEncode()#     {#         $from = new TestMessage();#         $this->expectEmptyFields($from);#         $this->setFields($from);#         $this->expectFields($from);# #         $data = $from->serializeToString();#         $this->assertSame(bin2hex(TestUtil::getGoldenTestMessage()),#                           bin2hex($data));#     }# #     public function testDecode()#     {#         $to = new TestMessage();#         $to->mergeFromString(TestUtil::getGoldenTestMessage());#         $this->expectFields($to);#     }# #     public function testEncodeDecode()#     {#         $from = new TestMessage();#         $this->expectEmptyFields($from);#         $this->setFields($from);#         $this->expectFields($from);# #         $data = $from->serializeToString();# #         $to = new TestMessage();#         $to->mergeFromString($data);#         $this->expectFields($to);#     }# #     public function testEncodeDecodeEmpty()#     {#         $from = new TestMessage();#         $this->expectEmptyFields($from);# #         $data = $from->serializeToString();# #         $to = new TestMessage();#         $to->mergeFromString($data);#         $this->expectEmptyFields($to);#     }    public function testEncodeDecodeOneof()    {        $m = new TestMessage();#         $m->setOneofInt32(1);#         $data = $m->serializeToString();#         $n = new TestMessage();#         $n->mergeFromString($data);#         $this->assertSame(1, $n->getOneofInt32());# #         $m->setOneofFloat(2.0);#         $data = $m->serializeToString();#         $n = new TestMessage();#         $n->mergeFromString($data);#         $this->assertSame(2.0, $n->getOneofFloat());# #         $m->setOneofString('abc');#         $data = $m->serializeToString();#         $n = new TestMessage();#         $n->mergeFromString($data);#         $this->assertSame('abc', $n->getOneofString());# #         $sub_m = new TestMessage_Sub();#         $sub_m->setA(1);#         $m->setOneofMessage($sub_m);#         $data = $m->serializeToString();#         $n = new TestMessage();#         $n->mergeFromString($data);#         $this->assertSame(1, $n->getOneofMessage()->getA());        // Encode default value#         $m->setOneofEnum(TestEnum::ZERO);#         $data = $m->serializeToString();#         $n = new TestMessage();#         $n->mergeFromString($data);#         $this->assertSame("oneof_enum", $n->getMyOneof());#         $this->assertSame(TestEnum::ZERO, $n->getOneofEnum());        $m->setOneofString("");        $data = $m->serializeToString();        $n = new TestMessage();        $n->mergeFromString($data);        $this->assertSame("oneof_string", $n->getMyOneof());         $this->assertSame("", $n->getOneofString());#         $sub_m = new TestMessage_Sub();#         $m->setOneofMessage($sub_m);#         $data = $m->serializeToString();#         $n = new TestMessage();#         $n->mergeFromString($data);#         $this->assertSame("oneof_message", $n->getMyOneof());#         $this->assertFalse(is_null($n->getOneofMessage()));    }#     public function testPackedEncode()#     {#         $from = new TestPackedMessage();#         TestUtil::setTestPackedMessage($from);#         $this->assertSame(TestUtil::getGoldenTestPackedMessage(),#                           $from->serializeToString());#     }# #     public function testPackedDecodePacked()#     {#         $to = new TestPackedMessage();#         $to->mergeFromString(TestUtil::getGoldenTestPackedMessage());#         TestUtil::assertTestPackedMessage($to);#     }# #     public function testPackedDecodeUnpacked()#     {#         $to = new TestPackedMessage();#         $to->mergeFromString(TestUtil::getGoldenTestUnpackedMessage());#         TestUtil::assertTestPackedMessage($to);#     }# #     public function testUnpackedEncode()#     {#         $from = new TestUnpackedMessage();#         TestUtil::setTestPackedMessage($from);#         $this->assertSame(TestUtil::getGoldenTestUnpackedMessage(),#                           $from->serializeToString());#     }# #     public function testUnpackedDecodePacked()#     {#         $to = new TestUnpackedMessage();#         $to->mergeFromString(TestUtil::getGoldenTestPackedMessage());#         TestUtil::assertTestPackedMessage($to);#     }# #     public function testUnpackedDecodeUnpacked()#     {#         $to = new TestUnpackedMessage();#         $to->mergeFromString(TestUtil::getGoldenTestUnpackedMessage());#         TestUtil::assertTestPackedMessage($to);#     }# #     public function testDecodeInt64()#     {#         // Read 64 testing#         $testVals = array(#             '10'                 => '100a',#             '100'                => '1064',#             '800'                => '10a006',#             '6400'               => '108032',#             '70400'              => '1080a604',#             '774400'             => '1080a22f',#             '9292800'            => '108098b704',#             '74342400'           => '1080c0b923',#             '743424000'          => '108080bfe202',#             '8177664000'         => '108080b5bb1e',#             '65421312000'        => '108080a8dbf301',#             '785055744000'       => '108080e0c7ec16',#             '9420668928000'      => '10808080dd969202',#             '103627358208000'    => '10808080fff9c717',#             '1139900940288000'   => '10808080f5bd978302',#             '13678811283456000'  => '10808080fce699a618',#             '109430490267648000' => '10808080e0b7ceb1c201',#             '984874412408832000' => '10808080e0f5c1bed50d',#         );# #         $msg = new TestMessage();#         foreach ($testVals as $original => $encoded) {#             $msg->setOptionalInt64($original);#             $data = $msg->serializeToString();#             $this->assertSame($encoded, bin2hex($data));#             $msg->setOptionalInt64(0);#             $msg->mergeFromString($data);#             $this->assertEquals($original, $msg->getOptionalInt64());#         }#     }# #     public function testDecodeToExistingMessage()#     {#         $m1 = new TestMessage();#         $this->setFields($m1);#         $this->expectFields($m1);# #         $m2 = new TestMessage();#         $this->setFields2($m2);#         $data = $m2->serializeToString();# #         $m1->mergeFromString($data);#         $this->expectFieldsMerged($m1);#     }# #     public function testDecodeFieldNonExist()#     {#         $data = hex2bin('c80501');#         $m = new TestMessage();#         $m->mergeFromString($data);#     }# #     public function testEncodeNegativeInt32()#     {#         $m = new TestMessage();#         $m->setOptionalInt32(-1);#         $data = $m->serializeToString();#         $this->assertSame("08ffffffffffffffffff01", bin2hex($data));#     }# #     public function testDecodeNegativeInt32()#     {#         $m = new TestMessage();#         $this->assertEquals(0, $m->getOptionalInt32());#         $m->mergeFromString(hex2bin("08ffffffffffffffffff01"));#         $this->assertEquals(-1, $m->getOptionalInt32());# #         $m = new TestMessage();#         $this->assertEquals(0, $m->getOptionalInt32());#         $m->mergeFromString(hex2bin("08ffffffff0f"));#         $this->assertEquals(-1, $m->getOptionalInt32());#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidInt32()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('08'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidSubMessage()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('9A010108'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidInt64()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('10'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidUInt32()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('18'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidUInt64()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('20'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidSInt32()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('28'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidSInt64()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('30'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidFixed32()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('3D'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidFixed64()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('41'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidSFixed32()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('4D'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidSFixed64()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('51'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidFloat()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('5D'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidDouble()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('61'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidBool()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('68'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidStringLengthMiss()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('72'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidStringDataMiss()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('7201'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidBytesLengthMiss()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('7A'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidBytesDataMiss()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('7A01'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidEnum()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('8001'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidMessageLengthMiss()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('8A01'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidMessageDataMiss()#     {#         $m = new TestMessage();#         $m->mergeFromString(hex2bin('8A0101'));#     }# #     /**#      * @expectedException Exception#      */#     public function testDecodeInvalidPackedMessageLength()#     {#         $m = new TestPackedMessage();#         $m->mergeFromString(hex2bin('D205'));#     }# #     public function testJsonEncode()#     {#         $from = new TestMessage();#         $this->setFields($from);#         $data = $from->serializeToJsonString();#         $to = new TestMessage();#         $to->mergeFromJsonString($data);#         $this->expectFields($to);#     }}
 |