diff options
Diffstat (limited to 'php/tests/encode_decode_test.php')
-rw-r--r-- | php/tests/encode_decode_test.php | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/php/tests/encode_decode_test.php b/php/tests/encode_decode_test.php new file mode 100644 index 00000000..d07907c0 --- /dev/null +++ b/php/tests/encode_decode_test.php @@ -0,0 +1,136 @@ +<?php + +require_once('test.pb.php'); +require_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->encode(); + $this->assertSame(TestUtil::getGoldenTestMessage(), $data); + } + + public function testDecode() + { + $to = new TestMessage(); + $to->decode(TestUtil::getGoldenTestMessage()); + $this->expectFields($to); + } + + public function testEncodeDecode() + { + $from = new TestMessage(); + $this->expectEmptyFields($from); + $this->setFields($from); + $this->expectFields($from); + + $data = $from->encode(); + + $to = new TestMessage(); + $to->decode($data); + $this->expectFields($to); + } + + public function testEncodeDecodeEmpty() + { + $from = new TestMessage(); + $this->expectEmptyFields($from); + + $data = $from->encode(); + + $to = new TestMessage(); + $to->decode($data); + $this->expectEmptyFields($to); + } + + public function testEncodeDecodeOneof() + { + $m = new TestMessage(); + + $m->setOneofInt32(1); + $data = $m->encode(); + $n = new TestMessage(); + $n->decode($data); + $this->assertSame(1, $n->getOneofInt32()); + + $m->setOneofFloat(2.0); + $data = $m->encode(); + $n = new TestMessage(); + $n->decode($data); + $this->assertSame(2.0, $n->getOneofFloat()); + + $m->setOneofString('abc'); + $data = $m->encode(); + $n = new TestMessage(); + $n->decode($data); + $this->assertSame('abc', $n->getOneofString()); + + $sub_m = new TestMessage_Sub(); + $sub_m->setA(1); + $m->setOneofMessage($sub_m); + $data = $m->encode(); + $n = new TestMessage(); + $n->decode($data); + $this->assertSame(1, $n->getOneofMessage()->getA()); + } + + public function testPackedEncode() + { + $from = new TestPackedMessage(); + TestUtil::setTestPackedMessage($from); + $this->assertSame(TestUtil::getGoldenTestPackedMessage(), + $from->encode()); + } + + public function testPackedDecodePacked() + { + $to = new TestPackedMessage(); + $to->decode(TestUtil::getGoldenTestPackedMessage()); + TestUtil::assertTestPackedMessage($to); + } + + public function testPackedDecodeUnpacked() + { + $to = new TestPackedMessage(); + $to->decode(TestUtil::getGoldenTestUnpackedMessage()); + TestUtil::assertTestPackedMessage($to); + } + + public function testUnpackedEncode() + { + $from = new TestUnpackedMessage(); + TestUtil::setTestPackedMessage($from); + $this->assertSame(TestUtil::getGoldenTestUnpackedMessage(), + $from->encode()); + } + + public function testUnpackedDecodePacked() + { + $to = new TestUnpackedMessage(); + $to->decode(TestUtil::getGoldenTestPackedMessage()); + TestUtil::assertTestPackedMessage($to); + } + + public function testUnpackedDecodeUnpacked() + { + $to = new TestUnpackedMessage(); + $to->decode(TestUtil::getGoldenTestUnpackedMessage()); + TestUtil::assertTestPackedMessage($to); + } +} |