protobuf/php/tests/generated_phpdoc_test.php
Brent Shaffer 6737954661 PHP namespaces for nested messages and enums (#4536)
* uses namespaces for nested messages and enums

* fixes namespaces for PHP dist

* fixes namespace for Descriptors, adds Cardinality and Kind

* fixes nested namespaces for reserved words and adds tests

* adds tests and generator fix for php class prefixes

* fixes escaping of protobuf packages, enum comments, misc others

* nice refactor of generated code

* adds class files for backwards compatibility

* simplifies code with templates

* adds compatibility files to makefile

* cleanup of generator and fixes nested namespace bug

* regenerates proto types

* remove internal BC classes

* adds deprecated warning, adds methods back

* simplifies if statement

* fixes dist files

* addresses review comments

* adds back TYPE_URL_PREFIX constant

* adds @deprecated to old nested class files

* skips tests which require a separate process when protobuf.so is enabled

* Adds tests for legacy nested classes that do not require separate processes to test

* uses legacy names for GPBUtil message check

* adds block for IDE @deprecated message

* Namespace for nested message/enum in c extension

* Remove unused code
2018-05-24 13:39:41 -07:00

346 lines
11 KiB
PHP

<?php
require_once('generated/NoNamespaceEnum.php');
require_once('generated/NoNamespaceMessage.php');
require_once('test_base.php');
require_once('test_util.php');
use Foo\TestMessage;
class GeneratedPhpdocTest extends TestBase
{
public function testPhpDocForClass()
{
$class = new ReflectionClass('Foo\TestMessage');
$doc = $class->getDocComment();
$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
*/
public function testPhpDocForIntGetters($methods, $expectedDoc)
{
$class = new ReflectionClass('Foo\TestMessage');
foreach ($methods as $method) {
$doc = $class->getMethod($method)->getDocComment();
$this->assertContains($expectedDoc, $doc);
}
}
public function providePhpDocForGettersAndSetters()
{
return [
[
[
'setOptionalInt32',
'setOptionalUint32',
'setOptionalSint32',
'setOptionalFixed32',
'setOptionalSfixed32',
'setOneofInt32',
'setOneofUint32',
'setOneofSint32',
'setOneofFixed32',
'setOneofSfixed32',
'setOptionalEnum',
'setOptionalNoNamespaceEnum',
'setOptionalNestedEnum',
'setOneofEnum'
],
'@param int $var'
],
[
[
'setOptionalInt64',
'setOptionalUint64',
'setOptionalSint64',
'setOptionalFixed64',
'setOptionalSfixed64',
'setOneofInt64',
'setOneofUint64',
'setOneofSint64',
'setOneofFixed64',
'setOneofSfixed64',
],
'@param int|string $var'
],
[
[
'getOptionalInt32',
'getOptionalUint32',
'getOptionalSint32',
'getOptionalFixed32',
'getOptionalSfixed32',
'getOneofInt32',
'getOneofUint32',
'getOneofSint32',
'getOneofFixed32',
'getOneofSfixed32',
'getOptionalEnum',
'getOptionalNoNamespaceEnum',
'getOptionalNestedEnum',
'getOneofEnum',
],
'@return int'
],
[
[
'setOptionalInt64',
'setOptionalUint64',
'setOptionalSint64',
'setOptionalFixed64',
'setOptionalSfixed64',
'setOneofInt64',
'setOneofUint64',
'setOneofSint64',
'setOneofFixed64',
'setOneofSfixed64',
],
'@param int|string $var'
],
[
[
'getRepeatedInt32',
'getRepeatedInt64',
'getRepeatedUint32',
'getRepeatedUint64',
'getRepeatedSint32',
'getRepeatedSint64',
'getRepeatedFixed32',
'getRepeatedFixed64',
'getRepeatedSfixed32',
'getRepeatedSfixed64',
'getRepeatedFloat',
'getRepeatedDouble',
'getRepeatedBool',
'getRepeatedString',
'getRepeatedBytes',
'getRepeatedEnum',
'getRepeatedMessage',
'getRepeatedRecursive',
'getRepeatedNoNamespaceMessage',
'getRepeatedNoNamespaceEnum',
],
'@return \Google\Protobuf\Internal\RepeatedField'
],
[
[
'getMapInt32Int32',
'getMapInt64Int64',
'getMapUint32Uint32',
'getMapUint64Uint64',
'getMapSint32Sint32',
'getMapSint64Sint64',
'getMapFixed32Fixed32',
'getMapFixed64Fixed64',
'getMapSfixed32Sfixed32',
'getMapSfixed64Sfixed64',
'getMapInt32Float',
'getMapInt32Double',
'getMapBoolBool',
'getMapStringString',
'getMapInt32Bytes',
'getMapInt32Enum',
'getMapInt32Message',
'getMapRecursive',
],
'@return \Google\Protobuf\Internal\MapField'
],
[
[
'setRepeatedInt32',
'setRepeatedUint32',
'setRepeatedSint32',
'setRepeatedFixed32',
'setRepeatedSfixed32',
'setRepeatedEnum',
'setRepeatedNoNamespaceEnum',
],
'@param int[]|\Google\Protobuf\Internal\RepeatedField $var'
],
[
[
'setRepeatedInt64',
'setRepeatedUint64',
'setRepeatedSint64',
'setRepeatedFixed64',
'setRepeatedSfixed64',
],
'@param int[]|string[]|\Google\Protobuf\Internal\RepeatedField $var'
],
[
[
'setRepeatedFloat',
'setRepeatedDouble',
],
'@param float[]|\Google\Protobuf\Internal\RepeatedField $var'
],
[
[
'setRepeatedBool',
],
'@param bool[]|\Google\Protobuf\Internal\RepeatedField $var'
],
[
[
'setRepeatedString',
'setRepeatedBytes',
],
'@param string[]|\Google\Protobuf\Internal\RepeatedField $var'
],
[
[
'setRepeatedMessage',
],
'@param \Foo\TestMessage\Sub[]|\Google\Protobuf\Internal\RepeatedField $var'
],
[
[
'setRepeatedRecursive',
],
'@param \Foo\TestMessage[]|\Google\Protobuf\Internal\RepeatedField $var'
],
[
[
'setRepeatedNoNamespaceMessage',
],
'@param \NoNamespaceMessage[]|\Google\Protobuf\Internal\RepeatedField $var'
],
[
[
'setMapInt32Int32',
'setMapInt64Int64',
'setMapUint32Uint32',
'setMapUint64Uint64',
'setMapSint32Sint32',
'setMapSint64Sint64',
'setMapFixed32Fixed32',
'setMapFixed64Fixed64',
'setMapSfixed32Sfixed32',
'setMapSfixed64Sfixed64',
'setMapInt32Float',
'setMapInt32Double',
'setMapBoolBool',
'setMapStringString',
'setMapInt32Bytes',
'setMapInt32Enum',
'setMapInt32Message',
'setMapRecursive',
],
'@param array|\Google\Protobuf\Internal\MapField $var'
],
[
[
'getOptionalFloat',
'getOptionalDouble',
'getOneofDouble',
'getOneofFloat',
],
'@return float'
],
[
[
'setOptionalFloat',
'setOptionalDouble',
'setOneofDouble',
'setOneofFloat',
],
'@param float $var'
],
[
[
'getOptionalBool',
'getOneofBool',
],
'@return bool'],
[
[
'setOptionalBool',
'setOneofBool',
],
'@param bool $var'
],
[
[
'getOptionalString',
'getOptionalBytes',
'getOneofString',
'getOneofBytes',
'getMyOneof',
],
'@return string'
],
[
[
'setOptionalString',
'setOptionalBytes',
'setOneofString',
'setOneofBytes',
],
'@param string $var'
],
[
[
'getOptionalMessage',
'getOneofMessage'
],
'@return \Foo\TestMessage\Sub'
],
[
[
'setOptionalMessage',
'setOneofMessage'
],
'@param \Foo\TestMessage\Sub $var'
],
[
[
'getOptionalIncludedMessage'
],
'@return \Bar\TestInclude'
],
[
[
'setOptionalIncludedMessage'
],
'@param \Bar\TestInclude $var'
],
[
[
'getRecursive'
],
'@return \Foo\TestMessage'
],
[
[
'setRecursive'
],
'@param \Foo\TestMessage $var'
],
[
[
'getOptionalNoNamespaceMessage'
],
'@return \NoNamespaceMessage'
],
[
[
'setOptionalNoNamespaceMessage'
],
'@param \NoNamespaceMessage $var'
],
];
}
}