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

1.1       misho       1: --TEST--
                      2: SPL: Attempt to corrupt the heap while iterating
                      3: --CREDITS--
                      4: Lukasz Andrzejak meltir@meltir.com
                      5: #testfest London 2009-05-09
                      6: --FILE--
                      7: <?php
                      8: class ext_heap extends SplMaxHeap {
                      9:   public $fail = false;
                     10:   public function compare($val1,$val2) {
                     11:     if ($this->fail)
                     12:       throw new Exception('Corrupting heap',99);
                     13:     return 0;
                     14:   }
                     15: }
                     16: 
                     17: $h = new ext_heap();
                     18: $h->insert(array('foobar'));
                     19: $h->insert(array('foobar1'));
                     20: $h->insert(array('foobar2'));
                     21: 
                     22: try {
                     23:   $h->fail=true;
                     24:   foreach ($h as $value) {};
                     25:   echo "I should have raised an exception here";
                     26: } catch (Exception $e) {
                     27:   if ($e->getCode()!=99) echo "Unexpected exception";
                     28: }
                     29: 
                     30: var_dump($h);
                     31: ?>
                     32: --EXPECTF--
                     33: object(ext_heap)#%d (4) {
                     34:   [%u|b%"fail"]=>
                     35:   bool(true)
                     36:   [%u|b%"flags":%u|b%"SplHeap":private]=>
                     37:   int(0)
                     38:   [%u|b%"isCorrupted":%u|b%"SplHeap":private]=>
                     39:   bool(true)
                     40:   [%u|b%"heap":%u|b%"SplHeap":private]=>
                     41:   array(2) {
                     42:     [0]=>
                     43:     array(1) {
                     44:       [0]=>
                     45:       %unicode|string%(7) "foobar2"
                     46:     }
                     47:     [1]=>
                     48:     array(1) {
                     49:       [0]=>
                     50:       %unicode|string%(7) "foobar1"
                     51:     }
                     52:   }
                     53: }

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