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