diff options
Diffstat (limited to 'php/tests')
-rw-r--r-- | php/tests/encode_decode_test.php | 40 | ||||
-rw-r--r-- | php/tests/memory_leak_test.php | 44 |
2 files changed, 82 insertions, 2 deletions
diff --git a/php/tests/encode_decode_test.php b/php/tests/encode_decode_test.php index 4512c871..74d5526d 100644 --- a/php/tests/encode_decode_test.php +++ b/php/tests/encode_decode_test.php @@ -443,36 +443,74 @@ class EncodeDecodeTest extends TestBase public function testUnknown() { + // Test preserve unknown for varint. $m = new TestMessage(); - $from = hex2bin('F80601'); + $from = hex2bin('F80601'); // TODO(teboring): Add a util to encode + // varint for better readability $m->mergeFromString($from); $to = $m->serializeToString(); $this->assertSame(bin2hex($from), bin2hex($to)); + // Test preserve unknown for 64-bit. $m = new TestMessage(); $from = hex2bin('F9060000000000000000'); $m->mergeFromString($from); $to = $m->serializeToString(); $this->assertSame(bin2hex($from), bin2hex($to)); + // Test preserve unknown for length delimited. $m = new TestMessage(); $from = hex2bin('FA0600'); $m->mergeFromString($from); $to = $m->serializeToString(); $this->assertSame(bin2hex($from), bin2hex($to)); + // Test preserve unknown for 32-bit. $m = new TestMessage(); $from = hex2bin('FD0600000000'); $m->mergeFromString($from); $to = $m->serializeToString(); $this->assertSame(bin2hex($from), bin2hex($to)); + // Test discard unknown in message. $m = new TestMessage(); $from = hex2bin('F80601'); $m->mergeFromString($from); $m->discardUnknownFields(); $to = $m->serializeToString(); $this->assertSame("", bin2hex($to)); + + // Test discard unknown for singular message field. + $m = new TestMessage(); + $from = hex2bin('8A0103F80601'); + $m->mergeFromString($from); + $m->discardUnknownFields(); + $to = $m->serializeToString(); + $this->assertSame("8a0100", bin2hex($to)); + + // Test discard unknown for repeated message field. + $m = new TestMessage(); + $from = hex2bin('FA0203F80601'); + $m->mergeFromString($from); + $m->discardUnknownFields(); + $to = $m->serializeToString(); + $this->assertSame("fa0200", bin2hex($to)); + + // Test discard unknown for map message value field. + $m = new TestMessage(); + $from = hex2bin("BA050708011203F80601"); + $m->mergeFromString($from); + $m->discardUnknownFields(); + $to = $m->serializeToString(); + $this->assertSame("ba050408011200", bin2hex($to)); + + // Test discard unknown for singular message field. + $m = new TestMessage(); + $from = hex2bin('9A0403F80601'); + $m->mergeFromString($from); + $m->discardUnknownFields(); + $to = $m->serializeToString(); + $this->assertSame("9a0400", bin2hex($to)); } public function testJsonEncode() diff --git a/php/tests/memory_leak_test.php b/php/tests/memory_leak_test.php index b76c8bff..507635e7 100644 --- a/php/tests/memory_leak_test.php +++ b/php/tests/memory_leak_test.php @@ -50,7 +50,8 @@ $to->mergeFromString($data); TestUtil::assertTestMessage($to); -$from->setRecursive($from); +// TODO(teboring): This causes following tests fail in php7. +# $from->setRecursive($from); $arr = new RepeatedField(GPBType::MESSAGE, TestMessage::class); $arr[] = new TestMessage; @@ -105,6 +106,47 @@ $m = new TestMessage(); $m->mergeFromString(hex2bin('F80601')); assert('F80601', bin2hex($m->serializeToString())); +// Test create repeated field via array. +$str_arr = array("abc"); +$m = new TestMessage(); +$m->setRepeatedString($str_arr); + +// Test create map field via array. +$str_arr = array("abc"=>"abc"); +$m = new TestMessage(); +$m->setMapStringString($str_arr); + +// Test unset +$from = new TestMessage(); +TestUtil::setTestMessage($from); +unset($from); + +// Test wellknown +$from = new \Google\Protobuf\Timestamp(); +$from->setSeconds(1); +assert(1, $from->getSeconds()); + +$timestamp = new \Google\Protobuf\Timestamp(); + +date_default_timezone_set('UTC'); +$from = new DateTime('2011-01-01T15:03:01.012345UTC'); +$timestamp->fromDateTime($from); +assert($from->format('U') == $timestamp->getSeconds()); +assert(0 == $timestamp->getNanos()); + +$to = $timestamp->toDateTime(); +assert(\DateTime::class == get_class($to)); +assert($from->format('U') == $to->format('U')); + +$from = new \Google\Protobuf\Value(); +$from->setNumberValue(1); +assert(1, $from->getNumberValue()); + +// Test descriptor +$pool = \Google\Protobuf\DescriptorPool::getGeneratedPool(); +$desc = $pool->getDescriptorByClassName("\Foo\TestMessage"); +$field = $desc->getField(1); + # $from = new TestMessage(); # $to = new TestMessage(); # TestUtil::setTestMessage($from); |