<?php
declare(strict_types=1);
namespace WsdlToPhp\PhpGenerator\Tests\Element;
use InvalidArgumentException;
use TypeError;
use WsdlToPhp\PhpGenerator\Element\PhpAnnotationBlock;
use WsdlToPhp\PhpGenerator\Element\PhpConstant;
use WsdlToPhp\PhpGenerator\Element\PhpInterface;
use WsdlToPhp\PhpGenerator\Element\PhpMethod;
use WsdlToPhp\PhpGenerator\Element\PhpProperty;
use WsdlToPhp\PhpGenerator\Tests\TestCase;
/**
* @internal
* @coversDefaultClass
*/
class PhpInterfaceTest extends TestCase
{
public function testSimpleInterface()
{
$interface = new PhpInterface('Foo');
$this->assertSame('interface Foo', $interface->getPhpDeclaration());
}
public function testSimpleInterfaceNotAbstract()
{
$interface = new PhpInterface('Foo', true);
$this->assertSame('interface Foo', $interface->getPhpDeclaration());
}
public function testSimpleInterfaceExtendsStringBar()
{
$interface = new PhpInterface('Foo', false, 'Bar');
$this->assertSame('interface Foo', $interface->getPhpDeclaration());
}
public function testSimpleInterfaceExtendsBarImplementsStringDemo()
{
$interface = new PhpInterface('Foo', false, 'Bar', [
'Demo',
]);
$this->assertSame('interface Foo extends Demo', $interface->getPhpDeclaration());
}
public function testAddChildWithException()
{
$this->expectException(InvalidArgumentException::class);
$interface = new PhpInterface('Foo');
$interface->addChild(new PhpProperty('Bar'));
}
public function testAddChildMethod()
{
$interface = new PhpInterface('Foo');
$interface->addChild(new PhpMethod('Bar'));
$this->assertCount(1, $interface->getChildren());
}
public function testAddChildConstant()
{
$interface = new PhpInterface('Foo');
$interface->addChild(new PhpConstant('Bar'));
$this->assertCount(1, $interface->getChildren());
}
public function testAddChildAnnotationBlock()
{
$interface = new PhpInterface('Foo');
$interface->addChild(new PhpAnnotationBlock([
'Bar',
]));
$this->assertCount(1, $interface->getChildren());
}
public function testAddChildString()
{
$interface = new PhpInterface('Foo');
$interface->addChild("\n");
$this->assertCount(1, $interface->getChildren());
}
public function testSimpleIntefaceEmptyPublicMethodToString()
{
$interface = new PhpInterface('Foo');
$interface->addChild(new PhpMethod('bar'));
$this->assertSame("interface Foo\n{\n public function bar();\n}", $interface->toString());
}
public function testExceptionMessageOnName()
{
$this->expectException(TypeError::class);
new PhpInterface(0);
}
}
|