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