@@ -36,19 +36,178 @@ public function testArrayFlatten() {
36
36
}
37
37
38
38
public function testArrayBlend () {
39
- //@todo: I'm not entirely sure how to test this
39
+ // Test blending arrays without specifying keys
40
+ $ arrays = array (
41
+ 'fruits ' => array ('apple ' , 'banana ' , 'cherry ' ),
42
+ 'vegetables ' => array ('carrot ' , 'broccoli ' , 'spinach ' ),
43
+ 'meats ' => array ('chicken ' , 'beef ' , 'pork ' )
44
+ );
45
+
46
+ $ expected = array ('apple ' , 'banana ' , 'cherry ' , 'carrot ' , 'broccoli ' , 'spinach ' , 'chicken ' , 'beef ' , 'pork ' );
47
+ $ this ->assertEquals ($ expected , array_blend ($ arrays ));
48
+
49
+ // Test blending arrays with specific keys
50
+ $ keys = array ('fruits ' , 'meats ' );
51
+ $ expected = array ('apple ' , 'banana ' , 'cherry ' , 'chicken ' , 'beef ' , 'pork ' );
52
+ $ this ->assertEquals ($ expected , array_blend ($ arrays , $ keys ));
53
+
54
+ // Test with empty arrays
55
+ $ arrays = array (
56
+ 'fruits ' => array (),
57
+ 'vegetables ' => array ('carrot ' , 'broccoli ' ),
58
+ 'empty ' => array ()
59
+ );
60
+
61
+ $ expected = array ('carrot ' , 'broccoli ' );
62
+ $ this ->assertEquals ($ expected , array_blend ($ arrays ));
63
+
64
+ // Test with non-array values (should be skipped)
65
+ $ arrays = array (
66
+ 'fruits ' => array ('apple ' , 'banana ' ),
67
+ 'number ' => 42 ,
68
+ 'vegetables ' => array ('carrot ' )
69
+ );
70
+
71
+ $ expected = array ('apple ' , 'banana ' , 'carrot ' );
72
+ $ this ->assertEquals ($ expected , array_blend ($ arrays ));
40
73
}
41
74
42
75
public function testArrayKeyArray () {
43
-
76
+ // Test with numeric keys
77
+ $ arrays = array (
78
+ array ('id ' => 1 , 'name ' => 'John ' , 'role ' => 'Developer ' ),
79
+ array ('id ' => 2 , 'name ' => 'Jane ' , 'role ' => 'Designer ' ),
80
+ array ('id ' => 3 , 'name ' => 'Bob ' , 'role ' => 'Manager ' )
81
+ );
82
+
83
+ $ expected = array (1 , 2 , 3 );
84
+ $ this ->assertEquals ($ expected , array_key_array ($ arrays , 'id ' ));
85
+
86
+ // Test with string keys
87
+ $ expected = array ('John ' , 'Jane ' , 'Bob ' );
88
+ $ this ->assertEquals ($ expected , array_key_array ($ arrays , 'name ' ));
89
+
90
+ // Test with associative array keys
91
+ $ arrays = array (
92
+ 'user1 ' => array ('id ' => 101 , 'name ' => 'Alice ' ),
93
+ 'user2 ' => array ('id ' => 102 , 'name ' => 'Charlie ' ),
94
+ 'user3 ' => array ('id ' => 103 , 'name ' => 'Dave ' )
95
+ );
96
+
97
+ $ expected = array ('user1 ' => 101 , 'user2 ' => 102 , 'user3 ' => 103 );
98
+ $ this ->assertEquals ($ expected , array_key_array ($ arrays , 'id ' ));
99
+
100
+ // Test with mixed content
101
+ $ arrays = array (
102
+ array ('id ' => 201 , 'data ' => 'value1 ' ),
103
+ array ('id ' => 202 , 'data ' => array ('nested ' => 'value2 ' )),
104
+ array ('id ' => 203 , 'data ' => 42 )
105
+ );
106
+
107
+ $ expected = array ('value1 ' , array ('nested ' => 'value2 ' ), 42 );
108
+ $ this ->assertEquals ($ expected , array_key_array ($ arrays , 'data ' ));
44
109
}
45
110
46
111
public function testArrayKeysArray () {
47
-
112
+ // Test with multiple keys
113
+ $ arrays = array (
114
+ array ('id ' => 1 , 'name ' => 'John ' , 'role ' => 'Developer ' , 'age ' => 30 ),
115
+ array ('id ' => 2 , 'name ' => 'Jane ' , 'role ' => 'Designer ' , 'age ' => 28 ),
116
+ array ('id ' => 3 , 'name ' => 'Bob ' , 'role ' => 'Manager ' , 'age ' => 35 )
117
+ );
118
+
119
+ $ keys = array ('id ' , 'name ' );
120
+ $ expected = array (
121
+ array ('id ' => 1 , 'name ' => 'John ' ),
122
+ array ('id ' => 2 , 'name ' => 'Jane ' ),
123
+ array ('id ' => 3 , 'name ' => 'Bob ' )
124
+ );
125
+ $ this ->assertEquals ($ expected , array_keys_array ($ arrays , $ keys ));
126
+
127
+ // Test with a single key (passed as string)
128
+ $ expected = array (
129
+ array ('id ' => 1 ),
130
+ array ('id ' => 2 ),
131
+ array ('id ' => 3 )
132
+ );
133
+ $ this ->assertEquals ($ expected , array_keys_array ($ arrays , 'id ' ));
134
+
135
+ // Test with a single key (passed as array)
136
+ $ this ->assertEquals ($ expected , array_keys_array ($ arrays , array ('id ' )));
137
+
138
+ // Test with associative array keys
139
+ $ arrays = array (
140
+ 'user1 ' => array ('id ' => 101 , 'name ' => 'Alice ' , 'dept ' => 'Engineering ' ),
141
+ 'user2 ' => array ('id ' => 102 , 'name ' => 'Charlie ' , 'dept ' => 'Marketing ' ),
142
+ 'user3 ' => array ('id ' => 103 , 'name ' => 'Dave ' , 'dept ' => 'Sales ' )
143
+ );
144
+
145
+ $ keys = array ('id ' , 'dept ' );
146
+ $ expected = array (
147
+ 'user1 ' => array ('id ' => 101 , 'dept ' => 'Engineering ' ),
148
+ 'user2 ' => array ('id ' => 102 , 'dept ' => 'Marketing ' ),
149
+ 'user3 ' => array ('id ' => 103 , 'dept ' => 'Sales ' )
150
+ );
151
+ $ this ->assertEquals ($ expected , array_keys_array ($ arrays , $ keys ));
48
152
}
49
153
50
154
public function testArrayKeyRefill () {
51
-
155
+ // Test with missing keys and default empty array fill
156
+ $ array = array (
157
+ 'key1 ' => 'value1 ' ,
158
+ 'key3 ' => 'value3 '
159
+ );
160
+
161
+ $ keys = array ('key1 ' , 'key2 ' , 'key3 ' , 'key4 ' );
162
+ $ expected = array (
163
+ 'key1 ' => 'value1 ' ,
164
+ 'key2 ' => array (),
165
+ 'key3 ' => 'value3 ' ,
166
+ 'key4 ' => array ()
167
+ );
168
+
169
+ $ this ->assertEquals ($ expected , array_key_refill ($ array , $ keys ));
170
+
171
+ // Test with custom fill value (string)
172
+ $ expected = array (
173
+ 'key1 ' => 'value1 ' ,
174
+ 'key2 ' => 'default ' ,
175
+ 'key3 ' => 'value3 ' ,
176
+ 'key4 ' => 'default '
177
+ );
178
+
179
+ $ this ->assertEquals ($ expected , array_key_refill ($ array , $ keys , 'default ' ));
180
+
181
+ // Test with custom fill value (number)
182
+ $ expected = array (
183
+ 'key1 ' => 'value1 ' ,
184
+ 'key2 ' => 0 ,
185
+ 'key3 ' => 'value3 ' ,
186
+ 'key4 ' => 0
187
+ );
188
+
189
+ $ this ->assertEquals ($ expected , array_key_refill ($ array , $ keys , 0 ));
190
+
191
+ // Test with custom fill value (array)
192
+ $ fillArray = array ('status ' => 'empty ' );
193
+ $ expected = array (
194
+ 'key1 ' => 'value1 ' ,
195
+ 'key2 ' => $ fillArray ,
196
+ 'key3 ' => 'value3 ' ,
197
+ 'key4 ' => $ fillArray
198
+ );
199
+
200
+ $ this ->assertEquals ($ expected , array_key_refill ($ array , $ keys , $ fillArray ));
201
+
202
+ // Test with no missing keys
203
+ $ array = array (
204
+ 'a ' => 1 ,
205
+ 'b ' => 2 ,
206
+ 'c ' => 3
207
+ );
208
+
209
+ $ keys = array ('a ' , 'b ' , 'c ' );
210
+ $ this ->assertEquals ($ array , array_key_refill ($ array , $ keys , 'unused ' ));
52
211
}
53
212
54
213
0 commit comments