Annotation of embedaddon/php/ext/spl/tests/bug61527.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Bug #61527 (Recursive/ArrayIterator gives misleading notice when array empty or moved to the end)
                      3: --FILE--
                      4: <?php
                      5: $ao = new ArrayObject(array());
                      6: $ai = $ao->getIterator();
                      7: 
                      8: /* testing empty array, should no notice at all */
                      9: $ai->next();
                     10: var_dump($ai->key());
                     11: var_dump($ai->current());
                     12: 
                     13: /* testing array changing */
                     14: $ao2 = new ArrayObject(array(1 => 1, 2, 3, 4, 5));
                     15: $ai2 = $ao2->getIterator();
                     16: 
                     17: $ao2->offsetUnset($ai2->key());
                     18: $ai2->next();
                     19: 
                     20: /* now point to 2 */
                     21: $ao2->offsetUnset($ai2->key());
                     22: var_dump($ai2->key());
                     23: 
                     24: /* now point to 3 */
                     25: $ao2->offsetUnset($ai2->key());
                     26: var_dump($ai2->current());
                     27: 
                     28: $ai2->next();
                     29: var_dump($ai2->key());
                     30: var_dump($ai2->current());
                     31: 
                     32: /* should be at the end and no notice */
                     33: $ai2->next();
                     34: var_dump($ai2->key());
                     35: var_dump($ai2->current());
                     36: 
                     37: $ai2->rewind();
                     38: $ai2->next();
                     39: $ai2->next();
                     40: /* should reached the end */
                     41: var_dump($ai2->next());
                     42: var_dump($ai2->key());
                     43: 
                     44: /* testing RecursiveArrayIterator */
                     45: $ao3 = new ArrayObject(array(), NULL, 'RecursiveArrayIterator');
                     46: $ai3 = $ao3->getIterator();
                     47: 
                     48: var_dump($ai3->getChildren());
                     49: 
                     50: $ao4 = new ArrayObject(array(1, 2), NULL, 'RecursiveArrayIterator');
                     51: $ai4 = $ao4->getIterator();
                     52: 
                     53: $ai4->next();
                     54: $ai4->next();
                     55: $ai4->next();
                     56: var_dump($ai4->hasChildren());
                     57: 
                     58: $ai4->rewind();
                     59: $ao4->offsetUnset($ai4->key());
                     60: var_dump($ai4->hasChildren());
                     61: 
                     62: $ao4->offsetUnset($ai4->key());
                     63: var_dump($ai4->getChildren());
                     64: ?>
                     65: ==DONE==
                     66: <?php exit(0); ?>
                     67: --EXPECTF--
                     68: NULL
                     69: NULL
                     70: 
                     71: Notice: ArrayIterator::next(): Array was modified outside object and internal position is no longer valid in %sbug61527.php on line %d
                     72: 
                     73: Notice: ArrayIterator::key(): Array was modified outside object and internal position is no longer valid in %sbug61527.php on line %d
                     74: NULL
                     75: 
                     76: Notice: ArrayIterator::current(): Array was modified outside object and internal position is no longer valid in %sbug61527.php on line %d
                     77: NULL
                     78: int(5)
                     79: int(5)
                     80: NULL
                     81: NULL
                     82: NULL
                     83: NULL
                     84: NULL
                     85: bool(false)
                     86: 
                     87: Notice: RecursiveArrayIterator::hasChildren(): Array was modified outside object and internal position is no longer valid in %sbug61527.php on line %d
                     88: bool(false)
                     89: 
                     90: Notice: RecursiveArrayIterator::getChildren(): Array was modified outside object and internal position is no longer valid in %sbug61527.php on line %d
                     91: NULL
                     92: ==DONE==

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>