Annotation of embedaddon/php/ext/spl/tests/CallbackFilterIteratorTest.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: CallbackFilterIterator
3: --FILE--
4: <?php
5:
6: class A {
7: function test($value, $key, $inner) {
8: return test($value, $key, $inner);
9: }
10: }
11:
12: class B {
13: static function test($value, $key, $inner) {
14: return test($value, $key, $inner);
15: }
16: }
17:
18: function test($value, $key, $inner) {
19: printf("%s / %s / %d / %d\n"
20: , $value
21: , $key
22: , $value == $inner->current()
23: , $key == $inner->key()
24: );
25: return $value === 1 || $value === 4;
26: }
27:
28: $tests = array(
29: 'instance method' => function() { return array(new A, 'test'); },
30: 'static method' => function() { return array('B', 'test'); },
31: 'static method (2)' => function() { return 'B::test'; },
32: 'function' => function() { return 'test'; },
33: 'anonymous function' => function() { return function($value, $key, $inner) { return test($value, $key, $inner); }; },
34: );
35:
36: foreach($tests as $name => $test) {
37:
38: $callback = $test();
39: $it = new ArrayIterator(range(1, 5));
40: $it = new CallbackFilterIterator($it, $callback);
41:
42: echo " = $name =\n";
43:
44: foreach($it as $value) {
45: echo "=> $value\n";
46: }
47:
48: // same test, with no reference to callback
49:
50: $it = new ArrayIterator(range(1, 5));
51: $it = new CallbackFilterIterator($it, $test());
52: unset($callback);
53:
54: foreach($it as $value) {
55: echo "=> $value\n";
56: }
57: }
58: --EXPECT--
59: = instance method =
60: 1 / 0 / 1 / 1
61: => 1
62: 2 / 1 / 1 / 1
63: 3 / 2 / 1 / 1
64: 4 / 3 / 1 / 1
65: => 4
66: 5 / 4 / 1 / 1
67: 1 / 0 / 1 / 1
68: => 1
69: 2 / 1 / 1 / 1
70: 3 / 2 / 1 / 1
71: 4 / 3 / 1 / 1
72: => 4
73: 5 / 4 / 1 / 1
74: = static method =
75: 1 / 0 / 1 / 1
76: => 1
77: 2 / 1 / 1 / 1
78: 3 / 2 / 1 / 1
79: 4 / 3 / 1 / 1
80: => 4
81: 5 / 4 / 1 / 1
82: 1 / 0 / 1 / 1
83: => 1
84: 2 / 1 / 1 / 1
85: 3 / 2 / 1 / 1
86: 4 / 3 / 1 / 1
87: => 4
88: 5 / 4 / 1 / 1
89: = static method (2) =
90: 1 / 0 / 1 / 1
91: => 1
92: 2 / 1 / 1 / 1
93: 3 / 2 / 1 / 1
94: 4 / 3 / 1 / 1
95: => 4
96: 5 / 4 / 1 / 1
97: 1 / 0 / 1 / 1
98: => 1
99: 2 / 1 / 1 / 1
100: 3 / 2 / 1 / 1
101: 4 / 3 / 1 / 1
102: => 4
103: 5 / 4 / 1 / 1
104: = function =
105: 1 / 0 / 1 / 1
106: => 1
107: 2 / 1 / 1 / 1
108: 3 / 2 / 1 / 1
109: 4 / 3 / 1 / 1
110: => 4
111: 5 / 4 / 1 / 1
112: 1 / 0 / 1 / 1
113: => 1
114: 2 / 1 / 1 / 1
115: 3 / 2 / 1 / 1
116: 4 / 3 / 1 / 1
117: => 4
118: 5 / 4 / 1 / 1
119: = anonymous function =
120: 1 / 0 / 1 / 1
121: => 1
122: 2 / 1 / 1 / 1
123: 3 / 2 / 1 / 1
124: 4 / 3 / 1 / 1
125: => 4
126: 5 / 4 / 1 / 1
127: 1 / 0 / 1 / 1
128: => 1
129: 2 / 1 / 1 / 1
130: 3 / 2 / 1 / 1
131: 4 / 3 / 1 / 1
132: => 4
133: 5 / 4 / 1 / 1
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>