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);
}