Annotation of embedaddon/php/ext/standard/tests/array/usort_object1.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Test usort() function : object functionality - different number of properties
        !             3: --FILE--
        !             4: <?php
        !             5: /* Prototype  : bool usort(array $array_arg, string $cmp_function)
        !             6:  * Description: Sort an array by values using a user-defined comparison function 
        !             7:  * Source code: ext/standard/array.c
        !             8:  */
        !             9: 
        !            10: /*
        !            11:  * Pass an array of objects which have a different number of properties
        !            12:  * to test behaviour of usort()
        !            13:  */
        !            14: 
        !            15: echo "*** Testing usort() : object functionality ***\n";
        !            16: 
        !            17: function simple_cmp($value1, $value2)
        !            18: {
        !            19:        if($value1 == $value2) {
        !            20:                return 0;
        !            21:        }
        !            22:        else if($value1 > $value2) {
        !            23:                return 1;
        !            24:        }
        !            25:        else
        !            26:        return -1;
        !            27: }
        !            28: 
        !            29: // comparison function for SimpleClass2 objects which has more than one member
        !            30: function multiple_cmp($value1, $value2)
        !            31: {
        !            32:        if($value1->getValue() == $value2->getValue())
        !            33:        return 0;
        !            34:        else if($value1->getValue() > $value2->getValue())
        !            35:        return 1;
        !            36:        else
        !            37:        return -1;
        !            38: }
        !            39: 
        !            40: // Simple class with single property
        !            41: class SimpleClass1
        !            42: {
        !            43:        private $int_value;
        !            44: 
        !            45:        public function __construct($value) {
        !            46:                $this->int_value = $value;
        !            47:        }
        !            48: }
        !            49: 
        !            50: // Simple class with more than one property
        !            51: class SimpleClass2
        !            52: {
        !            53:        private $int_value;
        !            54:        protected $float_value;
        !            55:        public $string_value;
        !            56:        public function __construct($int, $float, $str) {
        !            57:                $this->int_value = $int;
        !            58:                $this->float_value = $float;
        !            59:                $this->string_value = $str;
        !            60:        }
        !            61:        public function getValue() {
        !            62:                return $this->int_value;
        !            63:        }
        !            64: }
        !            65: 
        !            66: // array of SimpleClass objects with only one property
        !            67: $array_arg = array(
        !            68: 0 => new SimpleClass1(10),
        !            69: 1 => new SimpleClass1(1),
        !            70: 2 => new SimpleClass1(100),
        !            71: 3 => new SimpleClass1(50)
        !            72: );
        !            73: var_dump( usort($array_arg, 'simple_cmp') );
        !            74: var_dump($array_arg);
        !            75: 
        !            76: // array of SimpleClass objects having more than one properties
        !            77: $array_arg = array(
        !            78: 0 => new SimpleClass2(2, 3.4, "mango"),
        !            79: 1 => new SimpleClass2(10, 1.2, "apple"),
        !            80: 2 => new SimpleClass2(5, 2.5, "orange"),
        !            81: );
        !            82: var_dump( usort($array_arg, 'multiple_cmp') );
        !            83: var_dump($array_arg);
        !            84: ?>
        !            85: ===DONE===
        !            86: --EXPECTF--
        !            87: *** Testing usort() : object functionality ***
        !            88: bool(true)
        !            89: array(4) {
        !            90:   [0]=>
        !            91:   object(SimpleClass1)#%d (1) {
        !            92:     ["int_value":"SimpleClass1":private]=>
        !            93:     int(1)
        !            94:   }
        !            95:   [1]=>
        !            96:   object(SimpleClass1)#%d (1) {
        !            97:     ["int_value":"SimpleClass1":private]=>
        !            98:     int(10)
        !            99:   }
        !           100:   [2]=>
        !           101:   object(SimpleClass1)#%d (1) {
        !           102:     ["int_value":"SimpleClass1":private]=>
        !           103:     int(50)
        !           104:   }
        !           105:   [3]=>
        !           106:   object(SimpleClass1)#%d (1) {
        !           107:     ["int_value":"SimpleClass1":private]=>
        !           108:     int(100)
        !           109:   }
        !           110: }
        !           111: bool(true)
        !           112: array(3) {
        !           113:   [0]=>
        !           114:   object(SimpleClass2)#%d (3) {
        !           115:     ["int_value":"SimpleClass2":private]=>
        !           116:     int(2)
        !           117:     ["float_value":protected]=>
        !           118:     float(3.4)
        !           119:     ["string_value"]=>
        !           120:     string(5) "mango"
        !           121:   }
        !           122:   [1]=>
        !           123:   object(SimpleClass2)#%d (3) {
        !           124:     ["int_value":"SimpleClass2":private]=>
        !           125:     int(5)
        !           126:     ["float_value":protected]=>
        !           127:     float(2.5)
        !           128:     ["string_value"]=>
        !           129:     string(6) "orange"
        !           130:   }
        !           131:   [2]=>
        !           132:   object(SimpleClass2)#%d (3) {
        !           133:     ["int_value":"SimpleClass2":private]=>
        !           134:     int(10)
        !           135:     ["float_value":protected]=>
        !           136:     float(1.2)
        !           137:     ["string_value"]=>
        !           138:     string(5) "apple"
        !           139:   }
        !           140: }
        !           141: ===DONE===

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