basename.phpt 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  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. /* simple paths with trailing slashes */
  18. array("bar/"),
  19. array("/bar/"),
  20. array("/foo/bar/"),
  21. array("foo/bar/"),
  22. array("/bar/"),
  23. /* paths with suffix removal */
  24. array("bar.gz", ".gz"),
  25. array("bar.gz", "bar.gz"),
  26. array("/foo/bar.gz", ".gz"),
  27. array("foo/bar.gz", ".gz"),
  28. array("/bar.gz", ".gz"),
  29. /* paths with suffix and trailing slashes with suffix removal*/
  30. array("bar.gz/", ".gz"),
  31. array("/bar.gz/", ".gz"),
  32. array("/foo/bar.gz/", ".gz"),
  33. array("foo/bar.gz/", ".gz"),
  34. array("/bar.gz/", ".gz"),
  35. /* paths with basename only suffix, with suffix removal*/
  36. array("/.gz", ".gz"),
  37. array(".gz", ".gz"),
  38. array("/foo/.gz", ".gz"),
  39. /* paths with basename only suffix & trailing slashes, with suffix removal*/
  40. array(".gz/", ".gz"),
  41. array("/foo/.gz/", ".gz"),
  42. array("foo/.gz/", ".gz"),
  43. /* paths with binary value to check if the function is binary safe*/
  44. array("foo".chr(0)."bar"),
  45. array("/foo".chr(0)."bar"),
  46. array("/foo".chr(0)."bar/"),
  47. array("foo".chr(0)."bar/"),
  48. array("foo".chr(0)."bar/test"),
  49. array("/foo".chr(0)."bar/bar.gz", ".gz"),
  50. array("/foo".chr(0)."bar/bar.gz")
  51. );
  52. $file_path_variations = array (
  53. /* paths with shortcut home dir char, with suffix variation */
  54. array("~/home/user/bar"),
  55. array("~/home/user/bar", ""),
  56. array("~/home/user/bar", NULL),
  57. array("~/home/user/bar", ' '),
  58. array("~/home/user/bar.tar", ".tar"),
  59. array("~/home/user/bar.tar", "~"),
  60. array("~/home/user/bar.tar/", "~"),
  61. array("~/home/user/bar.tar/", ""),
  62. array("~/home/user/bar.tar", NULL),
  63. array("~/home/user/bar.tar", ''),
  64. array("~/home/user/bar.tar", " "),
  65. /* paths with hostname:dir notation, with suffix variation */
  66. array("hostname:/home/usr/bar.tar"),
  67. array("hostname:/home/user/bar.tar", "home"),
  68. array("hostname:/home/user/tbar.gz", "bar.gz"),
  69. array("hostname:/home/user/tbar.gz", "/bar.gz"),
  70. array("hostname:/home/user/tbar.gz", "/bar.gz/"),
  71. array("hostname:/home/user/tbar.gz/", "/bar.gz/"),
  72. array("hostname:/home/user/tbar.gz/", "/bar.gz/"),
  73. array("hostname:/home/user/My Pics.gz/", "/bar.gz/"),
  74. array("hostname:/home/user/My Pics.gz/", "Pics.gz/"),
  75. array("hostname:/home/user/My Pics.gz/", "Pics.gz"),
  76. array("hostname:/home/user/My Pics.gz/", ".gz"),
  77. array("hostname:/home/user/My Pics.gz/"),
  78. array("hostname:/home/user/My Pics.gz/", NULL),
  79. array("hostname:/home/user/My Pics.gz/", ' '),
  80. array("hostname:/home/user/My Pics.gz/", ''),
  81. array("hostname:/home/user/My Pics.gz/", "My Pics.gz"),
  82. /* paths with numeirc strings */
  83. array("10.5"),
  84. array("10.5", ".5"),
  85. array("10.5", "10.5"),
  86. array("10"),
  87. array("105", "5"),
  88. array("/10.5"),
  89. array("10.5/"),
  90. array("10/10.gz"),
  91. array("0"),
  92. array('0'),
  93. /* paths and suffix given as same */
  94. array("bar.gz", "bar.gz"),
  95. array("/bar.gz", "/bar.gz"),
  96. array("/bar.gz/", "/bar.gz/"),
  97. array(" ", " "),
  98. array(' ', ' '),
  99. array(NULL, NULL),
  100. /* path with spaces */
  101. array(" "),
  102. array(' '),
  103. /* empty paths */
  104. array(""),
  105. array(''),
  106. array(NULL)
  107. );
  108. function check_basename( $path_arrays ) {
  109. $loop_counter = 1;
  110. foreach ($path_arrays as $path) {
  111. echo "\n--Iteration $loop_counter--\n"; $loop_counter++;
  112. if( 1 == count($path) ) { // no suffix provided
  113. var_dump( basename($path[0]) );
  114. } else { // path as well as suffix provided,
  115. var_dump( basename($path[0], $path[1]) );
  116. }
  117. }
  118. }
  119. echo "*** Testing basic operations ***\n";
  120. check_basename( $file_paths );
  121. echo "\n*** Testing possible variations in path and suffix ***\n";
  122. check_basename( $file_path_variations );
  123. echo "\n*** Testing error conditions ***\n";
  124. // zero arguments
  125. var_dump( basename() );
  126. // more than expected no. of arguments
  127. var_dump( basename("/var/tmp/bar.gz", ".gz", ".gz") );
  128. // passing invalid type arguments
  129. $object = new stdclass;
  130. var_dump( basename( array("string/bar") ) );
  131. var_dump( basename( array("string/bar"), "bar" ) );
  132. var_dump( basename( "bar", array("string/bar") ) );
  133. var_dump( basename( $object, "bar" ) );
  134. var_dump( basename( $object ) );
  135. var_dump( basename( $object, $object ) );
  136. var_dump( basename( "bar", $object ) );
  137. echo "Done\n";
  138. ?>
  139. --EXPECTF--
  140. *** Testing basic operations ***
  141. --Iteration 1--
  142. string(3) "bar"
  143. --Iteration 2--
  144. string(3) "bar"
  145. --Iteration 3--
  146. string(3) "bar"
  147. --Iteration 4--
  148. string(3) "bar"
  149. --Iteration 5--
  150. string(3) "bar"
  151. --Iteration 6--
  152. string(3) "bar"
  153. --Iteration 7--
  154. string(3) "bar"
  155. --Iteration 8--
  156. string(3) "bar"
  157. --Iteration 9--
  158. string(3) "bar"
  159. --Iteration 10--
  160. string(3) "bar"
  161. --Iteration 11--
  162. string(6) "bar.gz"
  163. --Iteration 12--
  164. string(3) "bar"
  165. --Iteration 13--
  166. string(3) "bar"
  167. --Iteration 14--
  168. string(3) "bar"
  169. --Iteration 15--
  170. string(3) "bar"
  171. --Iteration 16--
  172. string(3) "bar"
  173. --Iteration 17--
  174. string(3) "bar"
  175. --Iteration 18--
  176. string(3) "bar"
  177. --Iteration 19--
  178. string(3) "bar"
  179. --Iteration 20--
  180. string(3) ".gz"
  181. --Iteration 21--
  182. string(3) ".gz"
  183. --Iteration 22--
  184. string(3) ".gz"
  185. --Iteration 23--
  186. string(3) ".gz"
  187. --Iteration 24--
  188. string(3) ".gz"
  189. --Iteration 25--
  190. string(3) ".gz"
  191. --Iteration 26--
  192. string(7) "foo�bar"
  193. --Iteration 27--
  194. string(7) "foo�bar"
  195. --Iteration 28--
  196. string(7) "foo�bar"
  197. --Iteration 29--
  198. string(7) "foo�bar"
  199. --Iteration 30--
  200. string(4) "test"
  201. --Iteration 31--
  202. string(3) "bar"
  203. --Iteration 32--
  204. string(6) "bar.gz"
  205. *** Testing possible variations in path and suffix ***
  206. --Iteration 1--
  207. string(3) "bar"
  208. --Iteration 2--
  209. string(3) "bar"
  210. --Iteration 3--
  211. string(3) "bar"
  212. --Iteration 4--
  213. string(3) "bar"
  214. --Iteration 5--
  215. string(3) "bar"
  216. --Iteration 6--
  217. string(7) "bar.tar"
  218. --Iteration 7--
  219. string(7) "bar.tar"
  220. --Iteration 8--
  221. string(7) "bar.tar"
  222. --Iteration 9--
  223. string(7) "bar.tar"
  224. --Iteration 10--
  225. string(7) "bar.tar"
  226. --Iteration 11--
  227. string(7) "bar.tar"
  228. --Iteration 12--
  229. string(7) "bar.tar"
  230. --Iteration 13--
  231. string(7) "bar.tar"
  232. --Iteration 14--
  233. string(1) "t"
  234. --Iteration 15--
  235. string(7) "tbar.gz"
  236. --Iteration 16--
  237. string(7) "tbar.gz"
  238. --Iteration 17--
  239. string(7) "tbar.gz"
  240. --Iteration 18--
  241. string(7) "tbar.gz"
  242. --Iteration 19--
  243. string(10) "My Pics.gz"
  244. --Iteration 20--
  245. string(10) "My Pics.gz"
  246. --Iteration 21--
  247. string(3) "My "
  248. --Iteration 22--
  249. string(7) "My Pics"
  250. --Iteration 23--
  251. string(10) "My Pics.gz"
  252. --Iteration 24--
  253. string(10) "My Pics.gz"
  254. --Iteration 25--
  255. string(10) "My Pics.gz"
  256. --Iteration 26--
  257. string(10) "My Pics.gz"
  258. --Iteration 27--
  259. string(10) "My Pics.gz"
  260. --Iteration 28--
  261. string(4) "10.5"
  262. --Iteration 29--
  263. string(2) "10"
  264. --Iteration 30--
  265. string(4) "10.5"
  266. --Iteration 31--
  267. string(2) "10"
  268. --Iteration 32--
  269. string(2) "10"
  270. --Iteration 33--
  271. string(4) "10.5"
  272. --Iteration 34--
  273. string(4) "10.5"
  274. --Iteration 35--
  275. string(5) "10.gz"
  276. --Iteration 36--
  277. string(1) "0"
  278. --Iteration 37--
  279. string(1) "0"
  280. --Iteration 38--
  281. string(6) "bar.gz"
  282. --Iteration 39--
  283. string(6) "bar.gz"
  284. --Iteration 40--
  285. string(6) "bar.gz"
  286. --Iteration 41--
  287. string(1) " "
  288. --Iteration 42--
  289. string(1) " "
  290. --Iteration 43--
  291. string(0) ""
  292. --Iteration 44--
  293. string(1) " "
  294. --Iteration 45--
  295. string(1) " "
  296. --Iteration 46--
  297. string(0) ""
  298. --Iteration 47--
  299. string(0) ""
  300. --Iteration 48--
  301. string(0) ""
  302. *** Testing error conditions ***
  303. Warning: basename() expects at least 1 parameter, 0 given in %s on line %d
  304. NULL
  305. Warning: basename() expects at most 2 parameters, 3 given in %s on line %d
  306. NULL
  307. Warning: basename() expects parameter 1 to be string, array given in %s on line %d
  308. NULL
  309. Warning: basename() expects parameter 1 to be string, array given in %s on line %d
  310. NULL
  311. Warning: basename() expects parameter 2 to be string, array given in %s on line %d
  312. NULL
  313. Warning: basename() expects parameter 1 to be string, object given in %s on line %d
  314. NULL
  315. Warning: basename() expects parameter 1 to be string, object given in %s on line %d
  316. NULL
  317. Warning: basename() expects parameter 1 to be string, object given in %s on line %d
  318. NULL
  319. Warning: basename() expects parameter 2 to be string, object given in %s on line %d
  320. NULL
  321. Done