basename-win32.phpt 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. --TEST--
  2. basename
  3. --CREDITS--
  4. Dave Kelsey <d_kelsey@uk.ibm.com>
  5. --SKIPIF--
  6. <?php
  7. if (substr(PHP_OS, 0, 3) != 'WIN') {
  8. die('skip Windows only basename tests');
  9. }
  10. ?>
  11. --FILE--
  12. <?php
  13. /*
  14. * proto string basename(string path [, string suffix])
  15. * Function is implemented in ext/standard/string.c
  16. */
  17. $file_paths = array (
  18. /* simple paths */
  19. array("bar"),
  20. array("\\foo\\bar"),
  21. array("foo\\bar"),
  22. array("\\bar"),
  23. /* simple paths with trailing slashes */
  24. array("bar\\"),
  25. array("\\bar\\"),
  26. array("\\foo\\bar\\"),
  27. array("foo\\bar\\"),
  28. array("\\bar\\"),
  29. /* paths with suffix removal */
  30. array("bar.zip", ".zip"),
  31. array("bar.zip", "bar.zip"),
  32. array("\\foo\\bar.zip", ".zip"),
  33. array("foo\\bar.zip", ".zip"),
  34. array("\\bar.zip", ".zip"),
  35. /* paths with suffix and trailing slashes with suffix removal*/
  36. array("bar.zip\\", ".zip"),
  37. array("\\bar.zip\\", ".zip"),
  38. array("\\foo\\bar.zip\\", ".zip"),
  39. array("foo\\bar.zip\\", ".zip"),
  40. array("\\bar.zip\\", ".zip"),
  41. /* paths with basename only suffix, with suffix removal*/
  42. array("\\.zip", ".zip"),
  43. array(".zip", ".zip"),
  44. array("\\foo\\.zip", ".zip"),
  45. /* paths with basename only suffix & trailing slashes, with suffix removal*/
  46. array(".zip\\", ".zip"),
  47. array("\\foo\\.zip\\", ".zip"),
  48. array("foo\\.zip\\", ".zip"),
  49. );
  50. $file_path_variations = array (
  51. /* paths with shortcut home dir char, with suffix variation */
  52. array("C:\\temp\\bar"),
  53. array("C:\\temp\\bar", ""),
  54. array("C:\\temp\\bar", NULL),
  55. array("C:\\temp\\bar", ' '),
  56. array("C:\\temp\\bar.tar", ".tar"),
  57. array("C:\\temp\\bar.tar", "~"),
  58. array("C:\\temp\\bar.tar\\", "~"),
  59. array("C:\\temp\\bar.tar\\", ""),
  60. array("C:\\temp\\bar.tar", NULL),
  61. array("C:\\temp\\bar.tar", ''),
  62. array("C:\\temp\\bar.tar", " "),
  63. /* paths with numeric strings */
  64. array("10.5"),
  65. array("10.5", ".5"),
  66. array("10.5", "10.5"),
  67. array("10"),
  68. array("105", "5"),
  69. array("/10.5"),
  70. array("10.5\\"),
  71. array("10/10.zip"),
  72. array("0"),
  73. array('0'),
  74. /* paths and suffix given as same */
  75. array("bar.zip", "bar.zip"),
  76. array("\\bar.zip", "\\bar.zip"),
  77. array("\\bar.zip\\", "\\bar.zip\\"),
  78. array(" ", " "),
  79. array(' ', ' '),
  80. array(NULL, NULL),
  81. /* path with spaces */
  82. array(" "),
  83. array(' '),
  84. /* empty paths */
  85. array(""),
  86. array(''),
  87. array(NULL)
  88. );
  89. function check_basename( $path_arrays ) {
  90. $loop_counter = 1;
  91. foreach ($path_arrays as $path) {
  92. echo "\n--Iteration $loop_counter--\n"; $loop_counter++;
  93. if( 1 == count($path) ) { // no suffix provided
  94. var_dump( basename($path[0]) );
  95. } else { // path as well as suffix provided,
  96. var_dump( basename($path[0], $path[1]) );
  97. }
  98. }
  99. }
  100. echo "*** Testing basic operations ***\n";
  101. check_basename( $file_paths );
  102. echo "\n*** Testing possible variations in path and suffix ***\n";
  103. check_basename( $file_path_variations );
  104. echo "\n*** Testing error conditions ***\n";
  105. // zero arguments
  106. var_dump( basename() );
  107. // more than expected no. of arguments
  108. var_dump( basename("\\blah\\tmp\\bar.zip", ".zip", ".zip") );
  109. // passing invalid type arguments
  110. $object = new stdclass;
  111. var_dump( basename( array("string\\bar") ) );
  112. var_dump( basename( array("string\\bar"), "bar" ) );
  113. var_dump( basename( "bar", array("string\\bar") ) );
  114. var_dump( basename( $object, "bar" ) );
  115. var_dump( basename( $object ) );
  116. var_dump( basename( $object, $object ) );
  117. var_dump( basename( "bar", $object ) );
  118. echo "Done\n";
  119. ?>
  120. --EXPECTF--
  121. *** Testing basic operations ***
  122. --Iteration 1--
  123. string(3) "bar"
  124. --Iteration 2--
  125. string(3) "bar"
  126. --Iteration 3--
  127. string(3) "bar"
  128. --Iteration 4--
  129. string(3) "bar"
  130. --Iteration 5--
  131. string(3) "bar"
  132. --Iteration 6--
  133. string(3) "bar"
  134. --Iteration 7--
  135. string(3) "bar"
  136. --Iteration 8--
  137. string(3) "bar"
  138. --Iteration 9--
  139. string(3) "bar"
  140. --Iteration 10--
  141. string(3) "bar"
  142. --Iteration 11--
  143. string(7) "bar.zip"
  144. --Iteration 12--
  145. string(3) "bar"
  146. --Iteration 13--
  147. string(3) "bar"
  148. --Iteration 14--
  149. string(3) "bar"
  150. --Iteration 15--
  151. string(3) "bar"
  152. --Iteration 16--
  153. string(3) "bar"
  154. --Iteration 17--
  155. string(3) "bar"
  156. --Iteration 18--
  157. string(3) "bar"
  158. --Iteration 19--
  159. string(3) "bar"
  160. --Iteration 20--
  161. string(4) ".zip"
  162. --Iteration 21--
  163. string(4) ".zip"
  164. --Iteration 22--
  165. string(4) ".zip"
  166. --Iteration 23--
  167. string(4) ".zip"
  168. --Iteration 24--
  169. string(4) ".zip"
  170. --Iteration 25--
  171. string(4) ".zip"
  172. *** Testing possible variations in path and suffix ***
  173. --Iteration 1--
  174. string(3) "bar"
  175. --Iteration 2--
  176. string(3) "bar"
  177. --Iteration 3--
  178. string(3) "bar"
  179. --Iteration 4--
  180. string(3) "bar"
  181. --Iteration 5--
  182. string(3) "bar"
  183. --Iteration 6--
  184. string(7) "bar.tar"
  185. --Iteration 7--
  186. string(7) "bar.tar"
  187. --Iteration 8--
  188. string(7) "bar.tar"
  189. --Iteration 9--
  190. string(7) "bar.tar"
  191. --Iteration 10--
  192. string(7) "bar.tar"
  193. --Iteration 11--
  194. string(7) "bar.tar"
  195. --Iteration 12--
  196. string(4) "10.5"
  197. --Iteration 13--
  198. string(2) "10"
  199. --Iteration 14--
  200. string(4) "10.5"
  201. --Iteration 15--
  202. string(2) "10"
  203. --Iteration 16--
  204. string(2) "10"
  205. --Iteration 17--
  206. string(4) "10.5"
  207. --Iteration 18--
  208. string(4) "10.5"
  209. --Iteration 19--
  210. string(6) "10.zip"
  211. --Iteration 20--
  212. string(1) "0"
  213. --Iteration 21--
  214. string(1) "0"
  215. --Iteration 22--
  216. string(7) "bar.zip"
  217. --Iteration 23--
  218. string(7) "bar.zip"
  219. --Iteration 24--
  220. string(7) "bar.zip"
  221. --Iteration 25--
  222. string(1) " "
  223. --Iteration 26--
  224. string(1) " "
  225. --Iteration 27--
  226. string(0) ""
  227. --Iteration 28--
  228. string(1) " "
  229. --Iteration 29--
  230. string(1) " "
  231. --Iteration 30--
  232. string(0) ""
  233. --Iteration 31--
  234. string(0) ""
  235. --Iteration 32--
  236. string(0) ""
  237. *** Testing error conditions ***
  238. Warning: basename() expects at least 1 parameter, 0 given in %s on line %d
  239. NULL
  240. Warning: basename() expects at most 2 parameters, 3 given in %s on line %d
  241. NULL
  242. Warning: basename() expects parameter 1 to be string, array given in %s on line %d
  243. NULL
  244. Warning: basename() expects parameter 1 to be string, array given in %s on line %d
  245. NULL
  246. Warning: basename() expects parameter 2 to be string, array given in %s on line %d
  247. NULL
  248. Warning: basename() expects parameter 1 to be string, object given in %s on line %d
  249. NULL
  250. Warning: basename() expects parameter 1 to be string, object given in %s on line %d
  251. NULL
  252. Warning: basename() expects parameter 1 to be string, object given in %s on line %d
  253. NULL
  254. Warning: basename() expects parameter 2 to be string, object given in %s on line %d
  255. NULL
  256. Done