Return to uasort_object2.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / standard / tests / array |
1.1 misho 1: --TEST-- 2: Test uasort() function : object functionality - sort diff. objects 3: --FILE-- 4: <?php 5: /* Prototype : bool uasort(array $array_arg, string $cmp_function) 6: * Description: Sort an array with a user-defined comparison function and maintain index association 7: * Source code: ext/standard/array.c 8: * 9: 10: /* 11: * This testcase tests uasort() functionality with differnt objects 12: * Objects of different classes: 13: * simple class, 14: * child class, 15: * empty class & 16: * static class 17: */ 18: 19: echo "*** Testing uasort() : object functionality ***\n"; 20: 21: // comparison function 22: /* Prototype : int cmp_function(mixed $value1, mixed $value2) 23: * Parameters : $value1 and $value2 - values to be compared 24: * Return value : 0 - if both values are same 25: * 1 - if value1 is greater than value2 26: * -1 - if value1 is less than value2 27: * Description : compares value1 and value2 28: */ 29: function cmp_function($value1, $value2) 30: { 31: if($value1 == $value2) { 32: return 0; 33: } 34: else if($value1 > $value2) { 35: return 1; 36: } 37: else 38: return -1; 39: } 40: 41: 42: // Simple class with single member variable 43: class SimpleClass 44: { 45: private $int_value; 46: 47: public function __construct($value) { 48: $this->int_value = $value; 49: } 50: 51: } 52: 53: // Class without any member 54: class EmptyClass 55: { 56: } 57: 58: // Class with static member 59: class StaticClass 60: { 61: public static $static_value; 62: public function __construct($value) { 63: StaticClass::$static_value = $value; 64: } 65: } 66: 67: // Abstract class 68: abstract class AbstractClass 69: { 70: public $pub_value; 71: public abstract function abstractMethod(); 72: } 73: 74: // Child class extending abstract class 75: class ChildClass extends AbstractClass 76: { 77: public $child_value = 100; 78: public function abstractMethod() { 79: $pub_value = 5; 80: } 81: public function __construct($value) { 82: $this->child_value = $value; 83: } 84: } 85: 86: // Testing uasort with StaticClass objects as elements of 'array_arg' 87: echo "-- Testing uasort() with StaticClass objects --\n"; 88: $array_arg = array( 89: 0 => new StaticClass(20), 90: 1 => new StaticClass(50), 91: 2 => new StaticClass(15), 92: 3 => new StaticClass(70), 93: ); 94: var_dump( uasort($array_arg, 'cmp_function') ); 95: var_dump($array_arg); 96: 97: // Testing uasort with EmptyClass objects as elements of 'array_arg' 98: echo "-- Testing uasort() with EmptyClass objects --\n"; 99: $array_arg = array( 100: 0 => new EmptyClass(), 101: 1 => new EmptyClass(), 102: 2 => new EmptyClass(), 103: 3 => new EmptyClass(), 104: ); 105: var_dump( uasort($array_arg, 'cmp_function') ); 106: var_dump($array_arg); 107: 108: // Testing uasort with ChildClass objects as elements of 'array_arg' 109: echo "-- Testing uasort() with ChildClass objects --\n"; 110: $array_arg = array( 111: 0 => new ChildClass(20), 112: 1 => new ChildClass(500), 113: 2 => new ChildClass(15), 114: 3 => new ChildClass(700), 115: ); 116: var_dump( uasort($array_arg, 'cmp_function') ); 117: var_dump($array_arg); 118: 119: echo "Done" 120: ?> 121: --EXPECTF-- 122: *** Testing uasort() : object functionality *** 123: -- Testing uasort() with StaticClass objects -- 124: bool(true) 125: array(4) { 126: [3]=> 127: object(StaticClass)#%d (0) { 128: } 129: [2]=> 130: object(StaticClass)#%d (0) { 131: } 132: [1]=> 133: object(StaticClass)#%d (0) { 134: } 135: [0]=> 136: object(StaticClass)#%d (0) { 137: } 138: } 139: -- Testing uasort() with EmptyClass objects -- 140: bool(true) 141: array(4) { 142: [3]=> 143: object(EmptyClass)#%d (0) { 144: } 145: [2]=> 146: object(EmptyClass)#%d (0) { 147: } 148: [1]=> 149: object(EmptyClass)#%d (0) { 150: } 151: [0]=> 152: object(EmptyClass)#%d (0) { 153: } 154: } 155: -- Testing uasort() with ChildClass objects -- 156: bool(true) 157: array(4) { 158: [2]=> 159: object(ChildClass)#%d (2) { 160: ["child_value"]=> 161: int(15) 162: ["pub_value"]=> 163: NULL 164: } 165: [0]=> 166: object(ChildClass)#%d (2) { 167: ["child_value"]=> 168: int(20) 169: ["pub_value"]=> 170: NULL 171: } 172: [1]=> 173: object(ChildClass)#%d (2) { 174: ["child_value"]=> 175: int(500) 176: ["pub_value"]=> 177: NULL 178: } 179: [3]=> 180: object(ChildClass)#%d (2) { 181: ["child_value"]=> 182: int(700) 183: ["pub_value"]=> 184: NULL 185: } 186: } 187: Done