Annotation of embedaddon/php/ext/standard/tests/array/usort_object1.phpt, revision 1.1.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>