Protocol Buffers - Google's data interchange format (grpc依赖) https://developers.google.com/protocol-buffers/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
3.5 KiB

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