public function testMethodFiltering() {
$class = 'lithium\tests\mocks\core\MockStaticMethodFiltering';
$result = $class::method(array('Starting test'));
$expected = array(
'Starting test',
'Starting outer method call',
'Inside method implementation of ' . $class,
'Ending outer method call'
);
$this->assertEqual($expected, $result);
$class::applyFilter('method', function($self, $params, $chain) {
$params['data'][] = 'Starting filter';
$result = $chain->next($self, $params, $chain);
$result[] = 'Ending filter';
return $result;
});
$result = $class::method(array('Starting test'));
$expected = array(
'Starting test',
'Starting outer method call',
'Starting filter',
'Inside method implementation of ' . $class,
'Ending filter',
'Ending outer method call'
);
$this->assertEqual($expected, $result);
$class::applyFilter('method', function($self, $params, $chain) {
$params['data'][] = 'Starting inner filter';
$result = $chain->next($self, $params, $chain);
$result[] = 'Ending inner filter';
return $result;
});
$result = $class::method(array('Starting test'));
$expected = array(
'Starting test',
'Starting outer method call',
'Starting filter',
'Starting inner filter',
'Inside method implementation of ' . $class,
'Ending inner filter',
'Ending filter',
'Ending outer method call'
);
$this->assertEqual($expected, $result);
}