Annotation of embedaddon/php/ext/standard/tests/array/usort_object2.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Test usort() function : object functionality - Different types of classes
                      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 are either: 
                     12:  * 1. Empty
                     13:  * 2. Static
                     14:  * 2. Inherited
                     15:  * to test behaviour of usort()
                     16:  */
                     17: 
                     18: echo "*** Testing usort() : object functionality ***\n";
                     19: 
                     20: function cmp_function($value1, $value2)
                     21: {
                     22:   if($value1 == $value2) {
                     23:     return 0;
                     24:   }
                     25:   else if($value1 > $value2) {
                     26:     return 1;
                     27:   }
                     28:   else
                     29:     return -1;
                     30: }
                     31: 
                     32: // Class without any member
                     33: class EmptyClass
                     34: {
                     35: }
                     36: 
                     37: // Class with static member
                     38: class StaticClass
                     39: {
                     40:   public static $static_value;
                     41:   public function __construct($value) {
                     42:     StaticClass::$static_value = $value;
                     43:   }
                     44: }
                     45: 
                     46: // Abstract class
                     47: abstract class AbstractClass
                     48: {
                     49:   public $pub_value;
                     50:   public abstract function abstractMethod();
                     51: }
                     52: 
                     53: // Child class extending abstract class
                     54: class ChildClass extends AbstractClass
                     55: {
                     56:   public $child_value = 100;
                     57:   public function abstractMethod() {
                     58:     $pub_value = 5;
                     59:   }
                     60:   public function __construct($value) {
                     61:     $this->child_value = $value;
                     62:   }
                     63: }
                     64: 
                     65: // Testing uasort with StaticClass objects as elements of 'array_arg'
                     66: echo "-- Testing usort() with StaticClass objects --\n";
                     67: $array_arg = array(
                     68:   0 => new StaticClass(20),
                     69:   1 => new StaticClass(50),
                     70:   2 => new StaticClass(15),
                     71:   3 => new StaticClass(70),
                     72: );
                     73: var_dump( usort($array_arg, 'cmp_function') );
                     74: var_dump($array_arg);
                     75: 
                     76: // Testing uasort with EmptyClass objects as elements of 'array_arg'
                     77: echo "-- Testing usort() with EmptyClass objects --\n";
                     78: $array_arg = array(
                     79:   0 => new EmptyClass(),
                     80:   1 => new EmptyClass(),
                     81:   2 => new EmptyClass(),
                     82:   3 => new EmptyClass(),
                     83: );
                     84: var_dump( usort($array_arg, 'cmp_function') );
                     85: var_dump($array_arg);
                     86: 
                     87: // Testing uasort with ChildClass objects as elements of 'array_arg'
                     88: echo "-- Testing usort() with ChildClass objects --\n";
                     89: $array_arg = array(
                     90:   0 => new ChildClass(20),
                     91:   1 => new ChildClass(500),
                     92:   2 => new ChildClass(15),
                     93:   3 => new ChildClass(700),
                     94: );
                     95: var_dump( usort($array_arg, 'cmp_function') );
                     96: var_dump($array_arg);
                     97: ?>
                     98: ===DONE===
                     99: --EXPECTF--
                    100: *** Testing usort() : object functionality ***
                    101: -- Testing usort() with StaticClass objects --
                    102: bool(true)
                    103: array(4) {
                    104:   [0]=>
                    105:   object(StaticClass)#%d (0) {
                    106:   }
                    107:   [1]=>
                    108:   object(StaticClass)#%d (0) {
                    109:   }
                    110:   [2]=>
                    111:   object(StaticClass)#%d (0) {
                    112:   }
                    113:   [3]=>
                    114:   object(StaticClass)#%d (0) {
                    115:   }
                    116: }
                    117: -- Testing usort() with EmptyClass objects --
                    118: bool(true)
                    119: array(4) {
                    120:   [0]=>
                    121:   object(EmptyClass)#%d (0) {
                    122:   }
                    123:   [1]=>
                    124:   object(EmptyClass)#%d (0) {
                    125:   }
                    126:   [2]=>
                    127:   object(EmptyClass)#%d (0) {
                    128:   }
                    129:   [3]=>
                    130:   object(EmptyClass)#%d (0) {
                    131:   }
                    132: }
                    133: -- Testing usort() with ChildClass objects --
                    134: bool(true)
                    135: array(4) {
                    136:   [0]=>
                    137:   object(ChildClass)#%d (2) {
                    138:     ["child_value"]=>
                    139:     int(15)
                    140:     ["pub_value"]=>
                    141:     NULL
                    142:   }
                    143:   [1]=>
                    144:   object(ChildClass)#%d (2) {
                    145:     ["child_value"]=>
                    146:     int(20)
                    147:     ["pub_value"]=>
                    148:     NULL
                    149:   }
                    150:   [2]=>
                    151:   object(ChildClass)#%d (2) {
                    152:     ["child_value"]=>
                    153:     int(500)
                    154:     ["pub_value"]=>
                    155:     NULL
                    156:   }
                    157:   [3]=>
                    158:   object(ChildClass)#%d (2) {
                    159:     ["child_value"]=>
                    160:     int(700)
                    161:     ["pub_value"]=>
                    162:     NULL
                    163:   }
                    164: }
                    165: ===DONE===

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