public function testExtractFromTree()
{
$tree = array(array('Category' => array('name' => 'Category 1'), 'children' => array(array('Category' => array('name' => 'Category 1.1')))), array('Category' => array('name' => 'Category 2'), 'children' => array(array('Category' => array('name' => 'Category 2.1')), array('Category' => array('name' => 'Category 2.2')))), array('Category' => array('name' => 'Category 3'), 'children' => array(array('Category' => array('name' => 'Category 3.1')))));
$expected = array(array('Category' => $tree[1]['Category']));
$result = Set::extract($tree, '/Category[name=Category 2]');
$this->assertEqual($expected, $result);
$expected = array(array('Category' => $tree[1]['Category'], 'children' => $tree[1]['children']));
$result = Set::extract($tree, '/Category[name=Category 2]/..');
$this->assertEqual($expected, $result);
$expected = array(array('children' => $tree[1]['children'][0]), array('children' => $tree[1]['children'][1]));
$result = Set::extract($tree, '/Category[name=Category 2]/../children');
$this->assertEqual($expected, $result);
}