Annotation of embedaddon/php/ext/spl/tests/iterator_037.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: SPL: CachingIterator and __toString
3: --FILE--
4: <?php
5:
6: function test($ar, $flags)
7: {
8: echo "===$flags===\n";
9: $it = new CachingIterator($ar, 0);
10: try
11: {
12: $it->setFlags($flags);
13: }
14: catch (Exception $e)
15: {
16: echo 'Exception: ' . $e->getMessage() . "\n";
17: var_dump($it->getFlags());
18: return;
19: }
20: var_dump($it->getFlags());
21: try
22: {
23: foreach($it as $v)
24: {
25: var_dump((string)$it);
26: }
27: }
28: catch (Exception $e)
29: {
30: echo 'Exception: ' . $e->getMessage() . "\n";
31: }
32: }
33:
34: class MyItem
35: {
36: function __construct($value)
37: {
38: $this->value = $value;
39: }
40:
41: function __toString()
42: {
43: return (string)$this->value;
44: }
45: }
46:
47: class MyArrayIterator extends ArrayIterator
48: {
49: function __toString()
50: {
51: return $this->key() . ':' . $this->current();
52: }
53: }
54:
55: $ar = new MyArrayIterator(array(1, 2, 3));
56:
57: test($ar, CachingIterator::CALL_TOSTRING);
58: test($ar, CachingIterator::TOSTRING_USE_KEY);
59: test($ar, CachingIterator::TOSTRING_USE_CURRENT);
60:
61: $ar = new MyArrayIterator(array(new MyItem(1), new MyItem(2), new MyItem(3)));
62:
63: test($ar, CachingIterator::TOSTRING_USE_INNER);
64: test($ar, CachingIterator::CALL_TOSTRING | CachingIterator::TOSTRING_USE_KEY);
65: test($ar, CachingIterator::CALL_TOSTRING | CachingIterator::TOSTRING_USE_CURRENT);
66: test($ar, CachingIterator::CALL_TOSTRING | CachingIterator::TOSTRING_USE_INNER);
67: test($ar, CachingIterator::TOSTRING_USE_KEY | CachingIterator::TOSTRING_USE_CURRENT);
68: test($ar, CachingIterator::TOSTRING_USE_KEY | CachingIterator::TOSTRING_USE_INNER);
69:
70: echo "===X===\n";
71: try
72: {
73: $it = new CachingIterator($ar, CachingIterator::CALL_TOSTRING);
74: $it->setFlags(0);
75: }
76: catch (Exception $e)
77: {
78: echo 'Exception: ' . $e->getMessage() . "\n";
79: }
80: try
81: {
82: $it = new CachingIterator($ar, CachingIterator::TOSTRING_USE_INNER);
83: $it->setFlags(0);
84: }
85: catch (Exception $e)
86: {
87: echo 'Exception: ' . $e->getMessage() . "\n";
88: }
89:
90: ?>
91: ===DONE===
92: --EXPECTF--
93: ===1===
94: int(1)
95: string(1) "1"
96: string(1) "2"
97: string(1) "3"
98: ===2===
99: int(2)
100: string(1) "0"
101: string(1) "1"
102: string(1) "2"
103: ===4===
104: int(4)
105: string(1) "1"
106: string(1) "2"
107: string(1) "3"
108: ===8===
109: int(8)
110: string(3) "0:1"
111: string(3) "1:2"
112: string(3) "2:3"
113: ===3===
114: Exception: Flags must contain only one of CALL_TOSTRING, TOSTRING_USE_KEY, TOSTRING_USE_CURRENT, TOSTRING_USE_INNER
115: int(0)
116: ===5===
117: Exception: Flags must contain only one of CALL_TOSTRING, TOSTRING_USE_KEY, TOSTRING_USE_CURRENT, TOSTRING_USE_INNER
118: int(0)
119: ===9===
120: Exception: Flags must contain only one of CALL_TOSTRING, TOSTRING_USE_KEY, TOSTRING_USE_CURRENT, TOSTRING_USE_INNER
121: int(0)
122: ===6===
123: Exception: Flags must contain only one of CALL_TOSTRING, TOSTRING_USE_KEY, TOSTRING_USE_CURRENT, TOSTRING_USE_INNER
124: int(0)
125: ===10===
126: Exception: Flags must contain only one of CALL_TOSTRING, TOSTRING_USE_KEY, TOSTRING_USE_CURRENT, TOSTRING_USE_INNER
127: int(0)
128: ===X===
129: Exception: Unsetting flag CALL_TO_STRING is not possible
130: Exception: Unsetting flag TOSTRING_USE_INNER is not possible
131: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>