]> granicus.if.org Git - php/blob
7a98e833a3
[php] /
1 --TEST--
2 basename
3 --CREDITS--
4 Dave Kelsey <d_kelsey@uk.ibm.com>
5 --FILE--
6 <?php
7 /*
8  * proto string basename(string path [, string suffix])
9  * Function is implemented in ext/standard/string.c
10  */
11 $file_paths = array (
12   /* simple paths */
13   array("bar"),
14   array("/foo/bar"),
15   array("foo/bar"),
16   array("/bar"),
17
18   /* simple paths with trailing slashes */
19   array("bar/"),
20   array("/bar/"),
21   array("/foo/bar/"),
22   array("foo/bar/"),
23   array("/bar/"),
24
25   /* paths with suffix removal */
26   array("bar.gz", ".gz"),
27   array("bar.gz", "bar.gz"),
28   array("/foo/bar.gz", ".gz"),
29   array("foo/bar.gz", ".gz"),
30   array("/bar.gz", ".gz"),
31
32   /* paths with suffix and trailing slashes with suffix removal*/
33   array("bar.gz/", ".gz"),
34   array("/bar.gz/", ".gz"),
35   array("/foo/bar.gz/", ".gz"),
36   array("foo/bar.gz/", ".gz"),
37   array("/bar.gz/", ".gz"),
38
39   /* paths with basename only suffix, with suffix removal*/
40   array("/.gz", ".gz"),
41   array(".gz", ".gz"),
42   array("/foo/.gz", ".gz"),
43
44   /* paths with basename only suffix & trailing slashes, with suffix removal*/
45   array(".gz/", ".gz"),
46   array("/foo/.gz/", ".gz"),
47   array("foo/.gz/", ".gz"),
48
49   /* paths with binary value to check if the function is binary safe*/
50   array("foo".chr(0)."bar"),
51   array("/foo".chr(0)."bar"),
52   array("/foo".chr(0)."bar/"),
53   array("foo".chr(0)."bar/"),
54   array("foo".chr(0)."bar/test"),
55   array("/foo".chr(0)."bar/bar.gz", ".gz"),
56   array("/foo".chr(0)."bar/bar.gz")
57 );
58
59 $file_path_variations = array (
60   /* paths with shortcut home dir char, with suffix variation */
61   array("~/home/user/bar"),
62   array("~/home/user/bar", ""),
63   array("~/home/user/bar", NULL),
64   array("~/home/user/bar", ' '),
65   array("~/home/user/bar.tar", ".tar"),
66   array("~/home/user/bar.tar", "~"),
67   array("~/home/user/bar.tar/", "~"),
68   array("~/home/user/bar.tar/", ""),
69   array("~/home/user/bar.tar", NULL),
70   array("~/home/user/bar.tar", ''),
71   array("~/home/user/bar.tar", " "),
72
73   /* paths with hostname:dir notation, with suffix variation */
74   array("hostname:/home/usr/bar.tar"),
75   array("hostname:/home/user/bar.tar", "home"),
76   array("hostname:/home/user/tbar.gz", "bar.gz"),
77   array("hostname:/home/user/tbar.gz", "/bar.gz"),
78   array("hostname:/home/user/tbar.gz", "/bar.gz/"),
79   array("hostname:/home/user/tbar.gz/", "/bar.gz/"),
80   array("hostname:/home/user/tbar.gz/", "/bar.gz/"),
81   array("hostname:/home/user/My Pics.gz/", "/bar.gz/"),
82   array("hostname:/home/user/My Pics.gz/", "Pics.gz/"),
83   array("hostname:/home/user/My Pics.gz/", "Pics.gz"),
84   array("hostname:/home/user/My Pics.gz/", ".gz"),
85   array("hostname:/home/user/My Pics.gz/"),
86   array("hostname:/home/user/My Pics.gz/", NULL),
87   array("hostname:/home/user/My Pics.gz/", ' '),
88   array("hostname:/home/user/My Pics.gz/", ''),
89   array("hostname:/home/user/My Pics.gz/", "My Pics.gz"),
90
91   /* paths with numeirc strings */
92   array("10.5"),
93   array("10.5", ".5"),
94   array("10.5", "10.5"),
95   array("10"),
96   array("105", "5"),
97   array("/10.5"),
98   array("10.5/"),
99   array("10/10.gz"),
100   array("0"),
101   array('0'),
102
103   /* paths and suffix given as same */
104   array("bar.gz", "bar.gz"),
105   array("/bar.gz", "/bar.gz"),
106   array("/bar.gz/", "/bar.gz/"),
107   array(" ", " "),
108   array(' ', ' '),
109   array(NULL, NULL),
110
111   /* path with spaces */
112   array(" "),
113   array(' '),
114
115   /* empty paths */
116   array(""),
117   array(''),
118   array(NULL)
119 );
120
121 function check_basename( $path_arrays ) {
122    $loop_counter = 1;
123    foreach ($path_arrays as $path) {
124      echo "\n--Iteration $loop_counter--\n"; $loop_counter++;
125      if( 1 == count($path) ) { // no suffix provided
126        var_dump( basename($path[0]) );
127      } else { // path as well as suffix provided,
128        var_dump( basename($path[0], $path[1]) );
129      }
130    }
131 }
132
133 echo "*** Testing basic operations ***\n";
134 check_basename( $file_paths );
135
136 echo "\n*** Testing possible variations in path and suffix ***\n";
137 check_basename( $file_path_variations );
138
139 echo "Done\n";
140 ?>
141 --EXPECT--
142 *** Testing basic operations ***
143
144 --Iteration 1--
145 string(3) "bar"
146
147 --Iteration 2--
148 string(3) "bar"
149
150 --Iteration 3--
151 string(3) "bar"
152
153 --Iteration 4--
154 string(3) "bar"
155
156 --Iteration 5--
157 string(3) "bar"
158
159 --Iteration 6--
160 string(3) "bar"
161
162 --Iteration 7--
163 string(3) "bar"
164
165 --Iteration 8--
166 string(3) "bar"
167
168 --Iteration 9--
169 string(3) "bar"
170
171 --Iteration 10--
172 string(3) "bar"
173
174 --Iteration 11--
175 string(6) "bar.gz"
176
177 --Iteration 12--
178 string(3) "bar"
179
180 --Iteration 13--
181 string(3) "bar"
182
183 --Iteration 14--
184 string(3) "bar"
185
186 --Iteration 15--
187 string(3) "bar"
188
189 --Iteration 16--
190 string(3) "bar"
191
192 --Iteration 17--
193 string(3) "bar"
194
195 --Iteration 18--
196 string(3) "bar"
197
198 --Iteration 19--
199 string(3) "bar"
200
201 --Iteration 20--
202 string(3) ".gz"
203
204 --Iteration 21--
205 string(3) ".gz"
206
207 --Iteration 22--
208 string(3) ".gz"
209
210 --Iteration 23--
211 string(3) ".gz"
212
213 --Iteration 24--
214 string(3) ".gz"
215
216 --Iteration 25--
217 string(3) ".gz"
218
219 --Iteration 26--
220 string(7) "foo\0bar"
221
222 --Iteration 27--
223 string(7) "foo\0bar"
224
225 --Iteration 28--
226 string(7) "foo\0bar"
227
228 --Iteration 29--
229 string(7) "foo\0bar"
230
231 --Iteration 30--
232 string(4) "test"
233
234 --Iteration 31--
235 string(3) "bar"
236
237 --Iteration 32--
238 string(6) "bar.gz"
239
240 *** Testing possible variations in path and suffix ***
241
242 --Iteration 1--
243 string(3) "bar"
244
245 --Iteration 2--
246 string(3) "bar"
247
248 --Iteration 3--
249 string(3) "bar"
250
251 --Iteration 4--
252 string(3) "bar"
253
254 --Iteration 5--
255 string(3) "bar"
256
257 --Iteration 6--
258 string(7) "bar.tar"
259
260 --Iteration 7--
261 string(7) "bar.tar"
262
263 --Iteration 8--
264 string(7) "bar.tar"
265
266 --Iteration 9--
267 string(7) "bar.tar"
268
269 --Iteration 10--
270 string(7) "bar.tar"
271
272 --Iteration 11--
273 string(7) "bar.tar"
274
275 --Iteration 12--
276 string(7) "bar.tar"
277
278 --Iteration 13--
279 string(7) "bar.tar"
280
281 --Iteration 14--
282 string(1) "t"
283
284 --Iteration 15--
285 string(7) "tbar.gz"
286
287 --Iteration 16--
288 string(7) "tbar.gz"
289
290 --Iteration 17--
291 string(7) "tbar.gz"
292
293 --Iteration 18--
294 string(7) "tbar.gz"
295
296 --Iteration 19--
297 string(10) "My Pics.gz"
298
299 --Iteration 20--
300 string(10) "My Pics.gz"
301
302 --Iteration 21--
303 string(3) "My "
304
305 --Iteration 22--
306 string(7) "My Pics"
307
308 --Iteration 23--
309 string(10) "My Pics.gz"
310
311 --Iteration 24--
312 string(10) "My Pics.gz"
313
314 --Iteration 25--
315 string(10) "My Pics.gz"
316
317 --Iteration 26--
318 string(10) "My Pics.gz"
319
320 --Iteration 27--
321 string(10) "My Pics.gz"
322
323 --Iteration 28--
324 string(4) "10.5"
325
326 --Iteration 29--
327 string(2) "10"
328
329 --Iteration 30--
330 string(4) "10.5"
331
332 --Iteration 31--
333 string(2) "10"
334
335 --Iteration 32--
336 string(2) "10"
337
338 --Iteration 33--
339 string(4) "10.5"
340
341 --Iteration 34--
342 string(4) "10.5"
343
344 --Iteration 35--
345 string(5) "10.gz"
346
347 --Iteration 36--
348 string(1) "0"
349
350 --Iteration 37--
351 string(1) "0"
352
353 --Iteration 38--
354 string(6) "bar.gz"
355
356 --Iteration 39--
357 string(6) "bar.gz"
358
359 --Iteration 40--
360 string(6) "bar.gz"
361
362 --Iteration 41--
363 string(1) " "
364
365 --Iteration 42--
366 string(1) " "
367
368 --Iteration 43--
369 string(0) ""
370
371 --Iteration 44--
372 string(1) " "
373
374 --Iteration 45--
375 string(1) " "
376
377 --Iteration 46--
378 string(0) ""
379
380 --Iteration 47--
381 string(0) ""
382
383 --Iteration 48--
384 string(0) ""
385 Done