public function testExtractHasMany() {
$tricky = array(
0 => array('User' => array('id' => 1, 'name' => 'John')),
1 => array('User' => array('id' => 2, 'name' => 'Bob')),
2 => array('User' => array('id' => 3, 'name' => 'Tony')),
'User' => array('id' => 4, 'name' => 'Neo')
);
$expected = array(1, 2, 3, 4);
$result = Set::extract($tricky, '/User/id');
$this->assertEqual($expected, $result);
$expected = array(1, 3);
$result = Set::extract($tricky, '/User[name=/n/]/id');
$this->assertEqual($expected, $result);
$expected = array(4);
$result = Set::extract($tricky, '/User[name=/N/]/id');
$this->assertEqual($expected, $result);
$expected = array(1, 3, 4);
$result = Set::extract($tricky, '/User[name=/N/i]/id');
$this->assertEqual($expected, $result);
$expected = array(
array('id', 'name'), array('id', 'name'), array('id', 'name'), array('id', 'name')
);
$result = Set::extract($tricky, '/User/@*');
$this->assertEqual($expected, $result);
}