<?php 
 
declare(strict_types=1); 
 
namespace WsdlToPhp\PhpGenerator\Tests\Element; 
 
use InvalidArgumentException; 
use TypeError; 
use WsdlToPhp\PhpGenerator\Element\PhpVariable; 
use WsdlToPhp\PhpGenerator\Tests\TestCase; 
 
/** 
 * @internal 
 * @coversDefaultClass 
 */ 
class PhpVariableTest extends TestCase 
{ 
    public function testGetPhpDeclarationNullValue() 
    { 
        $variable = new PhpVariable('foo'); 
 
        $this->assertSame('$foo = null;', $variable->getPhpDeclaration()); 
    } 
 
    public function testGetPhpDeclarationTrueValue() 
    { 
        $variable = new PhpVariable('foo', true); 
 
        $this->assertSame('$foo = true;', $variable->getPhpDeclaration()); 
    } 
 
    public function testGetPhpDeclarationFalseValue() 
    { 
        $variable = new PhpVariable('foo', false); 
 
        $this->assertSame('$foo = false;', $variable->getPhpDeclaration()); 
    } 
 
    public function testGetPhpDeclarationStringOneValue() 
    { 
        $variable = new PhpVariable('foo', '1'); 
 
        $this->assertSame('$foo = \'1\';', $variable->getPhpDeclaration()); 
    } 
 
    public function testGetPhpDeclarationNumberOneValue() 
    { 
        $variable = new PhpVariable('foo', 1); 
 
        $this->assertSame('$foo = 1;', $variable->getPhpDeclaration()); 
    } 
 
    public function testGetPhpDeclarationEmptyArrayValue() 
    { 
        $variable = new PhpVariable('foo', []); 
 
        $this->assertSame('$foo = [];', $variable->getPhpDeclaration()); 
    } 
 
    public function testGetPhpDeclarationArray() 
    { 
        $variable = new PhpVariable('foo', [ 
            '0', 
            1, 
        ]); 
 
        $this->assertSame("\$foo = [\n  0 => '0',\n  1 => 1,\n];", $variable->getPhpDeclaration()); 
    } 
 
    public function testGetPhpDeclarationNewInstance() 
    { 
        $variable = new PhpVariable('foo', 'new DOMDocument(\'1.0\', \'utf-8\')'); 
 
        $this->assertSame("\$foo = new DOMDocument('1.0', 'utf-8');", $variable->getPhpDeclaration()); 
    } 
 
    public function testGetPhpDeclarationFunctoin() 
    { 
        $variable = new PhpVariable('foo', 'is_array(1)'); 
 
        $this->assertSame('$foo = is_array(1);', $variable->getPhpDeclaration()); 
    } 
 
    public function testGetPhpDeclarationClassConstant() 
    { 
        $variable = new PhpVariable('foo', 'stdClass::BAR'); 
 
        $this->assertSame('$foo = stdClass::BAR;', $variable->getPhpDeclaration()); 
    } 
 
    public function testGetPhpDeclarationConstant() 
    { 
        $variable = new PhpVariable('foo', '::XML_ELEMENT_NODE'); 
 
        $this->assertSame('$foo = XML_ELEMENT_NODE;', $variable->getPhpDeclaration()); 
    } 
 
    public function testAddChild() 
    { 
        $this->expectException(InvalidArgumentException::class); 
 
        $variable = new PhpVariable('Foo', 'bar'); 
 
        $variable->addChild(new PhpVariable('Bar', 'foo')); 
    } 
 
    public function testToStringNullValue() 
    { 
        $variable = new PhpVariable('foo'); 
 
        $this->assertSame('$foo = null;', $variable->toString()); 
    } 
 
    public function testToStringMatchesStringCasting() 
    { 
        $variable = new PhpVariable('foo'); 
 
        $this->assertSame((string) $variable, $variable->toString()); 
    } 
 
    public function testToStringStringNewsValue() 
    { 
        $variable = new PhpVariable('foo', 'news'); 
 
        $this->assertSame('$foo = \'news\';', $variable->toString()); 
    } 
 
    public function testToStringFloatValue() 
    { 
        $variable = new PhpVariable('foo', 0.4); 
 
        $this->assertSame('$foo = 0.4;', $variable->toString()); 
    } 
 
    public function testCyrillic() 
    { 
        $variable = new PhpVariable('????????????????????', 0.4); 
 
        $this->assertSame('$???????????????????? = 0.4;', $variable->toString()); 
    } 
 
    public function test้() 
    { 
        $้ = 4; 
        $this->assertEquals(4, $้); 
    } 
 
    public function testExceptionMessageOnName() 
    { 
        $this->expectException(TypeError::class); 
 
        new PhpVariable(0); 
    } 
} 
 
 |