php-parser/test/PhpParser/Builder/ParamTest.php

124 lines
3.2 KiB
PHP
Raw Normal View History

2012-03-11 00:06:02 +01:00
<?php
namespace PhpParser\Builder;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Scalar;
class ParamTest extends \PHPUnit_Framework_TestCase
2012-03-11 00:06:02 +01:00
{
public function createParamBuilder($name) {
return new Param($name);
2012-03-11 00:06:02 +01:00
}
/**
* @dataProvider provideTestDefaultValues
*/
public function testDefaultValues($value, $expectedValueNode) {
$node = $this->createParamBuilder('test')
->setDefault($value)
->getNode()
;
$this->assertEquals($expectedValueNode, $node->default);
}
public function provideTestDefaultValues() {
return array(
array(
null,
new Expr\ConstFetch(new Node\Name('null'))
2012-03-11 00:06:02 +01:00
),
array(
true,
new Expr\ConstFetch(new Node\Name('true'))
2012-03-11 00:06:02 +01:00
),
array(
false,
new Expr\ConstFetch(new Node\Name('false'))
2012-03-11 00:06:02 +01:00
),
array(
31415,
new Scalar\LNumber(31415)
2012-03-11 00:06:02 +01:00
),
array(
3.1415,
new Scalar\DNumber(3.1415)
2012-03-11 00:06:02 +01:00
),
array(
'Hallo World',
new Scalar\String('Hallo World')
2012-03-11 00:06:02 +01:00
),
array(
array(1, 2, 3),
new Expr\Array_(array(
new Expr\ArrayItem(new Scalar\LNumber(1)),
new Expr\ArrayItem(new Scalar\LNumber(2)),
new Expr\ArrayItem(new Scalar\LNumber(3)),
))
),
array(
array('foo' => 'bar', 'bar' => 'foo'),
new Expr\Array_(array(
new Expr\ArrayItem(
new Scalar\String('bar'),
new Scalar\String('foo')
),
new Expr\ArrayItem(
new Scalar\String('foo'),
new Scalar\String('bar')
),
))
),
2012-03-11 00:06:02 +01:00
array(
new Scalar\MagicConst\Dir,
new Scalar\MagicConst\Dir
2012-03-11 00:06:02 +01:00
)
);
}
public function testTypeHints() {
$node = $this->createParamBuilder('test')
->setTypeHint('array')
->getNode()
;
$this->assertEquals(
new Node\Param('test', null, 'array'),
2012-03-11 00:06:02 +01:00
$node
);
$node = $this->createParamBuilder('test')
->setTypeHint('callable')
->getNode()
;
$this->assertEquals(
new Node\Param('test', null, 'callable'),
2012-03-11 00:06:02 +01:00
$node
);
$node = $this->createParamBuilder('test')
->setTypeHint('Some\Class')
->getNode()
;
$this->assertEquals(
new Node\Param('test', null, new Node\Name('Some\Class')),
2012-03-11 00:06:02 +01:00
$node
);
}
public function testByRef() {
$node = $this->createParamBuilder('test')
->makeByRef()
->getNode()
;
$this->assertEquals(
new Node\Param('test', null, null, true),
2012-03-11 00:06:02 +01:00
$node
);
}
}