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