| 
<?php
 declare(strict_types=1);
 
 namespace WsdlToPhp\PhpGenerator\Tests\Element;
 
 use InvalidArgumentException;
 use TypeError;
 use WsdlToPhp\PhpGenerator\Element\PhpFunctionParameter;
 use WsdlToPhp\PhpGenerator\Element\PhpMethod;
 use WsdlToPhp\PhpGenerator\Tests\TestCase;
 
 /**
 * @internal
 * @coversDefaultClass
 */
 class PhpFunctionParameterTest extends TestCase
 {
 public function testSetType()
 {
 $this->expectException(InvalidArgumentException::class);
 
 $functionParameter = new PhpFunctionParameter('foo', true);
 
 $functionParameter->setType(new PhpMethod('Bar'));
 }
 
 public function testSetTypeOk()
 {
 $functionParameter = new PhpFunctionParameter('foo', true);
 
 $this->assertInstanceOf(PhpFunctionParameter::class, $functionParameter->setType('string'));
 }
 
 public function testTypeIsValid()
 {
 $this->assertTrue(PhpFunctionParameter::typeIsValid('string'));
 }
 
 public function testNullableTypeIsValid()
 {
 $this->assertTrue(PhpFunctionParameter::typeIsValid('?string'));
 }
 
 public function testTypeIsValidAccentuated()
 {
 $this->assertTrue(PhpFunctionParameter::typeIsValid('Partagé'));
 }
 
 public function testFloatValueForDeclaration()
 {
 $initialSerializePrecision = ini_get('serialize_precision');
 ini_set('serialize_precision', '2');
 
 $functionParameter = new PhpFunctionParameter('foo', 1.101, 'float');
 
 $this->assertSame('float $foo = 1.101', $functionParameter->toString());
 
 ini_set('serialize_precision', $initialSerializePrecision);
 }
 
 public function testSetTypeForDeclaration()
 {
 $functionParameter = new PhpFunctionParameter('foo', true, 'bool');
 
 $this->assertSame('bool $foo = true', $functionParameter->toString());
 }
 
 public function testToStringEmptyArrayValue()
 {
 $functionParameter = new PhpFunctionParameter('foo', [], 'array');
 
 $this->assertSame('array $foo = []', $functionParameter->toString());
 }
 
 public function testToStringWithNamespace()
 {
 $functionParameter = new PhpFunctionParameter('foo', null, 'My\Name\Space');
 
 $this->assertSame('My\Name\Space $foo = null', $functionParameter->toString());
 }
 
 public function testToStringWithNamespacedNullableParameter()
 {
 $functionParameter = new PhpFunctionParameter('foo', null, '?My\Name\Space');
 
 $this->assertSame('?My\Name\Space $foo = null', $functionParameter->toString());
 }
 
 public function testExceptionMessageOnName()
 {
 $this->expectException(TypeError::class);
 
 new PhpFunctionParameter(0);
 }
 }
 
 |