Bug fix: When encoding, negative int32 values should be padded to int64 (#2660)
in order to be wire compatible.
diff --git a/php/tests/php_implementation_test.php b/php/tests/php_implementation_test.php
index ec6b8d5..e124980 100644
--- a/php/tests/php_implementation_test.php
+++ b/php/tests/php_implementation_test.php
@@ -469,6 +469,11 @@
$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 @@
{
$m = new TestMessage();
TestUtil::setTestMessage($m);
- $this->assertSame(481, $m->byteSize());
+ $this->assertSame(506, $m->byteSize());
}
public function testPackedByteSize()
{
$m = new TestPackedMessage();
TestUtil::setTestPackedMessage($m);
- $this->assertSame(156, $m->byteSize());
+ $this->assertSame(166, $m->byteSize());
}
}