diff options
author | Paul Yang <TeBoring@users.noreply.github.com> | 2017-02-07 21:33:28 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-07 21:33:28 -0800 |
commit | 2edf2bdebf1ede582b816a521ad6e51a802eaa46 (patch) | |
tree | d1a408c6ea5a3c32306864d1b96d7708bdb0e120 /php/tests | |
parent | c7f4c7bc417a24eeb7d5ac10a91b85b2df8a0b41 (diff) | |
download | protobuf-2edf2bdebf1ede582b816a521ad6e51a802eaa46.tar.gz protobuf-2edf2bdebf1ede582b816a521ad6e51a802eaa46.tar.bz2 protobuf-2edf2bdebf1ede582b816a521ad6e51a802eaa46.zip |
Bug fix: When encoding, negative int32 values should be padded to int64 (#2660)
in order to be wire compatible.
Diffstat (limited to 'php/tests')
-rw-r--r-- | php/tests/encode_decode_test.php | 24 | ||||
-rw-r--r-- | php/tests/php_implementation_test.php | 9 | ||||
-rw-r--r-- | php/tests/test_util.php | 12 |
3 files changed, 36 insertions, 9 deletions
diff --git a/php/tests/encode_decode_test.php b/php/tests/encode_decode_test.php index 992f1631..dfe3b353 100644 --- a/php/tests/encode_decode_test.php +++ b/php/tests/encode_decode_test.php @@ -22,7 +22,8 @@ class EncodeDecodeTest extends TestBase $this->expectFields($from); $data = $from->encode(); - $this->assertSame(TestUtil::getGoldenTestMessage(), $data); + $this->assertSame(bin2hex(TestUtil::getGoldenTestMessage()), + bin2hex($data)); } public function testDecode() @@ -173,4 +174,25 @@ class EncodeDecodeTest extends TestBase $m = new TestMessage(); $m->decode($data); } + + public function testEncodeNegativeInt32() + { + $m = new TestMessage(); + $m->setOptionalInt32(-1); + $data = $m->encode(); + $this->assertSame("08ffffffffffffffffff01", bin2hex($data)); + } + + public function testDecodeNegativeInt32() + { + $m = new TestMessage(); + $this->assertEquals(0, $m->getOptionalInt32()); + $m->decode(hex2bin("08ffffffffffffffffff01")); + $this->assertEquals(-1, $m->getOptionalInt32()); + + $m = new TestMessage(); + $this->assertEquals(0, $m->getOptionalInt32()); + $m->decode(hex2bin("08ffffffff0f")); + $this->assertEquals(-1, $m->getOptionalInt32()); + } } diff --git a/php/tests/php_implementation_test.php b/php/tests/php_implementation_test.php index ac7c13dc..46d3e5b6 100644 --- a/php/tests/php_implementation_test.php +++ b/php/tests/php_implementation_test.php @@ -469,6 +469,11 @@ class ImplementationTest extends TestBase $output = new OutputStream(3); $output->writeVarint32(16384); $this->assertSame(hex2bin('808001'), $output->getData()); + + // Negative numbers are padded to be compatible with int64. + $output = new OutputStream(10); + $output->writeVarint32(-43); + $this->assertSame(hex2bin('D5FFFFFFFFFFFFFFFF01'), $output->getData()); } public function testWriteVarint64() @@ -496,13 +501,13 @@ class ImplementationTest extends TestBase { $m = new TestMessage(); TestUtil::setTestMessage($m); - $this->assertSame(447, $m->byteSize()); + $this->assertSame(472, $m->byteSize()); } public function testPackedByteSize() { $m = new TestPackedMessage(); TestUtil::setTestPackedMessage($m); - $this->assertSame(156, $m->byteSize()); + $this->assertSame(166, $m->byteSize()); } } diff --git a/php/tests/test_util.php b/php/tests/test_util.php index 7f2aae15..07df5502 100644 --- a/php/tests/test_util.php +++ b/php/tests/test_util.php @@ -235,7 +235,7 @@ class TestUtil public static function getGoldenTestMessage() { return hex2bin( - "08D6FFFFFF0F" . + "08D6FFFFFFFFFFFFFFFF01" . "10D5FFFFFFFFFFFFFFFF01" . "182A" . "202B" . @@ -253,8 +253,8 @@ class TestUtil "800101" . "8A01020821" . - "F801D6FFFFFF0F" . - "F801CCFFFFFF0F" . + "F801D6FFFFFFFFFFFFFFFF01" . + "F801CCFFFFFFFFFFFFFFFF01" . "8002D5FFFFFFFFFFFFFFFF01" . "8002CBFFFFFFFFFFFFFFFF01" . "88022A" . @@ -288,7 +288,7 @@ class TestUtil "FA02020822" . "FA02020823" . - "BA040C08C2FFFFFF0F10C2FFFFFF0F" . + "BA041608C2FFFFFFFFFFFFFFFF0110C2FFFFFFFFFFFFFFFF01" . "C2041608C1FFFFFFFFFFFFFFFF0110C1FFFFFFFFFFFFFFFF01" . "CA0404083E103E" . "D20404083F103F" . @@ -401,7 +401,7 @@ class TestUtil public static function getGoldenTestPackedMessage() { return hex2bin( - "D2050AD6FFFFFF0FCCFFFFFF0F" . + "D20514D6FFFFFFFFFFFFFFFF01CCFFFFFFFFFFFFFFFF01" . "DA0514D5FFFFFFFFFFFFFFFF01CBFFFFFFFFFFFFFFFF01" . "E205022A34" . "EA05022B35" . @@ -421,7 +421,7 @@ class TestUtil public static function getGoldenTestUnpackedMessage() { return hex2bin( - "D005D6FFFFFF0FD005CCFFFFFF0F" . + "D005D6FFFFFFFFFFFFFFFF01D005CCFFFFFFFFFFFFFFFF01" . "D805D5FFFFFFFFFFFFFFFF01D805CBFFFFFFFFFFFFFFFF01" . "E0052AE00534" . "E8052BE80535" . |