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>