| <?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); | |
| } | |
| } | |
| } |