Annotation of embedaddon/php/ext/spl/tests/iterator_031.phpt, revision 1.1.1.2

1.1       misho       1: --TEST--
1.1.1.2 ! misho       2: SPL: AppendIterator::append() rewinds when necessary
1.1       misho       3: --FILE--
                      4: <?php
                      5: 
                      6: class MyArrayIterator extends ArrayIterator
                      7: {
                      8:        function rewind()
                      9:        {
                     10:                echo __METHOD__ . "\n";
                     11:                parent::rewind();
                     12:        }
                     13: }
                     14: 
                     15: $it = new MyArrayIterator(array(1,2));
                     16: 
                     17: foreach($it as $k=>$v)
                     18: {
                     19:        echo "$k=>$v\n";
                     20: }
                     21: 
                     22: class MyAppendIterator extends AppendIterator
                     23: {
                     24:        function __construct()
                     25:        {
                     26:                echo __METHOD__ . "\n";
                     27:        }
                     28: 
                     29:        function rewind()
                     30:        {
                     31:                echo __METHOD__ . "\n";
                     32:                parent::rewind();
                     33:        }
                     34: 
                     35:        function valid()
                     36:        {
                     37:                echo __METHOD__ . "\n";
                     38:                return parent::valid();
                     39:        }
                     40:        
                     41:        function append(Iterator $what)
                     42:        {
                     43:                echo __METHOD__ . "\n";
                     44:                parent::append($what);
                     45:        }
                     46:        
                     47:        function parent__construct()
                     48:        {
                     49:                parent::__construct();
                     50:        }
                     51: }
                     52: 
                     53: $ap = new MyAppendIterator;
                     54: 
                     55: try
                     56: {
                     57:        $ap->append($it);
                     58: }
                     59: catch(LogicException $e)
                     60: {
                     61:        echo $e->getMessage() . "\n";
                     62: }
                     63: 
                     64: $ap->parent__construct();
                     65: 
                     66: try
                     67: {
                     68:        $ap->parent__construct($it);
                     69: }
                     70: catch(BadMethodCallException $e)
                     71: {
                     72:        echo $e->getMessage() . "\n";
                     73: }
                     74: 
                     75: $ap->append($it);
                     76: $ap->append($it);
                     77: $ap->append($it);
                     78: 
                     79: foreach($ap as $k=>$v)
                     80: {
                     81:        echo "$k=>$v\n";
                     82: }
                     83: 
                     84: ?>
                     85: ===DONE===
                     86: <?php exit(0); ?>
                     87: --EXPECT--
                     88: MyArrayIterator::rewind
                     89: 0=>1
                     90: 1=>2
                     91: MyAppendIterator::__construct
                     92: MyAppendIterator::append
                     93: The object is in an invalid state as the parent constructor was not called
                     94: AppendIterator::getIterator() must be called exactly once per instance
                     95: MyAppendIterator::append
                     96: MyArrayIterator::rewind
                     97: MyAppendIterator::append
                     98: MyAppendIterator::append
                     99: MyAppendIterator::rewind
                    100: MyArrayIterator::rewind
                    101: MyAppendIterator::valid
                    102: 0=>1
                    103: MyAppendIterator::valid
                    104: 1=>2
                    105: MyArrayIterator::rewind
                    106: MyAppendIterator::valid
                    107: 0=>1
                    108: MyAppendIterator::valid
                    109: 1=>2
                    110: MyArrayIterator::rewind
                    111: MyAppendIterator::valid
                    112: 0=>1
                    113: MyAppendIterator::valid
                    114: 1=>2
                    115: MyAppendIterator::valid
                    116: ===DONE===

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