Annotation of embedaddon/php/ext/spl/tests/iterator_047.phpt, revision 1.1.1.2
1.1 misho 1: --TEST--
2: SPL: RecursiveCachingIterator and exception in has/getChildren
3: --FILE--
4: <?php
5:
6: class MyRecursiveArrayIterator extends RecursiveArrayIterator
7: {
8: static public $fail = 0;
9:
10: static function fail($state, $method)
11: {
12: if (self::$fail == $state)
13: {
14: throw new Exception("State $state: $method()");
15: }
16: }
17:
18: function hasChildren()
19: {
20: echo __METHOD__ . "()\n";
21: self::fail(1, __METHOD__);
22: return parent::hasChildren();
23: }
24:
25: function getChildren()
26: {
27: echo __METHOD__ . "()\n";
28: self::fail(2, __METHOD__);
29: return parent::getChildren();
30: }
31: }
32:
33: class MyRecursiveCachingIterator extends RecursiveCachingIterator
34: {
35: function show()
36: {
37: MyRecursiveArrayIterator::$fail = 0;
38: while(MyRecursiveArrayIterator::$fail < 4)
39: {
40: echo "===" . MyRecursiveArrayIterator::$fail . "===\n";
41: try
42: {
43: foreach(new RecursiveIteratorIterator($this) as $k => $v)
44: {
45: var_dump($k);
46: var_dump($v);
47: }
48: }
49: catch (Exception $e)
50: {
51: echo "Exception: " . $e->getMessage() . " in " . $e->getFile() . " on line " . $e->getLine() . "\n";
52: }
53: MyRecursiveArrayIterator::$fail++;
54: }
55: }
56: }
57:
58: $it = new MyRecursiveArrayIterator(array(0, array(10), 2, array(30), 4));
59: $it = new MyRecursiveCachingIterator($it);
60:
61: $it->show();
62:
63: ?>
64: ===DONE===
65: <?php exit(0); ?>
66: --EXPECTF--
67: ===0===
68: MyRecursiveArrayIterator::hasChildren()
69: int(0)
70: int(0)
71: MyRecursiveArrayIterator::hasChildren()
72: MyRecursiveArrayIterator::getChildren()
1.1.1.2 ! misho 73:
! 74: Notice: Array to string conversion in %siterator_047.php on line %d
1.1 misho 75: MyRecursiveArrayIterator::hasChildren()
76: int(0)
77: int(10)
78: MyRecursiveArrayIterator::hasChildren()
79: int(2)
80: int(2)
81: MyRecursiveArrayIterator::hasChildren()
82: MyRecursiveArrayIterator::getChildren()
1.1.1.2 ! misho 83:
! 84: Notice: Array to string conversion in %siterator_047.php on line %d
1.1 misho 85: MyRecursiveArrayIterator::hasChildren()
86: int(0)
87: int(30)
88: MyRecursiveArrayIterator::hasChildren()
89: int(4)
90: int(4)
91: ===1===
92: MyRecursiveArrayIterator::hasChildren()
93: Exception: State 1: MyRecursiveArrayIterator::hasChildren() in %s on line %d
94: ===2===
95: MyRecursiveArrayIterator::hasChildren()
96: int(0)
97: int(0)
98: MyRecursiveArrayIterator::hasChildren()
99: MyRecursiveArrayIterator::getChildren()
100: Exception: State 2: MyRecursiveArrayIterator::getChildren() in %s on line %d
101: ===3===
102: MyRecursiveArrayIterator::hasChildren()
103: int(0)
104: int(0)
105: MyRecursiveArrayIterator::hasChildren()
106: MyRecursiveArrayIterator::getChildren()
1.1.1.2 ! misho 107:
! 108: Notice: Array to string conversion in %siterator_047.php on line %d
1.1 misho 109: MyRecursiveArrayIterator::hasChildren()
110: int(0)
111: int(10)
112: MyRecursiveArrayIterator::hasChildren()
113: int(2)
114: int(2)
115: MyRecursiveArrayIterator::hasChildren()
116: MyRecursiveArrayIterator::getChildren()
1.1.1.2 ! misho 117:
! 118: Notice: Array to string conversion in %siterator_047.php on line %d
1.1 misho 119: MyRecursiveArrayIterator::hasChildren()
120: int(0)
121: int(30)
122: MyRecursiveArrayIterator::hasChildren()
123: int(4)
124: int(4)
125: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>