php-parser/test/PhpParser/NodeAbstractTest.php

99 lines
3.1 KiB
PHP
Raw Normal View History

2011-11-27 21:43:27 +01:00
<?php
namespace PhpParser;
class NodeAbstractTest extends \PHPUnit_Framework_TestCase
2011-11-27 21:43:27 +01:00
{
public function testConstruct() {
$attributes = array(
'startLine' => 10,
'comments' => array(
new Comment('// Comment' . "\n"),
new Comment\Doc('/** doc comment */'),
),
);
/** @var $node NodeAbstract */
2011-11-27 21:43:27 +01:00
$node = $this->getMockForAbstractClass(
'PhpParser\NodeAbstract',
2011-11-27 21:43:27 +01:00
array(
array(
'subNode' => 'value'
),
$attributes
2011-11-27 21:43:27 +01:00
),
'PhpParser_Node_Dummy'
2011-11-27 21:43:27 +01:00
);
2014-09-30 20:38:09 +02:00
$this->assertSame('Dummy', $node->getType());
$this->assertSame(array('subNode'), $node->getSubNodeNames());
$this->assertSame(10, $node->getLine());
$this->assertSame('/** doc comment */', $node->getDocComment()->getText());
$this->assertSame('value', $node->subNode);
2011-11-27 21:43:27 +01:00
$this->assertTrue(isset($node->subNode));
2014-09-30 20:38:09 +02:00
$this->assertSame($attributes, $node->getAttributes());
2011-11-27 21:43:27 +01:00
return $node;
}
/**
* @depends testConstruct
*/
public function testGetDocComment(Node $node) {
2014-09-30 20:38:09 +02:00
$this->assertSame('/** doc comment */', $node->getDocComment()->getText());
array_pop($node->getAttribute('comments')); // remove doc comment
$this->assertNull($node->getDocComment());
array_pop($node->getAttribute('comments')); // remove comment
$this->assertNull($node->getDocComment());
}
2011-11-27 21:43:27 +01:00
/**
* @depends testConstruct
*/
public function testChange(Node $node) {
// change of line
2011-11-27 21:43:27 +01:00
$node->setLine(15);
2014-09-30 20:38:09 +02:00
$this->assertSame(15, $node->getLine());
2011-11-27 21:43:27 +01:00
// direct modification
2011-11-27 21:43:27 +01:00
$node->subNode = 'newValue';
2014-09-30 20:38:09 +02:00
$this->assertSame('newValue', $node->subNode);
2011-11-27 21:43:27 +01:00
// indirect modification
$subNode =& $node->subNode;
$subNode = 'newNewValue';
2014-09-30 20:38:09 +02:00
$this->assertSame('newNewValue', $node->subNode);
// removal
2011-11-27 21:43:27 +01:00
unset($node->subNode);
$this->assertFalse(isset($node->subNode));
}
public function testAttributes() {
/** @var $node Node */
$node = $this->getMockForAbstractClass('PhpParser\NodeAbstract');
$this->assertEmpty($node->getAttributes());
$node->setAttribute('key', 'value');
$this->assertTrue($node->hasAttribute('key'));
2014-09-30 20:38:09 +02:00
$this->assertSame('value', $node->getAttribute('key'));
$this->assertFalse($node->hasAttribute('doesNotExist'));
$this->assertNull($node->getAttribute('doesNotExist'));
2014-09-30 20:38:09 +02:00
$this->assertSame('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'));
2014-09-30 20:38:09 +02:00
$this->assertSame(
array(
'key' => 'value',
'null' => null,
),
$node->getAttributes()
);
}
2011-11-27 21:43:27 +01:00
}