-
Notifications
You must be signed in to change notification settings - Fork 238
/
FiltersTest.php
68 lines (57 loc) · 2.19 KB
/
FiltersTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
/**
* Lithium: the most rad php framework
*
* @copyright Copyright 2014, Union of RAD (http://union-of-rad.org)
* @license http://opensource.org/licenses/bsd-license.php The BSD License
*/
namespace lithium\tests\cases\util\collection;
use lithium\util\collection\Filters;
class FiltersTest extends \lithium\test\Unit {
public function testRun() {
$options = array('method' => __FUNCTION__, 'class' => __CLASS__, 'data' => array(
function($self, $params, $chain) {
$params['message'] .= 'is a filter chain ';
return $chain->next($self, $params, $chain);
},
function($self, $params, $chain) {
$params['message'] .= 'in the ' . $chain->method() . ' method ';
return $chain->next($self, $params, $chain);
},
function($self, $params, $chain) {
return $params['message'] . 'of the ' . $self . ' class.';
}
));
$result = Filters::run(__CLASS__, array('message' => 'This '), $options);
$expected = 'This is a filter chain in the testRun method of the';
$expected .= ' lithium\tests\cases\util\collection\FiltersTest class.';
$this->assertEqual($expected, $result);
}
public function testRunWithoutChain() {
$options = array('method' => __FUNCTION__, 'class' => __CLASS__, 'data' => array(
function($self, $params, $chain) {
return $chain->next($self, $params, null);
},
'This is a filter chain that calls $chain->next() without the $chain argument.'
));
$result = Filters::run(__CLASS__, array(), $options);
$expected = 'This is a filter chain that calls $chain->next() without the $chain argument.';
$this->assertEqual($expected, $result);
}
public function testLazyApply() {
$class = 'lithium\tests\mocks\util\MockFilters';
Filters::apply($class, 'filteredMethod', function($self, $params, $chain) {
return md5($chain->next($self, $params, $chain));
});
$expected = md5('Working?');
$result = $class::filteredMethod();
$this->assertEqual($expected, $result);
Filters::apply($class, 'filteredMethod', function($self, $params, $chain) {
return sha1($chain->next($self, $params, $chain));
});
$expected = md5(sha1('Working?'));
$result = $class::filteredMethod();
$this->assertEqual($expected, $result);
}
}
?>