mirror of
https://github.com/phabelio/PHP-Parser.git
synced 2024-12-14 10:08:36 +01:00
a824a2aba7
getDocComment() now returns the last comment (given that it is a doc comment). setDocComment() no longer exists, as it doesn't make sense with the comment objects anymore. getAttribute() now returns by reference, so it also works in reference contexts.
96 lines
3.1 KiB
PHP
96 lines
3.1 KiB
PHP
<?php
|
|
|
|
class PHPParser_Tests_NodeAbstractTest extends PHPUnit_Framework_TestCase
|
|
{
|
|
public function testConstruct() {
|
|
$attributes = array(
|
|
'startLine' => 10,
|
|
'comments' => array(
|
|
new PHPParser_Comment('// Comment' . "\n"),
|
|
new PHPParser_Comment_Doc('/** doc comment */'),
|
|
),
|
|
);
|
|
|
|
$node = $this->getMockForAbstractClass(
|
|
'PHPParser_NodeAbstract',
|
|
array(
|
|
array(
|
|
'subNode' => 'value'
|
|
),
|
|
$attributes
|
|
),
|
|
'PHPParser_Node_Dummy'
|
|
);
|
|
|
|
$this->assertEquals('Dummy', $node->getType());
|
|
$this->assertEquals(array('subNode'), $node->getSubNodeNames());
|
|
$this->assertEquals(10, $node->getLine());
|
|
$this->assertEquals('/** doc comment */', $node->getDocComment());
|
|
$this->assertEquals('value', $node->subNode);
|
|
$this->assertTrue(isset($node->subNode));
|
|
$this->assertEquals($attributes, $node->getAttributes());
|
|
|
|
return $node;
|
|
}
|
|
|
|
/**
|
|
* @depends testConstruct
|
|
*/
|
|
public function testGetDocComment(PHPParser_Node $node) {
|
|
$this->assertEquals('/** doc comment */', $node->getDocComment());
|
|
array_pop($node->getAttribute('comments')); // remove doc comment
|
|
$this->assertNull($node->getDocComment());
|
|
array_pop($node->getAttribute('comments')); // remove comment
|
|
$this->assertNull($node->getDocComment());
|
|
}
|
|
|
|
/**
|
|
* @depends testConstruct
|
|
*/
|
|
public function testChange(PHPParser_Node $node) {
|
|
// change of line
|
|
$node->setLine(15);
|
|
$this->assertEquals(15, $node->getLine());
|
|
|
|
// direct modification
|
|
$node->subNode = 'newValue';
|
|
$this->assertEquals('newValue', $node->subNode);
|
|
|
|
// indirect modification
|
|
$subNode =& $node->subNode;
|
|
$subNode = 'newNewValue';
|
|
$this->assertEquals('newNewValue', $node->subNode);
|
|
|
|
// removal
|
|
unset($node->subNode);
|
|
$this->assertFalse(isset($node->subNode));
|
|
}
|
|
|
|
public function testAttributes() {
|
|
/** @var $node PHPParser_Node */
|
|
$node = $this->getMockForAbstractClass('PHPParser_NodeAbstract');
|
|
|
|
$this->assertEmpty($node->getAttributes());
|
|
|
|
$node->setAttribute('key', 'value');
|
|
$this->assertTrue($node->hasAttribute('key'));
|
|
$this->assertEquals('value', $node->getAttribute('key'));
|
|
|
|
$this->assertFalse($node->hasAttribute('doesNotExist'));
|
|
$this->assertNull($node->getAttribute('doesNotExist'));
|
|
$this->assertEquals('default', $node->getAttribute('doesNotExist', 'default'));
|
|
|
|
$node->setAttribute('null', null);
|
|
$this->assertTrue($node->hasAttribute('null'));
|
|
$this->assertNull($node->getAttribute('null'));
|
|
$this->assertNull($node->getAttribute('null', 'default'));
|
|
|
|
$this->assertEquals(
|
|
array(
|
|
'key' => 'value',
|
|
'null' => null,
|
|
),
|
|
$node->getAttributes()
|
|
);
|
|
}
|
|
} |