<?php
declare(strict_types=1);
namespace WsdlToPhp\PhpGenerator\Tests\Element;
use InvalidArgumentException;
use TypeError;
use WsdlToPhp\PhpGenerator\Element\PhpClass;
use WsdlToPhp\PhpGenerator\Element\PhpConstant;
use WsdlToPhp\PhpGenerator\Element\PhpVariable;
use WsdlToPhp\PhpGenerator\Tests\TestCase;
/**
* @internal
* @coversDefaultClass
*/
class PhpConstantTest extends TestCase
{
public function testGetPhpDeclarationNullValue()
{
$constant = new PhpConstant('foo');
$this->assertSame('define(\'foo\', null);', $constant->getPhpDeclaration());
}
public function testGetPhpDeclarationTrueValue()
{
$constant = new PhpConstant('foo', true);
$this->assertSame('define(\'foo\', true);', $constant->getPhpDeclaration());
}
public function testGetPhpDeclarationFalseValue()
{
$constant = new PhpConstant('foo', false);
$this->assertSame('define(\'foo\', false);', $constant->getPhpDeclaration());
}
public function testGetPhpDeclarationStringOneValue()
{
$constant = new PhpConstant('foo', '1');
$this->assertSame('define(\'foo\', \'1\');', $constant->getPhpDeclaration());
}
public function testGetPhpDeclarationNumberOneValue()
{
$constant = new PhpConstant('foo', 1);
$this->assertSame('define(\'foo\', 1);', $constant->getPhpDeclaration());
}
public function testGetPhpDeclarationParenthesisValue()
{
$constant = new PhpConstant('foo', 'NCSA Common (Apache default)');
$this->assertSame('define(\'foo\', \'NCSA Common (Apache default)\');', $constant->getPhpDeclaration());
}
public function testExceptionForNonScalerValue()
{
$this->expectException(InvalidArgumentException::class);
new PhpConstant('Foo', []);
}
public function testGetPhpDeclarationNullValueForClass()
{
$constant = new PhpConstant('foo', null, new PhpClass('bar'));
$this->assertSame('const FOO = null;', $constant->getPhpDeclaration());
}
public function testGetPhpDeclarationParenthesisValueForClass()
{
$constant = new PhpConstant('foo', 'NCSA Common (Apache default)', new PhpClass('bar'));
$this->assertSame('const FOO = \'NCSA Common (Apache default)\';', $constant->getPhpDeclaration());
}
public function testGetPhpDeclarationTrueValueForClass()
{
$constant = new PhpConstant('foo', true, new PhpClass('Bar'));
$this->assertSame('const FOO = true;', $constant->getPhpDeclaration());
}
public function testGetPhpDeclarationFalseValueForClass()
{
$constant = new PhpConstant('foo', false, new PhpClass('Bar'));
$this->assertSame('const FOO = false;', $constant->getPhpDeclaration());
}
public function testGetPhpDeclarationStringOneValueForClass()
{
$constant = new PhpConstant('foo', '1', new PhpClass('Bar'));
$this->assertSame('const FOO = \'1\';', $constant->getPhpDeclaration());
}
public function testGetPhpDeclarationNumberOneValueForClass()
{
$constant = new PhpConstant('foo', 1, new PhpClass('Bar'));
$this->assertSame('const FOO = 1;', $constant->getPhpDeclaration());
}
public function testAddChild()
{
$this->expectException(InvalidArgumentException::class);
$constant = new PhpVariable('Foo', 'bar');
$constant->addChild(new PhpVariable('Bar', 'foo'));
}
public function testToStringNullValue()
{
$constant = new PhpConstant('foo');
$this->assertSame('define(\'foo\', null);', $constant->toString());
}
public function testToStringNullValueMatchesStringCasting()
{
$constant = new PhpConstant('foo');
$this->assertSame((string) $constant, $constant->toString());
}
public function testToStringNullValueForClass()
{
$constant = new PhpConstant('foo', null, new PhpClass('bar'));
$this->assertSame('const FOO = null;', $constant->toString());
}
public function testGetChildrenTypes()
{
$constant = new PhpConstant('foo', null, new PhpClass('bar'));
$this->assertSame([], $constant->getChildrenTypes());
}
public function testExceptionMessageOnName()
{
$this->expectException(TypeError::class);
new PhpConstant(0);
}
public function testExceptionMessageOnValue()
{
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage('Value of type "object" is not a valid scalar value for PhpConstant object');
new PhpConstant('Foo', new \stdClass());
}
}
|