Source

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