| 
<?php
 declare(strict_types=1);
 
 namespace WsdlToPhp\PhpGenerator\Tests\Element;
 
 use InvalidArgumentException;
 use TypeError;
 use WsdlToPhp\PhpGenerator\Element\PhpAnnotationBlock;
 use WsdlToPhp\PhpGenerator\Element\PhpClass;
 use WsdlToPhp\PhpGenerator\Element\PhpConstant;
 use WsdlToPhp\PhpGenerator\Element\PhpDeclare;
 use WsdlToPhp\PhpGenerator\Element\PhpFile;
 use WsdlToPhp\PhpGenerator\Element\PhpFunction;
 use WsdlToPhp\PhpGenerator\Element\PhpMethod;
 use WsdlToPhp\PhpGenerator\Element\PhpVariable;
 use WsdlToPhp\PhpGenerator\Tests\TestCase;
 
 /**
 * @internal
 * @coversDefaultClass
 */
 class PhpFileTest extends TestCase
 {
 public function testException()
 {
 $this->expectException(InvalidArgumentException::class);
 
 $file = new PhpFile('foo');
 
 $file->addChild(new PhpMethod('Foo'));
 }
 
 public function testVariableToString()
 {
 $file = new PhpFile('foo');
 
 $file->addChild(new PhpVariable('foo', 1));
 
 $this->assertSame("<?php\n\$foo = 1;\n", $file->toString());
 }
 
 public function testConstantToString()
 {
 $file = new PhpFile('foo');
 
 $file->addChild(new PhpConstant('foo', 1));
 
 $this->assertSame("<?php\ndefine('foo', 1);\n", $file->toString());
 }
 
 public function testFunctionToString()
 {
 $file = new PhpFile('foo');
 
 $file->addChild(new PhpFunction('foo', [
 'foo',
 'sample',
 'demo',
 ]));
 
 $this->assertSame("<?php\nfunction foo(\$foo, \$sample, \$demo)\n{\n}\n", $file->toString());
 }
 
 public function testAnnotationBlockToString()
 {
 $file = new PhpFile('foo');
 
 $file->addChild(new PhpAnnotationBlock([
 'date is the key',
 'time is the core key',
 ]));
 
 $this->assertSame("<?php\n/**\n * date is the key\n * time is the core key\n */\n", $file->toString());
 }
 
 public function testAddDeclareToString()
 {
 $file = new PhpFile('foo');
 
 $file->addChild(new PhpDeclare(PhpDeclare::DIRECTIVE_STRICT_TYPES, 1));
 
 $this->assertSame("<?php\ndeclare(strict_types=1);\n", $file->toString());
 }
 
 public function testAnnotationClassMethodBlockToString()
 {
 $file = new PhpFile('foo');
 
 $file->addChild(new PhpAnnotationBlock([
 'date is the key',
 'time is the core key',
 ]));
 
 $class = new PhpClass('Foo');
 $class->addChild(new PhpMethod('Bar'));
 $file->addChild($class);
 
 $this->assertSame("<?php\n/**\n * date is the key\n * time is the core key\n */\nclass Foo\n{\n    public function Bar()\n    {\n    }\n}\n", $file->toString());
 }
 
 public function testExceptionMessageOnName()
 {
 $this->expectException(TypeError::class);
 
 new PhpFile(0);
 }
 }
 
 |