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>