Source

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