public function testFindingTokenPatterns()
{
$code = file_get_contents(Libraries::path('lithium\\analysis\\Parser'));
$expected = array('tokenize', 'matchToken', '_prepareMatchParams', 'token');
$results = array_values(array_unique(array_map(function ($i) {
return $i[0];
}, Parser::find($code, 'static::_(*)', array('capture' => array('T_STRING'), 'return' => 'content')))));
$this->assertEqual($expected, $results);
$expected = array('lithium\\util\\Set', 'lithium\\util\\Collection');
$results = array_map(function ($i) {
return join('', $i);
}, $results = Parser::find($code, 'use *;', array('return' => 'content', 'lineBreaks' => true, 'startOfLine' => true, 'capture' => array('T_STRING', 'T_NS_SEPARATOR'))));
$this->assertEqual($expected, $results);
$code = 'function test($options) { return function($foo) use ($options) {';
$code .= ' ClassName::method($options); ' . "\n" . ' $foo->method($options); }; }';
list($results) = Parser::find($code, '_::_(', array('capture' => array('T_STRING'), 'return' => 'content'));
$expected = array('ClassName', 'method');
$this->assertEqual($expected, $results);
}