aboutsummaryrefslogtreecommitdiffhomepage
path: root/php/tests
diff options
context:
space:
mode:
Diffstat (limited to 'php/tests')
-rw-r--r--php/tests/array_test.php12
-rwxr-xr-xphp/tests/compatibility_test.sh49
-rw-r--r--php/tests/descriptors_test.php2
-rw-r--r--php/tests/encode_decode_test.php53
-rwxr-xr-xphp/tests/gdb_test.sh10
-rw-r--r--php/tests/generated_class_test.php223
-rw-r--r--php/tests/generated_phpdoc_test.php14
-rw-r--r--php/tests/map_field_test.php10
-rw-r--r--php/tests/memory_leak_test.php113
-rw-r--r--php/tests/php_implementation_test.php75
-rw-r--r--php/tests/proto/empty/echo.proto17
-rw-r--r--php/tests/proto/test_empty_php_namespace.proto11
-rw-r--r--php/tests/proto/test_include.proto11
-rw-r--r--php/tests/proto/test_no_namespace.proto14
-rw-r--r--php/tests/proto/test_php_namespace.proto23
-rw-r--r--php/tests/proto/test_prefix.proto8
-rwxr-xr-xphp/tests/test.sh18
-rw-r--r--php/tests/test_base.php2
-rw-r--r--php/tests/test_util.php18
-rw-r--r--php/tests/undefined_test.php88
-rw-r--r--php/tests/well_known_test.php12
21 files changed, 639 insertions, 144 deletions
diff --git a/php/tests/array_test.php b/php/tests/array_test.php
index 1a26d72a..36a649ed 100644
--- a/php/tests/array_test.php
+++ b/php/tests/array_test.php
@@ -5,7 +5,7 @@ require_once('test_util.php');
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBType;
use Foo\TestMessage;
-use Foo\TestMessage_Sub;
+use Foo\TestMessage\Sub;
class RepeatedFieldTest extends PHPUnit_Framework_TestCase
{
@@ -456,10 +456,10 @@ class RepeatedFieldTest extends PHPUnit_Framework_TestCase
public function testMessage()
{
- $arr = new RepeatedField(GPBType::MESSAGE, TestMessage_Sub::class);
+ $arr = new RepeatedField(GPBType::MESSAGE, Sub::class);
// Test append.
- $sub_m = new TestMessage_Sub();
+ $sub_m = new Sub();
$sub_m->setA(1);
$arr[] = $sub_m;
$this->assertSame(1, $arr[0]->getA());
@@ -467,15 +467,15 @@ class RepeatedFieldTest extends PHPUnit_Framework_TestCase
$this->assertEquals(1, count($arr));
// Test set.
- $sub_m = new TestMessage_Sub();
+ $sub_m = new Sub();
$sub_m->setA(2);
$arr[0] = $sub_m;
$this->assertSame(2, $arr[0]->getA());
// Test foreach.
- $arr = new RepeatedField(GPBType::MESSAGE, TestMessage_Sub::class);
+ $arr = new RepeatedField(GPBType::MESSAGE, Sub::class);
for ($i = 0; $i < 3; $i++) {
- $arr[] = new TestMessage_Sub();
+ $arr[] = new Sub();
$arr[$i]->setA($i);
}
$i = 0;
diff --git a/php/tests/compatibility_test.sh b/php/tests/compatibility_test.sh
index 7caa46e7..b5b255ea 100755
--- a/php/tests/compatibility_test.sh
+++ b/php/tests/compatibility_test.sh
@@ -2,12 +2,14 @@
function use_php() {
VERSION=$1
- PHP=`which php`
- PHP_CONFIG=`which php-config`
- PHPIZE=`which phpize`
- ln -sfn "/usr/local/php-${VERSION}/bin/php" $PHP
- ln -sfn "/usr/local/php-${VERSION}/bin/php-config" $PHP_CONFIG
- ln -sfn "/usr/local/php-${VERSION}/bin/phpize" $PHPIZE
+
+ OLD_PATH=$PATH
+ OLD_CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH
+ OLD_C_INCLUDE_PATH=$C_INCLUDE_PATH
+
+ export PATH=/usr/local/php-${VERSION}/bin:$OLD_PATH
+ export CPLUS_INCLUDE_PATH=/usr/local/php-${VERSION}/include/php/main:/usr/local/php-${VERSION}/include/php/:$OLD_CPLUS_INCLUDE_PATH
+ export C_INCLUDE_PATH=/usr/local/php-${VERSION}/include/php/main:/usr/local/php-${VERSION}/include/php/:$OLD_C_INCLUDE_PATH
}
function generate_proto() {
@@ -18,7 +20,22 @@ function generate_proto() {
mkdir generated
$PROTOC1 --php_out=generated proto/test_include.proto
- $PROTOC2 --php_out=generated proto/test.proto proto/test_no_namespace.proto proto/test_prefix.proto
+ $PROTOC2 --php_out=generated \
+ proto/test.proto \
+ proto/test_no_namespace.proto \
+ proto/test_prefix.proto \
+ proto/test_php_namespace.proto \
+ proto/test_empty_php_namespace.proto \
+ proto/test_reserved_enum_lower.proto \
+ proto/test_reserved_enum_upper.proto \
+ proto/test_reserved_enum_value_lower.proto \
+ proto/test_reserved_enum_value_upper.proto \
+ proto/test_reserved_message_lower.proto \
+ proto/test_reserved_message_upper.proto \
+ proto/test_service.proto \
+ proto/test_service_namespace.proto \
+ proto/test_descriptors.proto
+
pushd ../../src
$PROTOC2 --php_out=../php/tests/generated -I../php/tests -I. ../php/tests/proto/test_import_descriptor_proto.proto
popd
@@ -52,9 +69,9 @@ cd $(dirname $0)
# The old version of protobuf that we are testing compatibility against.
case "$1" in
- ""|3.3.0)
- OLD_VERSION=3.3.0
- OLD_VERSION_PROTOC=http://repo1.maven.org/maven2/com/google/protobuf/protoc/3.3.0/protoc-3.3.0-linux-x86_64.exe
+ ""|3.5.0)
+ OLD_VERSION=3.5.0
+ OLD_VERSION_PROTOC=http://repo1.maven.org/maven2/com/google/protobuf/protoc/$OLD_VERSION/protoc-$OLD_VERSION-linux-x86_64.exe
;;
*)
echo "[ERROR]: Unknown version number: $1"
@@ -81,7 +98,7 @@ git checkout v$OLD_VERSION
popd
# Build and copy the new runtime
-use_php 5.5
+use_php 7.1
pushd ../ext/google/protobuf
make clean || true
phpize && ./configure && make
@@ -99,12 +116,12 @@ chmod +x old_protoc
NEW_PROTOC=`pwd`/../../src/protoc
OLD_PROTOC=`pwd`/old_protoc
cd protobuf/php
-cp -r /usr/local/vendor-5.5 vendor
-wget https://phar.phpunit.de/phpunit-4.8.0.phar -O /usr/bin/phpunit
+composer install
# Remove implementation detail tests.
tests=( array_test.php encode_decode_test.php generated_class_test.php map_field_test.php well_known_test.php )
sed -i.bak '/php_implementation_test.php/d' phpunit.xml
+sed -i.bak '/generated_phpdoc_test.php/d' phpunit.xml
for t in "${tests[@]}"
do
remove_error_test tests/$t
@@ -118,7 +135,7 @@ cd tests
generate_proto $OLD_PROTOC $OLD_PROTOC
./test.sh
pushd ..
-phpunit
+./vendor/bin/phpunit
popd
# Test A.2:
@@ -127,7 +144,7 @@ popd
generate_proto $NEW_PROTOC $OLD_PROTOC
./test.sh
pushd ..
-phpunit
+./vendor/bin/phpunit
popd
# Test A.3:
@@ -136,5 +153,5 @@ popd
generate_proto $OLD_PROTOC $NEW_PROTOC
./test.sh
pushd ..
-phpunit
+./vendor/bin/phpunit
popd
diff --git a/php/tests/descriptors_test.php b/php/tests/descriptors_test.php
index 17e8a4f2..93683b82 100644
--- a/php/tests/descriptors_test.php
+++ b/php/tests/descriptors_test.php
@@ -10,7 +10,7 @@ use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\MapField;
use Descriptors\TestDescriptorsEnum;
use Descriptors\TestDescriptorsMessage;
-use Descriptors\TestDescriptorsMessage_Sub;
+use Descriptors\TestDescriptorsMessage\Sub;
class DescriptorsTest extends TestBase
{
diff --git a/php/tests/encode_decode_test.php b/php/tests/encode_decode_test.php
index 4dca922b..d36b883e 100644
--- a/php/tests/encode_decode_test.php
+++ b/php/tests/encode_decode_test.php
@@ -7,7 +7,7 @@ use Google\Protobuf\RepeatedField;
use Google\Protobuf\GPBType;
use Foo\TestEnum;
use Foo\TestMessage;
-use Foo\TestMessage_Sub;
+use Foo\TestMessage\Sub;
use Foo\TestPackedMessage;
use Foo\TestRandomFieldOrder;
use Foo\TestUnpackedMessage;
@@ -82,7 +82,7 @@ class EncodeDecodeTest extends TestBase
$n->mergeFromString($data);
$this->assertSame('abc', $n->getOneofString());
- $sub_m = new TestMessage_Sub();
+ $sub_m = new Sub();
$sub_m->setA(1);
$m->setOneofMessage($sub_m);
$data = $m->serializeToString();
@@ -105,7 +105,7 @@ class EncodeDecodeTest extends TestBase
$this->assertSame("oneof_string", $n->getMyOneof());
$this->assertSame("", $n->getOneofString());
- $sub_m = new TestMessage_Sub();
+ $sub_m = new Sub();
$m->setOneofMessage($sub_m);
$data = $m->serializeToString();
$n = new TestMessage();
@@ -443,29 +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/gdb_test.sh b/php/tests/gdb_test.sh
index 484e2edf..36fa31bb 100755
--- a/php/tests/gdb_test.sh
+++ b/php/tests/gdb_test.sh
@@ -1,9 +1,17 @@
#!/bin/bash
+VERSION=$1
+
+export PATH=/usr/local/php-$VERSION/bin:$PATH
+export C_INCLUDE_PATH=/usr/local/php-$VERSION/include/php/main:/usr/local/php-$VERSION/include/php:$C_INCLUDE_PATH
+export CPLUS_INCLUDE_PATH=/usr/local/php-$VERSION/include/php/main:/usr/local/php-$VERSION/include/php:$CPLUS_INCLUDE_PATH
+
+php -i | grep "Configuration"
+
# gdb --args php -dextension=../ext/google/protobuf/modules/protobuf.so `which
# phpunit` --bootstrap autoload.php tmp_test.php
#
-gdb --args php -dextension=../ext/google/protobuf/modules/protobuf.so `which phpunit` --bootstrap autoload.php encode_decode_test.php
+gdb --args php -dextension=../ext/google/protobuf/modules/protobuf.so `which phpunit` --bootstrap autoload.php generated_class_test.php
#
# gdb --args php -dextension=../ext/google/protobuf/modules/protobuf.so memory_leak_test.php
#
diff --git a/php/tests/generated_class_test.php b/php/tests/generated_class_test.php
index 53d18ee7..9f20bddc 100644
--- a/php/tests/generated_class_test.php
+++ b/php/tests/generated_class_test.php
@@ -8,14 +8,20 @@ require_once('test_util.php');
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\MapField;
use Google\Protobuf\Internal\GPBType;
+use Bar\TestLegacyMessage;
+use Bar\TestLegacyMessage_NestedEnum;
+use Bar\TestLegacyMessage_NestedMessage;
use Foo\TestEnum;
use Foo\TestIncludeNamespaceMessage;
use Foo\TestIncludePrefixMessage;
use Foo\TestMessage;
+use Foo\TestMessage\Sub;
use Foo\TestMessage_Sub;
+use Foo\TestMessage\NestedEnum;
use Foo\TestReverseFieldOrder;
use Foo\testLowerCaseMessage;
use Foo\testLowerCaseEnum;
+use PBEmpty\PBEcho\TestEmptyPackage;
use Php\Test\TestNamespace;
class GeneratedClassTest extends TestBase
@@ -231,9 +237,26 @@ class GeneratedClassTest extends TestBase
public function testNestedEnum()
{
$m = new TestMessage();
+ $m->setOptionalNestedEnum(NestedEnum::ZERO);
+ }
+
+ public function testLegacyNestedEnum()
+ {
+ $m = new TestMessage();
$m->setOptionalNestedEnum(\Foo\TestMessage_NestedEnum::ZERO);
}
+ public function testLegacyTypehintWithNestedEnums()
+ {
+ $this->legacyEnum(new TestLegacyMessage\NestedEnum);
+ }
+
+ private function legacyEnum(TestLegacyMessage_NestedEnum $enum)
+ {
+ // If we made it here without a PHP Fatal error, the typehint worked
+ $this->assertTrue(true);
+ }
+
#########################################################
# Test float field.
#########################################################
@@ -370,6 +393,20 @@ class GeneratedClassTest extends TestBase
{
$m = new TestMessage();
+ $sub_m = new Sub();
+ $sub_m->setA(1);
+ $m->setOptionalMessage($sub_m);
+ $this->assertSame(1, $m->getOptionalMessage()->getA());
+
+ $null = null;
+ $m->setOptionalMessage($null);
+ $this->assertNull($m->getOptionalMessage());
+ }
+
+ public function testLegacyMessageField()
+ {
+ $m = new TestMessage();
+
$sub_m = new TestMessage_Sub();
$sub_m->setA(1);
$m->setOptionalMessage($sub_m);
@@ -380,6 +417,17 @@ class GeneratedClassTest extends TestBase
$this->assertNull($m->getOptionalMessage());
}
+ public function testLegacyTypehintWithNestedMessages()
+ {
+ $this->legacyMessage(new TestLegacyMessage\NestedMessage);
+ }
+
+ private function legacyMessage(TestLegacyMessage_NestedMessage $sub)
+ {
+ // If we made it here without a PHP Fatal error, the typehint worked
+ $this->assertTrue(true);
+ }
+
#########################################################
# Test repeated field.
#########################################################
@@ -474,7 +522,7 @@ class GeneratedClassTest extends TestBase
$this->assertSame(NULL, $m->getOneofMessage());
$this->assertSame("oneof_string", $m->getMyOneof());
- $sub_m = new TestMessage_Sub();
+ $sub_m = new Sub();
$sub_m->setA(1);
$m->setOneofMessage($sub_m);
$this->assertSame(0, $m->getOneofInt32());
@@ -513,7 +561,7 @@ class GeneratedClassTest extends TestBase
// Singular
$n->setOptionalInt32(100);
- $sub1 = new TestMessage_Sub();
+ $sub1 = new Sub();
$sub1->setA(101);
$b = $sub1->getB();
@@ -531,7 +579,7 @@ class GeneratedClassTest extends TestBase
$repeatedString[] = 'abc';
$n->setRepeatedString($repeatedString);
- $sub2 = new TestMessage_Sub();
+ $sub2 = new Sub();
$sub2->setA(201);
$repeatedMessage = $n->getRepeatedMessage();
$repeatedMessage[] = $sub2;
@@ -548,9 +596,9 @@ class GeneratedClassTest extends TestBase
$n->setMapStringString($mapStringString);
$mapInt32Message = $n->getMapInt32Message();
- $mapInt32Message[1] = new TestMessage_Sub();
+ $mapInt32Message[1] = new Sub();
$mapInt32Message[1]->setA(302);
- $mapInt32Message[2] = new TestMessage_Sub();
+ $mapInt32Message[2] = new Sub();
$mapInt32Message[2]->setA(303);
$n->setMapInt32Message($mapInt32Message);
@@ -607,7 +655,7 @@ class GeneratedClassTest extends TestBase
$m->mergeFrom($n);
$this->assertSame(1, $m->getOneofInt32());
- $sub = new TestMessage_Sub();
+ $sub = new Sub();
$n->setOneofMessage($sub);
$n->getOneofMessage()->setA(400);
$m->mergeFrom($n);
@@ -630,14 +678,15 @@ class GeneratedClassTest extends TestBase
public function testMessageWithoutNamespace()
{
$m = new TestMessage();
- $sub = new NoNameSpaceMessage();
- $m->setOptionalNoNamespaceMessage($sub);
+ $n = new NoNameSpaceMessage();
+ $m->setOptionalNoNamespaceMessage($n);
$repeatedNoNamespaceMessage = $m->getRepeatedNoNamespaceMessage();
$repeatedNoNamespaceMessage[] = new NoNameSpaceMessage();
$m->setRepeatedNoNamespaceMessage($repeatedNoNamespaceMessage);
- $n = new NoNamespaceMessage();
- $n->setB(NoNamespaceMessage_NestedEnum::ZERO);
+ // test nested messages
+ $sub = new NoNamespaceMessage\NestedMessage();
+ $n->setNestedMessage($sub);
}
public function testEnumWithoutNamespace()
@@ -650,35 +699,91 @@ class GeneratedClassTest extends TestBase
}
#########################################################
- # Test message with given prefix.
+ # Test message with given namespace.
#########################################################
- public function testPrefixMessage()
+ public function testNestedMessagesAndEnums()
{
+ $m = new TestMessage();
+ $n = new TestMessage\Sub();
+ $m->setOptionalMessage($n);
+ $m->setOptionalNestedEnum(TestMessage\NestedEnum::ZERO);
+ $this->assertSame($n, $m->getOptionalMessage());
+ $this->assertSame(TestMessage\NestedEnum::ZERO, $m->getOptionalNestedEnum());
+ }
+
+ public function testMessagesAndEnumsWithPrefix()
+ {
+ // Test message prefix
$m = new TestIncludePrefixMessage();
$n = new PrefixTestPrefix();
$n->setA(1);
$m->setPrefixMessage($n);
$this->assertSame(1, $m->getPrefixMessage()->getA());
+
+ // Test nested message prefix
+ $o = new PrefixTestPrefix();
+ $p = new PrefixTestPrefix\PrefixNestedMessage();
+ $o->setNestedMessage($p);
+ $o->setNestedEnum(PrefixTestPrefix\PrefixNestedEnum::ZERO);
+ $this->assertSame($p, $o->getNestedMessage());
+ $this->assertSame(PrefixTestPrefix\PrefixNestedEnum::ZERO, $o->getNestedEnum());
}
- #########################################################
- # Test message with given namespace.
- #########################################################
+ public function testMessagesAndEnumsWithPhpNamespace()
+ {
+ $m = new TestNamespace();
+ $n = new TestNamespace\NestedMessage();
+ $m->setNestedMessage($n);
+ $m->setNestedEnum(TestNamespace\NestedEnum::ZERO);
+ $this->assertSame($n, $m->getNestedMessage());
+ $this->assertSame(TestNamespace\NestedEnum::ZERO, $m->getNestedEnum());
+ }
- public function testNamespaceMessage()
+ public function testMesssagesAndEnumsWithEmptyPhpNamespace()
{
- $m = new TestIncludeNamespaceMessage();
+ $m = new TestEmptyNamespace();
+ $n = new TestEmptyNamespace\NestedMessage();
+ $m->setNestedMessage($n);
+ $m->setNestedEnum(TestEmptyNamespace\NestedEnum::ZERO);
+ $this->assertSame($n, $m->getNestedMessage());
+ $this->assertSame(TestEmptyNamespace\NestedEnum::ZERO, $m->getNestedEnum());
+ }
- $n = new TestNamespace();
- $n->setA(1);
- $m->setNamespaceMessage($n);
- $this->assertSame(1, $m->getNamespaceMessage()->getA());
+ public function testMessagesAndEnumsWithNoNamespace()
+ {
+ $m = new NoNamespaceMessage();
+ $n = new NoNamespaceMessage\NestedMessage();
+ $m->setNestedMessage($n);
+ $m->setNestedEnum(NoNamespaceMessage\NestedEnum::ZERO);
+ $this->assertSame($n, $m->getNestedMessage());
+ $this->assertSame(NoNamespaceMessage\NestedEnum::ZERO, $m->getNestedEnum());
+ }
- $n = new TestEmptyNamespace();
- $n->setA(1);
- $m->setEmptyNamespaceMessage($n);
- $this->assertSame(1, $m->getEmptyNamespaceMessage()->getA());
+ public function testReservedWordsInPackageName()
+ {
+ $m = new TestEmptyPackage();
+ $n = new TestEmptyPackage\NestedMessage();
+ $m->setNestedMessage($n);
+ $m->setNestedEnum(TestEmptyPackage\NestedEnum::ZERO);
+ $this->assertSame($n, $m->getNestedMessage());
+ $this->assertSame(TestEmptyPackage\NestedEnum::ZERO, $m->getNestedEnum());
+ }
+
+ public function testReservedWordsInNamespace()
+ {
+ $m = new TestNamespace();
+ $n = new TestNamespace\PBEmpty();
+ $o = new TestNamespace\PBEmpty\NestedMessage();
+ $n->setNestedMessage($o);
+ $n->setNestedEnum(TestNamespace\PBEmpty\NestedEnum::ZERO);
+ $m->setReservedName($n);
+ $this->assertSame($n, $m->getReservedName());
+ $this->assertSame($o, $n->getNestedMessage());
+ $this->assertSame(
+ TestNamespace\PBEmpty\NestedEnum::ZERO,
+ $n->getNestedEnum()
+ );
}
#########################################################
@@ -687,7 +792,7 @@ class GeneratedClassTest extends TestBase
public function testPrefixForReservedWords()
{
- $m = new \Foo\TestMessage_Empty();
+ $m = new \Foo\TestMessage\PBEmpty();
$m = new \Foo\PBEmpty();
$m = new \PrefixEmpty();
$m = new \Foo\PBARRAY();
@@ -1171,4 +1276,70 @@ class GeneratedClassTest extends TestBase
$m = new testLowerCaseMessage();
$n = testLowerCaseEnum::VALUE;
}
+
+ #########################################################
+ # Test Array Constructor.
+ #########################################################
+
+ public function testArrayConstructor()
+ {
+ $m = new TestMessage([
+ 'optional_int32' => -42,
+ 'optional_int64' => -43,
+ 'optional_uint32' => 42,
+ 'optional_uint64' => 43,
+ 'optional_sint32' => -44,
+ 'optional_sint64' => -45,
+ 'optional_fixed32' => 46,
+ 'optional_fixed64' => 47,
+ 'optional_sfixed32' => -46,
+ 'optional_sfixed64' => -47,
+ 'optional_float' => 1.5,
+ 'optional_double' => 1.6,
+ 'optional_bool' => true,
+ 'optional_string' => 'a',
+ 'optional_bytes' => 'b',
+ 'optional_enum' => TestEnum::ONE,
+ 'optional_message' => new Sub([
+ 'a' => 33
+ ]),
+ 'repeated_int32' => [-42, -52],
+ 'repeated_int64' => [-43, -53],
+ 'repeated_uint32' => [42, 52],
+ 'repeated_uint64' => [43, 53],
+ 'repeated_sint32' => [-44, -54],
+ 'repeated_sint64' => [-45, -55],
+ 'repeated_fixed32' => [46, 56],
+ 'repeated_fixed64' => [47, 57],
+ 'repeated_sfixed32' => [-46, -56],
+ 'repeated_sfixed64' => [-47, -57],
+ 'repeated_float' => [1.5, 2.5],
+ 'repeated_double' => [1.6, 2.6],
+ 'repeated_bool' => [true, false],
+ 'repeated_string' => ['a', 'c'],
+ 'repeated_bytes' => ['b', 'd'],
+ 'repeated_enum' => [TestEnum::ZERO, TestEnum::ONE],
+ 'repeated_message' => [new Sub(['a' => 34]),
+ new Sub(['a' => 35])],
+ 'map_int32_int32' => [-62 => -62],
+ 'map_int64_int64' => [-63 => -63],
+ 'map_uint32_uint32' => [62 => 62],
+ 'map_uint64_uint64' => [63 => 63],
+ 'map_sint32_sint32' => [-64 => -64],
+ 'map_sint64_sint64' => [-65 => -65],
+ 'map_fixed32_fixed32' => [66 => 66],
+ 'map_fixed64_fixed64' => [67 => 67],
+ 'map_sfixed32_sfixed32' => [-68 => -68],
+ 'map_sfixed64_sfixed64' => [-69 => -69],
+ 'map_int32_float' => [1 => 3.5],
+ 'map_int32_double' => [1 => 3.6],
+ 'map_bool_bool' => [true => true],
+ 'map_string_string' => ['e' => 'e'],
+ 'map_int32_bytes' => [1 => 'f'],
+ 'map_int32_enum' => [1 => TestEnum::ONE],
+ 'map_int32_message' => [1 => new Sub(['a' => 36])],
+ ]);
+
+ TestUtil::assertTestMessage($m);
+ }
}
diff --git a/php/tests/generated_phpdoc_test.php b/php/tests/generated_phpdoc_test.php
index 6c1a26f7..526927fc 100644
--- a/php/tests/generated_phpdoc_test.php
+++ b/php/tests/generated_phpdoc_test.php
@@ -16,6 +16,14 @@ class GeneratedPhpdocTest extends TestBase
$this->assertContains('foo.TestMessage', $doc);
}
+ public function testPhpDocForConstructor()
+ {
+ $class = new ReflectionClass('Foo\TestMessage');
+ $doc = $class->getMethod('__construct')->getDocComment();
+ $this->assertContains('@param array $data', $doc);
+ $this->assertContains('@type int $optional_int32', $doc);
+ }
+
/**
* @dataProvider providePhpDocForGettersAndSetters
*/
@@ -193,7 +201,7 @@ class GeneratedPhpdocTest extends TestBase
[
'setRepeatedMessage',
],
- '@param \Foo\TestMessage_Sub[]|\Google\Protobuf\Internal\RepeatedField $var'
+ '@param \Foo\TestMessage\Sub[]|\Google\Protobuf\Internal\RepeatedField $var'
],
[
[
@@ -286,14 +294,14 @@ class GeneratedPhpdocTest extends TestBase
'getOptionalMessage',
'getOneofMessage'
],
- '@return \Foo\TestMessage_Sub'
+ '@return \Foo\TestMessage\Sub'
],
[
[
'setOptionalMessage',
'setOneofMessage'
],
- '@param \Foo\TestMessage_Sub $var'
+ '@param \Foo\TestMessage\Sub $var'
],
[
[
diff --git a/php/tests/map_field_test.php b/php/tests/map_field_test.php
index cffa2526..447bdd9b 100644
--- a/php/tests/map_field_test.php
+++ b/php/tests/map_field_test.php
@@ -5,7 +5,7 @@ require_once('test_util.php');
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\MapField;
use Foo\TestMessage;
-use Foo\TestMessage_Sub;
+use Foo\TestMessage\Sub;
class MapFieldTest extends PHPUnit_Framework_TestCase {
@@ -408,10 +408,10 @@ class MapFieldTest extends PHPUnit_Framework_TestCase {
public function testMessage() {
$arr = new MapField(GPBType::INT32,
- GPBType::MESSAGE, TestMessage_Sub::class);
+ GPBType::MESSAGE, Sub::class);
// Test append.
- $sub_m = new TestMessage_Sub();
+ $sub_m = new Sub();
$sub_m->setA(1);
$arr[0] = $sub_m;
$this->assertSame(1, $arr[0]->getA());
@@ -420,9 +420,9 @@ class MapFieldTest extends PHPUnit_Framework_TestCase {
// Test foreach.
$arr = new MapField(GPBType::INT32,
- GPBType::MESSAGE, TestMessage_Sub::class);
+ GPBType::MESSAGE, Sub::class);
for ($i = 0; $i < 3; $i++) {
- $arr[$i] = new TestMessage_Sub();;
+ $arr[$i] = new Sub();;
$arr[$i]->setA($i);
}
$i = 0;
diff --git a/php/tests/memory_leak_test.php b/php/tests/memory_leak_test.php
index b76c8bff..4e3874b7 100644
--- a/php/tests/memory_leak_test.php
+++ b/php/tests/memory_leak_test.php
@@ -4,20 +4,28 @@
require_once('generated/NoNamespaceEnum.php');
require_once('generated/NoNamespaceMessage.php');
-require_once('generated/NoNamespaceMessage_NestedEnum.php');
+require_once('generated/NoNamespaceMessage/NestedEnum.php');
+require_once('generated/NoNamespaceMessage/NestedMessage.php');
require_once('generated/PrefixEmpty.php');
require_once('generated/PrefixTestPrefix.php');
+require_once('generated/PrefixTestPrefix/PrefixNestedEnum.php');
+require_once('generated/PrefixTestPrefix/PrefixNestedMessage.php');
require_once('generated/TestEmptyNamespace.php');
+require_once('generated/TestEmptyNamespace/NestedEnum.php');
+require_once('generated/TestEmptyNamespace/NestedMessage.php');
require_once('generated/Bar/TestInclude.php');
+require_once('generated/Bar/TestLegacyMessage.php');
+require_once('generated/Bar/TestLegacyMessage/NestedEnum.php');
+require_once('generated/Bar/TestLegacyMessage/NestedMessage.php');
require_once('generated/Foo/PBARRAY.php');
require_once('generated/Foo/PBEmpty.php');
require_once('generated/Foo/TestEnum.php');
require_once('generated/Foo/TestIncludeNamespaceMessage.php');
require_once('generated/Foo/TestIncludePrefixMessage.php');
require_once('generated/Foo/TestMessage.php');
-require_once('generated/Foo/TestMessage_Empty.php');
-require_once('generated/Foo/TestMessage_NestedEnum.php');
-require_once('generated/Foo/TestMessage_Sub.php');
+require_once('generated/Foo/TestMessage/PBEmpty.php');
+require_once('generated/Foo/TestMessage/NestedEnum.php');
+require_once('generated/Foo/TestMessage/Sub.php');
require_once('generated/Foo/TestPackedMessage.php');
require_once('generated/Foo/TestPhpDoc.php');
require_once('generated/Foo/TestRandomFieldOrder.php');
@@ -26,18 +34,23 @@ require_once('generated/Foo/TestUnpackedMessage.php');
require_once('generated/Foo/testLowerCaseMessage.php');
require_once('generated/Foo/testLowerCaseEnum.php');
require_once('generated/GPBMetadata/Proto/Test.php');
-require_once('generated/GPBMetadata/Proto/TestEmptyPhpNamespace.php');
+require_once('generated/TestEmptyPhpNamespace.php');
require_once('generated/GPBMetadata/Proto/TestInclude.php');
-require_once('generated/GPBMetadata/Proto/TestNoNamespace.php');
-require_once('generated/GPBMetadata/Proto/TestPhpNamespace.php');
+require_once('generated/TestNoNamespace.php');
+require_once('generated/Metadata/Php/Test/TestPhpNamespace.php');
require_once('generated/GPBMetadata/Proto/TestPrefix.php');
require_once('generated/Php/Test/TestNamespace.php');
+require_once('generated/Php/Test/TestNamespace/PBEmpty.php');
+require_once('generated/Php/Test/TestNamespace/PBEmpty/NestedEnum.php');
+require_once('generated/Php/Test/TestNamespace/PBEmpty/NestedMessage.php');
+require_once('generated/Php/Test/TestNamespace/NestedEnum.php');
+require_once('generated/Php/Test/TestNamespace/NestedMessage.php');
require_once('test_util.php');
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBType;
use Foo\TestMessage;
-use Foo\TestMessage_Sub;
+use Foo\TestMessage\Sub;
$from = new TestMessage();
TestUtil::setTestMessage($from);
@@ -50,7 +63,15 @@ $to->mergeFromString($data);
TestUtil::assertTestMessage($to);
-$from->setRecursive($from);
+$from = new TestMessage();
+TestUtil::setTestMessage2($from);
+
+$data = $from->serializeToString();
+
+$to->mergeFromString($data);
+
+// TODO(teboring): This causes following tests fail in php7.
+# $from->setRecursive($from);
$arr = new RepeatedField(GPBType::MESSAGE, TestMessage::class);
$arr[] = new TestMessage;
@@ -89,7 +110,7 @@ $n = new TestMessage();
$n->mergeFromString($data);
assert('abc' === $n->getOneofString());
-$sub_m = new TestMessage_Sub();
+$sub_m = new Sub();
$sub_m->setA(1);
$m->setOneofMessage($sub_m);
assert(0 === $m->getOneofInt32());
@@ -103,10 +124,70 @@ assert(1 === $n->getOneofMessage()->getA());
$m = new TestMessage();
$m->mergeFromString(hex2bin('F80601'));
-assert('F80601', bin2hex($m->serializeToString()));
+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();
-# $from = new TestMessage();
-# $to = new TestMessage();
-# TestUtil::setTestMessage($from);
-# $to->mergeFrom($from);
-# TestUtil::assertTestMessage($to);
+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 discard unknown in message.
+$m = new TestMessage();
+$from = hex2bin('F80601');
+$m->mergeFromString($from);
+$m->discardUnknownFields();
+$to = $m->serializeToString();
+assert("" === bin2hex($to));
+
+// Test clear
+$m = new TestMessage();
+TestUtil::setTestMessage($m);
+$m->clear();
+
+// Test unset map element
+$m = new TestMessage();
+$map = $m->getMapStringString();
+$map[1] = 1;
+unset($map[1]);
+
+// 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);
+$to->mergeFrom($from);
+TestUtil::assertTestMessage($to);
diff --git a/php/tests/php_implementation_test.php b/php/tests/php_implementation_test.php
index 5dbc9233..323a36ff 100644
--- a/php/tests/php_implementation_test.php
+++ b/php/tests/php_implementation_test.php
@@ -3,8 +3,9 @@
require_once('test_base.php');
require_once('test_util.php');
+use Foo\TestEnum;
use Foo\TestMessage;
-use Foo\TestMessage_Sub;
+use Foo\TestMessage\Sub;
use Foo\TestPackedMessage;
use Google\Protobuf\Internal\CodedInputStream;
use Google\Protobuf\Internal\FileDescriptorSet;
@@ -15,7 +16,6 @@ use Google\Protobuf\Internal\CodedOutputStream;
class ImplementationTest extends TestBase
{
-
public function testReadInt32()
{
$value = null;
@@ -513,4 +513,75 @@ class ImplementationTest extends TestBase
TestUtil::setTestPackedMessage($m);
$this->assertSame(166, $m->byteSize());
}
+
+ /**
+ * @expectedException UnexpectedValueException
+ * @expectedExceptionMessage Invalid message property: optionalInt32
+ */
+ public function testArrayConstructorJsonCaseThrowsException()
+ {
+ $m = new TestMessage([
+ 'optionalInt32' => -42,
+ ]);
+ }
+
+ /**
+ * @expectedException Exception
+ * @expectedExceptionMessage Expect Foo\TestMessage_Sub.
+ */
+ public function testArraysForMessagesThrowsException()
+ {
+ $m = new TestMessage([
+ 'optional_message' => [
+ 'a' => 33
+ ]
+ ]);
+ }
+
+ public function testArrayConstructorWithNullValues()
+ {
+ $requestData = [
+ 'optional_bool' => null,
+ 'optional_string' => null,
+ 'optional_bytes' => null,
+ 'optional_message' => null,
+ ];
+
+ $m = new TestMessage($requestData);
+
+ $this->assertSame(false, $m->getOptionalBool());
+ $this->assertSame('', $m->getOptionalString());
+ $this->assertSame('', $m->getOptionalBytes());
+ $this->assertSame(null, $m->getOptionalMessage());
+ }
+
+ /**
+ * @dataProvider provideArrayConstructorWithNullValuesThrowsException
+ * @expectedException Exception
+ */
+ public function testArrayConstructorWithNullValuesThrowsException($requestData)
+ {
+ $m = new TestMessage($requestData);
+ }
+
+ public function provideArrayConstructorWithNullValuesThrowsException()
+ {
+ return [
+ [['optional_int32' => null]],
+ [['optional_int64' => null]],
+ [['optional_uint32' => null]],
+ [['optional_uint64' => null]],
+ [['optional_sint32' => null]],
+ [['optional_sint64' => null]],
+ [['optional_fixed32' => null]],
+ [['optional_fixed64' => null]],
+ [['optional_sfixed32' => null]],
+ [['optional_sfixed64' => null]],
+ [['optional_float' => null]],
+ [['optional_double' => null]],
+ [['optional_enum' => null]],
+ [['repeated_int32' => null]],
+ [['map_int32_int32' => null]],
+ ];
+ }
}
diff --git a/php/tests/proto/empty/echo.proto b/php/tests/proto/empty/echo.proto
new file mode 100644
index 00000000..1817018d
--- /dev/null
+++ b/php/tests/proto/empty/echo.proto
@@ -0,0 +1,17 @@
+syntax = "proto3";
+
+package empty.echo;
+
+message TestEmptyPackage {
+ int32 a = 1;
+
+ // Test nested messages, enums, and reserved names
+ NestedMessage nested_message = 2;
+ NestedEnum nested_enum = 3;
+ message NestedMessage {
+ int32 a = 1;
+ }
+ enum NestedEnum {
+ ZERO = 0;
+ };
+}
diff --git a/php/tests/proto/test_empty_php_namespace.proto b/php/tests/proto/test_empty_php_namespace.proto
index 7b4bc74d..c7ed1657 100644
--- a/php/tests/proto/test_empty_php_namespace.proto
+++ b/php/tests/proto/test_empty_php_namespace.proto
@@ -2,7 +2,18 @@ syntax = "proto3";
package foo;
option php_namespace = "";
+option php_metadata_namespace = "";
message TestEmptyNamespace {
int32 a = 1;
+
+ // Test nested messages, enums, and reserved names
+ NestedMessage nested_message = 2;
+ NestedEnum nested_enum = 3;
+ message NestedMessage {
+ int32 a = 1;
+ }
+ enum NestedEnum {
+ ZERO = 0;
+ };
}
diff --git a/php/tests/proto/test_include.proto b/php/tests/proto/test_include.proto
index 9844617f..a9072fe3 100644
--- a/php/tests/proto/test_include.proto
+++ b/php/tests/proto/test_include.proto
@@ -5,3 +5,14 @@ package bar;
message TestInclude {
int32 a = 1;
}
+
+message TestLegacyMessage {
+ NestedMessage message = 1;
+ NestedEnum enum = 2;
+ message NestedMessage {
+ int32 a = 1;
+ }
+ enum NestedEnum {
+ ZERO = 0;
+ }
+}
diff --git a/php/tests/proto/test_no_namespace.proto b/php/tests/proto/test_no_namespace.proto
index 58f13d47..cce42ea2 100644
--- a/php/tests/proto/test_no_namespace.proto
+++ b/php/tests/proto/test_no_namespace.proto
@@ -1,13 +1,19 @@
syntax = "proto3";
+option php_metadata_namespace = "\\";
+
message NoNamespaceMessage {
int32 a = 1;
- enum NestedEnum {
- ZERO = 0;
+ // Test nested messages, enums, and reserved names
+ NestedMessage nested_message = 2;
+ NestedEnum nested_enum = 3;
+ message NestedMessage {
+ int32 a = 1;
}
- NestedEnum b = 2;
- repeated NestedEnum c = 3;
+ enum NestedEnum {
+ ZERO = 0;
+ };
}
enum NoNamespaceEnum {
diff --git a/php/tests/proto/test_php_namespace.proto b/php/tests/proto/test_php_namespace.proto
index 713187b9..61085bf7 100644
--- a/php/tests/proto/test_php_namespace.proto
+++ b/php/tests/proto/test_php_namespace.proto
@@ -2,7 +2,30 @@ syntax = "proto3";
package foo;
option php_namespace = "Php\\Test";
+option php_metadata_namespace = "Metadata\\Php\\Test";
message TestNamespace {
int32 a = 1;
+
+ // Test nested messages, enums, and reserved names
+ NestedMessage nested_message = 2;
+ NestedEnum nested_enum = 3;
+ Empty reserved_name = 4;
+ message NestedMessage {
+ int32 a = 1;
+ }
+ enum NestedEnum {
+ ZERO = 0;
+ };
+ // Test reserved name
+ message Empty {
+ NestedMessage nested_message = 1;
+ NestedEnum nested_enum = 2;
+ message NestedMessage {
+ int32 a = 1;
+ }
+ enum NestedEnum {
+ ZERO = 0;
+ };
+ }
}
diff --git a/php/tests/proto/test_prefix.proto b/php/tests/proto/test_prefix.proto
index 9bfbad7f..3fa11381 100644
--- a/php/tests/proto/test_prefix.proto
+++ b/php/tests/proto/test_prefix.proto
@@ -4,6 +4,14 @@ option php_class_prefix = "Prefix";
message TestPrefix {
int32 a = 1;
+ NestedMessage nested_message = 2;
+ NestedEnum nested_enum = 3;
+ message NestedMessage {
+ int32 a = 1;
+ }
+ enum NestedEnum {
+ ZERO = 0;
+ };
}
// Test prefix for reserved words.
diff --git a/php/tests/test.sh b/php/tests/test.sh
index c35372d3..6e70eb2a 100755
--- a/php/tests/test.sh
+++ b/php/tests/test.sh
@@ -1,5 +1,11 @@
#!/bin/bash
+VERSION=$1
+
+export PATH=/usr/local/php-$VERSION/bin:$PATH
+export C_INCLUDE_PATH=/usr/local/php-$VERSION/include/php/main:/usr/local/php-$VERSION/include/php:$C_INCLUDE_PATH
+export CPLUS_INCLUDE_PATH=/usr/local/php-$VERSION/include/php/main:/usr/local/php-$VERSION/include/php:$CPLUS_INCLUDE_PATH
+
# Compile c extension
pushd ../ext/google/protobuf/
make clean || true
@@ -25,3 +31,15 @@ done
export ZEND_DONT_UNLOAD_MODULES=1
export USE_ZEND_ALLOC=0
valgrind --leak-check=yes php -dextension=../ext/google/protobuf/modules/protobuf.so memory_leak_test.php
+
+# TODO(teboring): Only for debug (phpunit has memory leak which blocks this beging used by
+# regresssion test.)
+
+# for t in "${tests[@]}"
+# do
+# echo "****************************"
+# echo "* $t (memory leak)"
+# echo "****************************"
+# valgrind --leak-check=yes php -dextension=../ext/google/protobuf/modules/protobuf.so `which phpunit` --bootstrap autoload.php $t
+# echo ""
+# done
diff --git a/php/tests/test_base.php b/php/tests/test_base.php
index dc5e73f5..80f603c7 100644
--- a/php/tests/test_base.php
+++ b/php/tests/test_base.php
@@ -2,7 +2,7 @@
use Foo\TestMessage;
use Foo\TestEnum;
-use Foo\TestMessage_Sub;
+use Foo\TestMessage\Sub;
class TestBase extends PHPUnit_Framework_TestCase
{
diff --git a/php/tests/test_util.php b/php/tests/test_util.php
index c8afdd3e..a676d097 100644
--- a/php/tests/test_util.php
+++ b/php/tests/test_util.php
@@ -2,7 +2,7 @@
use Foo\TestEnum;
use Foo\TestMessage;
-use Foo\TestMessage_Sub;
+use Foo\TestMessage\Sub;
use Foo\TestPackedMessage;
use Foo\TestUnpackedMessage;
@@ -67,7 +67,7 @@ class TestUtil
$m->setOptionalString('a');
$m->setOptionalBytes('b');
$m->setOptionalEnum(TestEnum::ONE);
- $sub = new TestMessage_Sub();
+ $sub = new Sub();
$m->setOptionalMessage($sub);
$m->getOptionalMessage()->SetA(33);
@@ -87,7 +87,7 @@ class TestUtil
self::appendHelper($m, 'RepeatedString', 'a');
self::appendHelper($m, 'RepeatedBytes', 'b');
self::appendHelper($m, 'RepeatedEnum', TestEnum::ZERO);
- self::appendHelper($m, 'RepeatedMessage', new TestMessage_Sub());
+ self::appendHelper($m, 'RepeatedMessage', new Sub());
$m->getRepeatedMessage()[0]->setA(34);
self::appendHelper($m, 'RepeatedInt32', -52);
@@ -106,7 +106,7 @@ class TestUtil
self::appendHelper($m, 'RepeatedString', 'c');
self::appendHelper($m, 'RepeatedBytes', 'd');
self::appendHelper($m, 'RepeatedEnum', TestEnum::ONE);
- self::appendHelper($m, 'RepeatedMessage', new TestMessage_Sub());
+ self::appendHelper($m, 'RepeatedMessage', new Sub());
$m->getRepeatedMessage()[1]->SetA(35);
self::kvUpdateHelper($m, 'MapInt32Int32', -62, -62);
@@ -125,13 +125,13 @@ class TestUtil
self::kvUpdateHelper($m, 'MapStringString', 'e', 'e');
self::kvUpdateHelper($m, 'MapInt32Bytes', 1, 'f');
self::kvUpdateHelper($m, 'MapInt32Enum', 1, TestEnum::ONE);
- self::kvUpdateHelper($m, 'MapInt32Message', 1, new TestMessage_Sub());
+ self::kvUpdateHelper($m, 'MapInt32Message', 1, new Sub());
$m->getMapInt32Message()[1]->SetA(36);
}
public static function setTestMessage2(TestMessage $m)
{
- $sub = new TestMessage_Sub();
+ $sub = new Sub();
$m->setOptionalInt32(-142);
$m->setOptionalInt64(-143);
@@ -168,7 +168,7 @@ class TestUtil
self::appendHelper($m, 'RepeatedString', 'aa');
self::appendHelper($m, 'RepeatedBytes', 'bb');
self::appendHelper($m, 'RepeatedEnum', TestEnum::TWO);
- self::appendHelper($m, 'RepeatedMessage', new TestMessage_Sub());
+ self::appendHelper($m, 'RepeatedMessage', new Sub());
$m->getRepeatedMessage()[0]->setA(134);
self::kvUpdateHelper($m, 'MapInt32Int32', -62, -162);
@@ -187,7 +187,7 @@ class TestUtil
self::kvUpdateHelper($m, 'MapStringString', 'e', 'ee');
self::kvUpdateHelper($m, 'MapInt32Bytes', 1, 'ff');
self::kvUpdateHelper($m, 'MapInt32Enum', 1, TestEnum::TWO);
- self::kvUpdateHelper($m, 'MapInt32Message', 1, new TestMessage_Sub());
+ self::kvUpdateHelper($m, 'MapInt32Message', 1, new Sub());
$m->getMapInt32Message()[1]->SetA(136);
self::kvUpdateHelper($m, 'MapInt32Int32', -162, -162);
@@ -206,7 +206,7 @@ class TestUtil
self::kvUpdateHelper($m, 'MapStringString', 'ee', 'ee');
self::kvUpdateHelper($m, 'MapInt32Bytes', 2, 'ff');
self::kvUpdateHelper($m, 'MapInt32Enum', 2, TestEnum::TWO);
- self::kvUpdateHelper($m, 'MapInt32Message', 2, new TestMessage_Sub());
+ self::kvUpdateHelper($m, 'MapInt32Message', 2, new Sub());
$m->getMapInt32Message()[2]->SetA(136);
}
diff --git a/php/tests/undefined_test.php b/php/tests/undefined_test.php
index dc6b7086..935d8be7 100644
--- a/php/tests/undefined_test.php
+++ b/php/tests/undefined_test.php
@@ -5,7 +5,7 @@ require_once('test_util.php');
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBType;
use Foo\TestMessage;
-use Foo\TestMessage_Sub;
+use Foo\TestMessage\Sub;
class UndefinedTest extends PHPUnit_Framework_TestCase
{
@@ -35,7 +35,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testInt32AppendMessageFail()
{
$arr = new RepeatedField(GPBType::INT32);
- $arr[] = new TestMessage_Sub();
+ $arr[] = new Sub();
}
/**
@@ -45,7 +45,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
{
$arr = new RepeatedField(GPBType::INT32);
$arr[] = 0;
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -73,7 +73,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testUint32AppendMessageFail()
{
$arr = new RepeatedField(GPBType::UINT32);
- $arr[] = new TestMessage_Sub();
+ $arr[] = new Sub();
}
/**
@@ -83,7 +83,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
{
$arr = new RepeatedField(GPBType::UINT32);
$arr[] = 0;
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -111,7 +111,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testInt64AppendMessageFail()
{
$arr = new RepeatedField(GPBType::INT64);
- $arr[] = new TestMessage_Sub();
+ $arr[] = new Sub();
}
/**
@@ -121,7 +121,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
{
$arr = new RepeatedField(GPBType::INT64);
$arr[] = 0;
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -149,7 +149,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testUint64AppendMessageFail()
{
$arr = new RepeatedField(GPBType::UINT64);
- $arr[] = new TestMessage_Sub();
+ $arr[] = new Sub();
}
/**
@@ -159,7 +159,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
{
$arr = new RepeatedField(GPBType::UINT64);
$arr[] = 0;
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -187,7 +187,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testFloatAppendMessageFail()
{
$arr = new RepeatedField(GPBType::FLOAT);
- $arr[] = new TestMessage_Sub();
+ $arr[] = new Sub();
}
/**
@@ -197,7 +197,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
{
$arr = new RepeatedField(GPBType::FLOAT);
$arr[] = 0.0;
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -225,7 +225,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testDoubleAppendMessageFail()
{
$arr = new RepeatedField(GPBType::DOUBLE);
- $arr[] = new TestMessage_Sub();
+ $arr[] = new Sub();
}
/**
@@ -235,7 +235,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
{
$arr = new RepeatedField(GPBType::DOUBLE);
$arr[] = 0.0;
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -244,7 +244,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testBoolAppendMessageFail()
{
$arr = new RepeatedField(GPBType::BOOL);
- $arr[] = new TestMessage_Sub();
+ $arr[] = new Sub();
}
/**
@@ -254,7 +254,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
{
$arr = new RepeatedField(GPBType::BOOL);
$arr[] = true;
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -263,7 +263,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testStringAppendMessageFail()
{
$arr = new RepeatedField(GPBType::STRING);
- $arr[] = new TestMessage_Sub();
+ $arr[] = new Sub();
}
/**
@@ -273,7 +273,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
{
$arr = new RepeatedField(GPBType::STRING);
$arr[] = 'abc';
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -302,7 +302,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
*/
public function testMessageAppendIntFail()
{
- $arr = new RepeatedField(GPBType::MESSAGE, TestMessage_Sub::class);
+ $arr = new RepeatedField(GPBType::MESSAGE, Sub::class);
$arr[] = 1;
}
@@ -311,8 +311,8 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
*/
public function testMessageSetIntFail()
{
- $arr = new RepeatedField(GPBType::MESSAGE, TestMessage_Sub::class);
- $arr[] = new TestMessage_Sub;
+ $arr = new RepeatedField(GPBType::MESSAGE, Sub::class);
+ $arr[] = new Sub;
$arr[0] = 'abc';
}
@@ -321,7 +321,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
*/
public function testMessageAppendStringFail()
{
- $arr = new RepeatedField(GPBType::MESSAGE, TestMessage_Sub::class);
+ $arr = new RepeatedField(GPBType::MESSAGE, Sub::class);
$arr[] = 'abc';
}
@@ -330,8 +330,8 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
*/
public function testMessageSetStringFail()
{
- $arr = new RepeatedField(GPBType::MESSAGE, TestMessage_Sub::class);
- $arr[] = new TestMessage_Sub;
+ $arr = new RepeatedField(GPBType::MESSAGE, Sub::class);
+ $arr[] = new Sub;
$arr[0] = 'abc';
}
@@ -340,7 +340,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
*/
public function testMessageAppendOtherMessageFail()
{
- $arr = new RepeatedField(GPBType::MESSAGE, TestMessage_Sub::class);
+ $arr = new RepeatedField(GPBType::MESSAGE, Sub::class);
$arr[] = new TestMessage;
}
@@ -349,7 +349,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
*/
public function testMessageAppendNullFail()
{
- $arr = new RepeatedField(GPBType::MESSAGE, TestMessage_Sub::class);
+ $arr = new RepeatedField(GPBType::MESSAGE, Sub::class);
$null = null;
$arr[] = $null;
}
@@ -359,8 +359,8 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
*/
public function testMessageSetNullFail()
{
- $arr = new RepeatedField(GPBType::MESSAGE, TestMessage_Sub::class);
- $arr[] = new TestMessage_Sub();
+ $arr = new RepeatedField(GPBType::MESSAGE, Sub::class);
+ $arr[] = new Sub();
$null = null;
$arr[0] = $null;
}
@@ -397,7 +397,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
{
$arr = new RepeatedField(GPBType::INT32);
$arr[] = 0;
- $arr[new TestMessage_Sub()] = 0;
+ $arr[new Sub()] = 0;
}
/**
@@ -656,7 +656,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testMessageMergeFromInvalidTypeFail()
{
$m = new TestMessage();
- $n = new TestMessage_Sub();
+ $n = new Sub();
$m->mergeFrom($n);
}
@@ -684,7 +684,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testInt32SetMessageKeyFail()
{
$arr = new MapField(GPBType::INT32, GPBType::INT32);
- $arr[new TestMessage_Sub()] = 0;
+ $arr[new Sub()] = 0;
}
/**
@@ -693,7 +693,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testInt32SetMessageValueFail()
{
$arr = new MapField(GPBType::INT32, GPBType::INT32);
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -720,7 +720,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testUint32SetMessageKeyFail()
{
$arr = new MapField(GPBType::UINT32, GPBType::UINT32);
- $arr[new TestMessage_Sub()] = 0;
+ $arr[new Sub()] = 0;
}
/**
@@ -729,7 +729,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testUint32SetMessageValueFail()
{
$arr = new MapField(GPBType::UINT32, GPBType::UINT32);
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -756,7 +756,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testInt64SetMessageKeyFail()
{
$arr = new MapField(GPBType::INT64, GPBType::INT64);
- $arr[new TestMessage_Sub()] = 0;
+ $arr[new Sub()] = 0;
}
/**
@@ -765,7 +765,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testInt64SetMessageValueFail()
{
$arr = new MapField(GPBType::INT64, GPBType::INT64);
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -792,7 +792,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testUint64SetMessageKeyFail()
{
$arr = new MapField(GPBType::UINT64, GPBType::UINT64);
- $arr[new TestMessage_Sub()] = 0;
+ $arr[new Sub()] = 0;
}
/**
@@ -801,7 +801,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testUint64SetMessageValueFail()
{
$arr = new MapField(GPBType::UINT64, GPBType::UINT64);
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -819,7 +819,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testDoubleSetMessageValueFail()
{
$arr = new MapField(GPBType::INT64, GPBType::DOUBLE);
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
@@ -828,7 +828,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testBoolSetMessageKeyFail()
{
$arr = new MapField(GPBType::BOOL, GPBType::BOOL);
- $arr[new TestMessage_Sub()] = true;
+ $arr[new Sub()] = true;
}
/**
@@ -837,7 +837,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testBoolSetMessageValueFail()
{
$arr = new MapField(GPBType::BOOL, GPBType::BOOL);
- $arr[true] = new TestMessage_Sub();
+ $arr[true] = new Sub();
}
/**
@@ -864,7 +864,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testStringSetMessageKeyFail()
{
$arr = new MapField(GPBType::STRING, GPBType::STRING);
- $arr[new TestMessage_Sub()] = 'abc';
+ $arr[new Sub()] = 'abc';
}
/**
@@ -873,7 +873,7 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
public function testStringSetMessageValueFail()
{
$arr = new MapField(GPBType::STRING, GPBType::STRING);
- $arr['abc'] = new TestMessage_Sub();
+ $arr['abc'] = new Sub();
}
/**
@@ -903,13 +903,13 @@ class UndefinedTest extends PHPUnit_Framework_TestCase
{
$arr =
new MapField(GPBType::INT32, GPBType::MESSAGE, TestMessage::class);
- $arr[0] = new TestMessage_Sub();
+ $arr[0] = new Sub();
}
/**
* @expectedException PHPUnit_Framework_Error
*/
- public function testMessageSetNullFail()
+ public function testMessageSetNullFailMap()
{
$arr =
new MapField(GPBType::INT32, GPBType::MESSAGE, TestMessage::class);
diff --git a/php/tests/well_known_test.php b/php/tests/well_known_test.php
index a7760685..1e8c4f42 100644
--- a/php/tests/well_known_test.php
+++ b/php/tests/well_known_test.php
@@ -14,8 +14,8 @@ use Google\Protobuf\Enum;
use Google\Protobuf\EnumValue;
use Google\Protobuf\Field;
use Google\Protobuf\FieldMask;
-use Google\Protobuf\Field_Cardinality;
-use Google\Protobuf\Field_Kind;
+use Google\Protobuf\Field\Cardinality;
+use Google\Protobuf\Field\Kind;
use Google\Protobuf\FloatValue;
use Google\Protobuf\GPBEmpty;
use Google\Protobuf\Int32Value;
@@ -206,11 +206,11 @@ class WellKnownTest extends TestBase {
{
$m = new Field();
- $m->setKind(Field_Kind::TYPE_DOUBLE);
- $this->assertSame(Field_Kind::TYPE_DOUBLE, $m->getKind());
+ $m->setKind(Kind::TYPE_DOUBLE);
+ $this->assertSame(Kind::TYPE_DOUBLE, $m->getKind());
- $m->setCardinality(Field_Cardinality::CARDINALITY_OPTIONAL);
- $this->assertSame(Field_Cardinality::CARDINALITY_OPTIONAL, $m->getCardinality());
+ $m->setCardinality(Cardinality::CARDINALITY_OPTIONAL);
+ $this->assertSame(Cardinality::CARDINALITY_OPTIONAL, $m->getCardinality());
$m->setNumber(1);
$this->assertSame(1, $m->getNumber());