Annotation of embedaddon/php/ext/spl/tests/heap_corruption.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: SPL: SplHeap - heap corruption via compare exception (with top element deletion)
        !             3: --CREDITS--
        !             4: Mike Sullivan <mikesul@php.net>
        !             5: #TestFest 2009 (London)
        !             6: --FILE--
        !             7: <?php
        !             8: 
        !             9: class myHeap extends SplHeap
        !            10: {
        !            11:        public $allow_compare = true;
        !            12:        
        !            13:        public function compare($v1, $v2)
        !            14:        {
        !            15:                if ($this->allow_compare == true)
        !            16:                {
        !            17:                        if ($v1 > $v2)
        !            18:                        {
        !            19:                                return 1;
        !            20:                        }
        !            21:                        else if ($v1 < $v2)
        !            22:                        {
        !            23:                                return -1;
        !            24:                        }
        !            25:                        else
        !            26:                        {
        !            27:                                return 0;
        !            28:                        }
        !            29:                }
        !            30:                else
        !            31:                {
        !            32:                        throw new Exception('Compare exception');
        !            33:                }
        !            34:        }
        !            35: }
        !            36: 
        !            37: $heap = new myHeap();
        !            38: $heap->insert(1);
        !            39: $heap->insert(2);
        !            40: $heap->insert(3);
        !            41: $heap->insert(4);
        !            42: 
        !            43: $heap->allow_compare = false;
        !            44: 
        !            45: try {
        !            46:        $heap->extract();
        !            47: }
        !            48: catch (Exception $e) {
        !            49:        echo "Compare Exception: " . $e->getMessage() . PHP_EOL;
        !            50: }
        !            51: 
        !            52: try {
        !            53:        $heap->top();
        !            54: }
        !            55: catch (Exception $e) {
        !            56:        echo "Corruption Exception: " . $e->getMessage() . PHP_EOL;
        !            57: }
        !            58: 
        !            59: ?>
        !            60: --EXPECT--
        !            61: Compare Exception: Compare exception
        !            62: Corruption Exception: Heap is corrupted, heap properties are no longer ensured.

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