Annotation of embedaddon/php/ext/standard/tests/file/basename.phpt, revision 1.1.1.1
1.1 misho 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 "\n*** Testing error conditions ***\n";
140: // zero arguments
141: var_dump( basename() );
142:
143: // more than expected no. of arguments
144: var_dump( basename("/var/tmp/bar.gz", ".gz", ".gz") );
145:
146: // passing invalid type arguments
147: $object = new stdclass;
148: var_dump( basename( array("string/bar") ) );
149: var_dump( basename( array("string/bar"), "bar" ) );
150: var_dump( basename( "bar", array("string/bar") ) );
151: var_dump( basename( $object, "bar" ) );
152: var_dump( basename( $object ) );
153: var_dump( basename( $object, $object ) );
154: var_dump( basename( "bar", $object ) );
155:
156: echo "Done\n";
157: ?>
158: --EXPECTF--
159: *** Testing basic operations ***
160:
161: --Iteration 1--
162: string(3) "bar"
163:
164: --Iteration 2--
165: string(3) "bar"
166:
167: --Iteration 3--
168: string(3) "bar"
169:
170: --Iteration 4--
171: string(3) "bar"
172:
173: --Iteration 5--
174: string(3) "bar"
175:
176: --Iteration 6--
177: string(3) "bar"
178:
179: --Iteration 7--
180: string(3) "bar"
181:
182: --Iteration 8--
183: string(3) "bar"
184:
185: --Iteration 9--
186: string(3) "bar"
187:
188: --Iteration 10--
189: string(3) "bar"
190:
191: --Iteration 11--
192: string(6) "bar.gz"
193:
194: --Iteration 12--
195: string(3) "bar"
196:
197: --Iteration 13--
198: string(3) "bar"
199:
200: --Iteration 14--
201: string(3) "bar"
202:
203: --Iteration 15--
204: string(3) "bar"
205:
206: --Iteration 16--
207: string(3) "bar"
208:
209: --Iteration 17--
210: string(3) "bar"
211:
212: --Iteration 18--
213: string(3) "bar"
214:
215: --Iteration 19--
216: string(3) "bar"
217:
218: --Iteration 20--
219: string(3) ".gz"
220:
221: --Iteration 21--
222: string(3) ".gz"
223:
224: --Iteration 22--
225: string(3) ".gz"
226:
227: --Iteration 23--
228: string(3) ".gz"
229:
230: --Iteration 24--
231: string(3) ".gz"
232:
233: --Iteration 25--
234: string(3) ".gz"
235:
236: --Iteration 26--
237: string(7) "foo bar"
238:
239: --Iteration 27--
240: string(7) "foo bar"
241:
242: --Iteration 28--
243: string(7) "foo bar"
244:
245: --Iteration 29--
246: string(7) "foo bar"
247:
248: --Iteration 30--
249: string(4) "test"
250:
251: --Iteration 31--
252: string(3) "bar"
253:
254: --Iteration 32--
255: string(6) "bar.gz"
256:
257: *** Testing possible variations in path and suffix ***
258:
259: --Iteration 1--
260: string(3) "bar"
261:
262: --Iteration 2--
263: string(3) "bar"
264:
265: --Iteration 3--
266: string(3) "bar"
267:
268: --Iteration 4--
269: string(3) "bar"
270:
271: --Iteration 5--
272: string(3) "bar"
273:
274: --Iteration 6--
275: string(7) "bar.tar"
276:
277: --Iteration 7--
278: string(7) "bar.tar"
279:
280: --Iteration 8--
281: string(7) "bar.tar"
282:
283: --Iteration 9--
284: string(7) "bar.tar"
285:
286: --Iteration 10--
287: string(7) "bar.tar"
288:
289: --Iteration 11--
290: string(7) "bar.tar"
291:
292: --Iteration 12--
293: string(7) "bar.tar"
294:
295: --Iteration 13--
296: string(7) "bar.tar"
297:
298: --Iteration 14--
299: string(1) "t"
300:
301: --Iteration 15--
302: string(7) "tbar.gz"
303:
304: --Iteration 16--
305: string(7) "tbar.gz"
306:
307: --Iteration 17--
308: string(7) "tbar.gz"
309:
310: --Iteration 18--
311: string(7) "tbar.gz"
312:
313: --Iteration 19--
314: string(10) "My Pics.gz"
315:
316: --Iteration 20--
317: string(10) "My Pics.gz"
318:
319: --Iteration 21--
320: string(3) "My "
321:
322: --Iteration 22--
323: string(7) "My Pics"
324:
325: --Iteration 23--
326: string(10) "My Pics.gz"
327:
328: --Iteration 24--
329: string(10) "My Pics.gz"
330:
331: --Iteration 25--
332: string(10) "My Pics.gz"
333:
334: --Iteration 26--
335: string(10) "My Pics.gz"
336:
337: --Iteration 27--
338: string(10) "My Pics.gz"
339:
340: --Iteration 28--
341: string(4) "10.5"
342:
343: --Iteration 29--
344: string(2) "10"
345:
346: --Iteration 30--
347: string(4) "10.5"
348:
349: --Iteration 31--
350: string(2) "10"
351:
352: --Iteration 32--
353: string(2) "10"
354:
355: --Iteration 33--
356: string(4) "10.5"
357:
358: --Iteration 34--
359: string(4) "10.5"
360:
361: --Iteration 35--
362: string(5) "10.gz"
363:
364: --Iteration 36--
365: string(1) "0"
366:
367: --Iteration 37--
368: string(1) "0"
369:
370: --Iteration 38--
371: string(6) "bar.gz"
372:
373: --Iteration 39--
374: string(6) "bar.gz"
375:
376: --Iteration 40--
377: string(6) "bar.gz"
378:
379: --Iteration 41--
380: string(1) " "
381:
382: --Iteration 42--
383: string(1) " "
384:
385: --Iteration 43--
386: string(0) ""
387:
388: --Iteration 44--
389: string(1) " "
390:
391: --Iteration 45--
392: string(1) " "
393:
394: --Iteration 46--
395: string(0) ""
396:
397: --Iteration 47--
398: string(0) ""
399:
400: --Iteration 48--
401: string(0) ""
402:
403: *** Testing error conditions ***
404:
405: Warning: basename() expects at least 1 parameter, 0 given in %s on line %d
406: NULL
407:
408: Warning: basename() expects at most 2 parameters, 3 given in %s on line %d
409: NULL
410:
411: Warning: basename() expects parameter 1 to be string, array given in %s on line %d
412: NULL
413:
414: Warning: basename() expects parameter 1 to be string, array given in %s on line %d
415: NULL
416:
417: Warning: basename() expects parameter 2 to be string, array given in %s on line %d
418: NULL
419:
420: Warning: basename() expects parameter 1 to be string, object given in %s on line %d
421: NULL
422:
423: Warning: basename() expects parameter 1 to be string, object given in %s on line %d
424: NULL
425:
426: Warning: basename() expects parameter 1 to be string, object given in %s on line %d
427: NULL
428:
429: Warning: basename() expects parameter 2 to be string, object given in %s on line %d
430: NULL
431: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>