diff --git a/src/Verraes/MagicTree/Branch.php b/src/Verraes/MagicTree/Branch.php index 5cee8f8..bc2bf21 100644 --- a/src/Verraes/MagicTree/Branch.php +++ b/src/Verraes/MagicTree/Branch.php @@ -38,26 +38,13 @@ public function remove($key) public function offsetGet($index) { - if (!isset($this->_children[$index])) { - $this->addElement($index, new Branch()); - } - return $this->_children[$index]; + return $this->getChild($index); } public function __get($name) { - if (!isset($this->_children[$name])) { - $this->addElement($name, new Branch()); - } - - $child = $this->_children[$name]; - - if ($child instanceof Leaf) { - return $child->getValue(); - } - - return $child; + return $this->getChild($name); } public function offsetExists($offset) @@ -255,4 +242,22 @@ public function isEmpty() } return true; } + + /** + * @param $index + * @return mixed + */ + private function getChild($index) + { + if (!isset($this->_children[$index])) { + $this->addElement($index, new Branch()); + } + $child = $this->_children[$index]; + + if ($child instanceof Leaf) { + return $child->getValue(); + } + + return $child; + } } diff --git a/tests/Verraes/MagicTree/Tests/MagicTreeTest.php b/tests/Verraes/MagicTree/Tests/MagicTreeTest.php index 57eddba..a052ea1 100644 --- a/tests/Verraes/MagicTree/Tests/MagicTreeTest.php +++ b/tests/Verraes/MagicTree/Tests/MagicTreeTest.php @@ -350,6 +350,24 @@ public function it_should_confirm_or_deny_being_empty() $this->assertFalse($nonEmptyBranch->isEmpty()); } + + /** + * @test + */ + public function getting_a_leaf_should_return_its_value() + { + $branch = new Branch(); + $branch->integer(5); + + $this->assertInternalType('integer', $branch->integer); + $this->assertInternalType('integer', $branch['integer']); + + $branch->string("MagicTree Rules"); + + $this->assertInternalType('string', $branch->string); + $this->assertInternalType('string', $branch['string']); + + } } \ No newline at end of file