Annotation of embedaddon/php/ext/standard/tests/array/uasort_object2.phpt, revision 1.1.1.2
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: /*
1.1.1.2 ! misho 11: * This testcase tests uasort() functionality with different objects
1.1 misho 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
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>