Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
83.33% |
10 / 12 |
CRAP | |
90.00% |
27 / 30 |
| Tree | |
0.00% |
0 / 1 |
|
83.33% |
10 / 12 |
16.26 | |
90.00% |
27 / 30 |
| __construct($nodeName = null) | |
100.00% |
1 / 1 |
2 | |
100.00% |
5 / 5 |
|||
| _getNewName() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| append(&$child, $nodeName = null) | |
0.00% |
0 / 1 |
4.07 | |
83.33% |
10 / 12 |
|||
| nodes() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getNodeByName($nodeName) | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| getNode($nodeNbr) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getParent() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| rewind() | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| current() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| key() | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
| next() | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| valid() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| <?php | |
| /** | |
| * | |
| */ | |
| namespace aae\adt { | |
| /** | |
| * @author Axel Ancona Esselmann | |
| * @package aae\adt | |
| */ | |
| class Tree implements \Iterator { | |
| protected $_nodes = array(); | |
| public $nodeName = ""; | |
| protected $_parent = null; | |
| protected static $_s_instanceCounter = 0; | |
| public function __construct($nodeName = null) { | |
| if (is_null($nodeName)) { | |
| $this->nodeName = self::_getNewName(); | |
| } else { | |
| $this->nodeName = $nodeName; | |
| } | |
| } | |
| protected function _getNewName() { | |
| return "node_".Tree::$_s_instanceCounter++; | |
| } | |
| public function append(&$child, $nodeName = null) { | |
| if (is_a($child, "aae\adt\Tree")) { | |
| if (!is_null($nodeName)) { | |
| $child->nodeName = $nodeName; | |
| } else { | |
| $nodeName = $child->nodeName; | |
| } | |
| $child->_parent = $this; | |
| } else { | |
| if (is_null($nodeName)) { | |
| $nodeName = $this->_getNewName(); | |
| } | |
| } | |
| $this->_nodes[$nodeName] = $child; | |
| } | |
| public function nodes() { | |
| return $this->_nodes; | |
| } | |
| public function getNodeByName($nodeName) { | |
| return $this->_nodes[$nodeName]; | |
| } | |
| public function getNode($nodeNbr) { | |
| $nodes = array_values($this->_nodes); | |
| return $nodes[$nodeNbr]; | |
| } | |
| public function getParent() { | |
| return $this->_parent; | |
| } | |
| public function rewind() { | |
| reset($this->_nodes); | |
| } | |
| public function current() { | |
| return current($this->_nodes); | |
| } | |
| public function key() { | |
| return key($this->_nodes); | |
| } | |
| public function next() { | |
| next($this->_nodes); | |
| } | |
| public function valid() { | |
| return key($this->_nodes) !== null; | |
| } | |
| } | |
| } |