Annotation of embedaddon/php/ext/spl/tests/bug61527.phpt, revision 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>