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

1.1       misho       1: --TEST--
                      2: Bug #33136 (method offsetSet in class extended from ArrayObject crash PHP)
                      3: --FILE--
                      4: <?php
                      5: 
                      6: class Collection extends ArrayObject
                      7: {
                      8:        private $data;
                      9:        
                     10:        function __construct()
                     11:        {
                     12:                $this->data = array();
                     13:                parent::__construct($this->data);
                     14:        }
                     15:        
                     16:        function offsetGet($index)
                     17:        {
                     18:                echo __METHOD__ . "($index)\n";
                     19:                return parent::offsetGet($index);
                     20:        }
                     21:        
                     22:        function offsetSet($index, $value)
                     23:        {
                     24:                echo __METHOD__ . "(" . (is_null($index) ? "NULL" : $index) . ",$value)\n";
                     25:                parent::offsetSet($index, $value);
                     26:        }
                     27: }
                     28: 
                     29: echo "\n\nInitiate Obj\n";
                     30: $arrayObj = new Collection();
                     31: 
                     32: echo "Assign values\n";
                     33: 
                     34: $arrayObj[] = "foo";
                     35: var_dump($arrayObj[0]);
                     36: 
                     37: $arrayObj[] = "bar";
                     38: var_dump($arrayObj[0]);
                     39: var_dump($arrayObj[1]);
                     40: 
                     41: $arrayObj["foo"] = "baz";
                     42: var_dump($arrayObj["foo"]);
                     43: 
                     44: print_r($arrayObj);
                     45: 
                     46: var_dump(count($arrayObj));
                     47: 
                     48: ?>
                     49: ===DONE===
                     50: <?php //exit(0); ?>
                     51: --EXPECT--
                     52: Initiate Obj
                     53: Assign values
                     54: Collection::offsetSet(NULL,foo)
                     55: Collection::offsetGet(0)
                     56: string(3) "foo"
                     57: Collection::offsetSet(NULL,bar)
                     58: Collection::offsetGet(0)
                     59: string(3) "foo"
                     60: Collection::offsetGet(1)
                     61: string(3) "bar"
                     62: Collection::offsetSet(foo,baz)
                     63: Collection::offsetGet(foo)
                     64: string(3) "baz"
                     65: Collection Object
                     66: (
                     67:     [data:Collection:private] => Array
                     68:         (
                     69:         )
                     70: 
                     71:     [storage:ArrayObject:private] => Array
                     72:         (
                     73:             [0] => foo
                     74:             [1] => bar
                     75:             [foo] => baz
                     76:         )
                     77: 
                     78: )
                     79: int(3)
                     80: ===DONE===

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