Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.5 KiB
110 lines
3.5 KiB
<?php |
|
|
|
require_once('test_base.php'); |
|
require_once('test_util.php'); |
|
|
|
use Google\Protobuf\Internal\RepeatedField; |
|
use Google\Protobuf\Internal\MapField; |
|
use Google\Protobuf\Internal\GPBType; |
|
use Foo\Greeter; |
|
use Foo\HelloRequest; |
|
use Foo\HelloReply; |
|
|
|
class GeneratedServiceTest extends TestBase |
|
{ |
|
/** |
|
* @var \ReflectionClass |
|
*/ |
|
private $serviceClass; |
|
|
|
/** |
|
* @var \ReflectionClass |
|
*/ |
|
private $namespacedServiceClass; |
|
|
|
/** |
|
* @var array |
|
*/ |
|
private $methodNames = [ |
|
'sayHello', |
|
'sayHelloAgain' |
|
]; |
|
|
|
public function setUp() |
|
{ |
|
parent::setUp(); |
|
|
|
$this->serviceClass = new ReflectionClass('Foo\GreeterInterface'); |
|
|
|
$this->namespacedServiceClass = new ReflectionClass('Bar\OtherGreeterInterface'); |
|
} |
|
|
|
public function testIsInterface() |
|
{ |
|
$this->assertTrue($this->serviceClass->isInterface()); |
|
} |
|
|
|
public function testPhpDocForClass() |
|
{ |
|
$this->assertContains('foo.Greeter', $this->serviceClass->getDocComment()); |
|
} |
|
|
|
public function testPhpDocForNamespacedClass() |
|
{ |
|
$this->assertContains('foo.OtherGreeter', $this->namespacedServiceClass->getDocComment()); |
|
} |
|
|
|
public function testServiceMethodsAreGenerated() |
|
{ |
|
$this->assertCount(count($this->methodNames), $this->serviceClass->getMethods()); |
|
foreach ($this->methodNames as $methodName) { |
|
$this->assertTrue($this->serviceClass->hasMethod($methodName)); |
|
} |
|
} |
|
|
|
public function testPhpDocForServiceMethod() |
|
{ |
|
foreach ($this->methodNames as $methodName) { |
|
$docComment = $this->serviceClass->getMethod($methodName)->getDocComment(); |
|
$this->assertContains($methodName, $docComment); |
|
$this->assertContains('@param \Foo\HelloRequest $request', $docComment); |
|
$this->assertContains('@return \Foo\HelloReply', $docComment); |
|
} |
|
} |
|
|
|
public function testPhpDocForServiceMethodInNamespacedClass() |
|
{ |
|
foreach ($this->methodNames as $methodName) { |
|
$docComment = $this->namespacedServiceClass->getMethod($methodName)->getDocComment(); |
|
$this->assertContains($methodName, $docComment); |
|
$this->assertContains('@param \Foo\HelloRequest $request', $docComment); |
|
$this->assertContains('@return \Foo\HelloReply', $docComment); |
|
} |
|
} |
|
|
|
public function testParamForServiceMethod() |
|
{ |
|
foreach ($this->methodNames as $methodName) { |
|
$method = $this->serviceClass->getMethod($methodName); |
|
$this->assertCount(1, $method->getParameters()); |
|
$param = $method->getParameters()[0]; |
|
$this->assertFalse($param->isOptional()); |
|
$this->assertSame('request', $param->getName()); |
|
// ReflectionParameter::getType only exists in PHP 7+, so get the type from __toString |
|
$this->assertContains('Foo\HelloRequest $request', (string) $param); |
|
} |
|
} |
|
|
|
public function testParamForServiceMethodInNamespacedClass() |
|
{ |
|
foreach ($this->methodNames as $methodName) { |
|
$method = $this->serviceClass->getMethod($methodName); |
|
$this->assertCount(1, $method->getParameters()); |
|
$param = $method->getParameters()[0]; |
|
$this->assertFalse($param->isOptional()); |
|
$this->assertSame('request', $param->getName()); |
|
// ReflectionParameter::getType only exists in PHP 7+, so get the type from __toString |
|
$this->assertContains('Foo\HelloRequest $request', (string) $param); |
|
} |
|
} |
|
}
|
|
|