1 package net.javacoding.jspider.core.util; 2 3 import junit.framework.TestCase; 4 5 import java.net.URL ; 6 7 10 public class URLUtilTest extends TestCase { 11 12 public URLUtilTest ( ) { 13 super ( "URLUtilTest" ); 14 } 15 16 protected void setUp() throws Exception { 17 super.setUp(); 18 } 19 20 public void testNormalizeNullURL ( ) throws Exception { 21 URL normalized = URLUtil.normalize(null); 22 assertNull ( "null URL normalization didn't return null", normalized); 23 } 24 25 public void testNormalizeSimpleURL ( ) throws Exception { 26 URL original = new URL ("http://j-spider.sourceforge.net"); 27 URL expected = original; 28 URL normalized = URLUtil.normalize(original); 29 30 boolean equals = normalized.equals(expected); 31 32 assertTrue ( "simple URL normalization didn't return the same url", equals); 33 } 34 35 public void testNormalizeURLWithBackSlashes ( ) throws Exception { 36 URL original = new URL ("http://j-spider.sourceforge.net/folder\\subfolder\\test/index.html"); 37 URL expected = new URL ("http://j-spider.sourceforge.net/folder/subfolder/test/index.html"); 38 URL normalized = URLUtil.normalize(original); 39 40 boolean equals = normalized.equals(expected); 41 42 assertTrue ( "simple URL normalization didn't return the same url", equals); 43 } 44 45 public void testNormalizeURLWithParams ( ) throws Exception { 46 URL original = new URL ("http://j-spider.sourceforge.net/index.html?param1=value1¶m2=value2"); 47 URL expected = new URL ("http://j-spider.sourceforge.net/index.html"); 48 URL normalized = URLUtil.normalize(original); 49 50 boolean equals = normalized.equals(expected); 51 52 assertTrue ( "simple URL normalization didn't return the same url", equals); 53 } 54 55 public void testNormalizeURLWithFolderAndParams ( ) throws Exception { 56 URL original = new URL ("http://j-spider.sourceforge.net/manual?param1=value1¶m2=value2"); 57 URL expected = new URL ("http://j-spider.sourceforge.net/manual"); 58 URL normalized = URLUtil.normalize(original); 59 60 boolean equals = normalized.equals(expected); 61 62 assertTrue ( "simple URL normalization didn't return the same url", equals); 63 } 64 65 public void testNormalizeURLWithFolderAndTrailingSlashAndParams ( ) throws Exception { 66 URL original = new URL ("http://j-spider.sourceforge.net/manual/?param1=value1¶m2=value2"); 67 URL expected = new URL ("http://j-spider.sourceforge.net/manual/"); 68 URL normalized = URLUtil.normalize(original); 69 70 boolean equals = normalized.equals(expected); 71 72 assertTrue ( "simple URL normalization didn't return the same url", equals); 73 } 74 75 public void testNormalizeSingleDotFolder ( ) throws Exception { 76 URL original = new URL ("http://j-spider.sourceforge.net/folder/./subfolder"); 77 URL expected = new URL ("http://j-spider.sourceforge.net/folder/subfolder"); 78 URL normalized = URLUtil.normalize(original); 79 80 boolean equals = normalized.equals(expected); 81 82 assertTrue ( "URL with single dot folder normalization failed", equals); 83 } 84 85 public void testNormalizeMultipleDotFolder ( ) throws Exception { 86 URL original = new URL ("http://j-spider.sourceforge.net/./folder/./subfolder/./a"); 87 URL expected = new URL ("http://j-spider.sourceforge.net/folder/subfolder/a"); 88 URL normalized = URLUtil.normalize(original); 89 90 boolean equals = normalized.equals(expected); 91 92 assertTrue ( "URL with single dot folder normalization failed", equals); 93 } 94 95 public void testNormalizeTrailingSlash ( ) throws Exception { 96 URL original = new URL ("http://j-spider.sourceforge.net/"); 97 URL expected = new URL ("http://j-spider.sourceforge.net/"); 98 URL normalized = URLUtil.normalize(original); 99 100 boolean equals = normalized.equals(expected); 101 102 assertTrue ( "URL with trailing slash did not normalize well", equals); 103 } 104 105 public void testNormalizeCombinedFunctionality ( ) throws Exception { 106 URL original = new URL ("http://j-spider.sourceforge.net/./folder/./subfolder/./"); 108 URL expected = new URL ("http://j-spider.sourceforge.net/folder/subfolder/"); 109 URL normalized = URLUtil.normalize(original); 110 111 boolean equals = normalized.equals(expected); 112 113 assertTrue ( "URL with many flows normalize failed", equals); 114 } 115 116 public void testSiteURLFromSimpleURL ( ) throws Exception { 117 URL url = new URL ( "http://j-spider.sourceforge.net/index.html" ); 118 URL expected = new URL ( "http://j-spider.sourceforge.net" ); 119 URL actual = URLUtil.getSiteURL(url); 120 121 boolean equals = actual.equals ( expected ); 122 assertTrue ( "simple resource url failed to resolve to site url", equals ); 123 } 124 125 126 public void testSiteURLFromNullURL ( ) throws Exception { 127 URL actual = URLUtil.getSiteURL(null); 128 assertNull ( "null resource url failed to resolve to null site url", actual ); 129 } 130 131 132 public void testSiteURLFromSiteURL ( ) throws Exception { 133 URL url = new URL ( "http://j-spider.sourceforge.net" ); 134 URL expected = new URL ( "http://j-spider.sourceforge.net" ); 135 URL actual = URLUtil.getSiteURL(url); 136 137 boolean equals = actual.equals ( expected ); 138 assertTrue ( "site url failed to resolve to itself as site url", equals ); 139 } 140 141 public void testSiteURLFromSiteURLWithTrailingSlash ( ) throws Exception { 142 URL url = new URL ( "http://j-spider.sourceforge.net/" ); 143 URL expected = new URL ( "http://j-spider.sourceforge.net" ); 144 URL actual = URLUtil.getSiteURL(url); 145 146 boolean equals = actual.equals ( expected ); 147 assertTrue ( "site url failed to resolve to itself as site url", equals ); 148 } 149 150 public void testSiteURLFromSimpleURLWithPort ( ) throws Exception { 151 URL url = new URL ( "http://j-spider.sourceforge.net:123/index.html" ); 152 URL expected = new URL ( "http://j-spider.sourceforge.net:123" ); 153 URL actual = URLUtil.getSiteURL(url); 154 155 boolean equals = actual.equals ( expected ); 156 assertTrue ( "simple resource url with port failed to resolve to site url", equals ); 157 } 158 159 public void testSiteURLFromSiteURLWithPort ( ) throws Exception { 160 URL url = new URL ( "http://j-spider.sourceforge.net:123" ); 161 URL expected = new URL ( "http://j-spider.sourceforge.net:123" ); 162 URL actual = URLUtil.getSiteURL(url); 163 164 boolean equals = actual.equals ( expected ); 165 assertTrue ( "simple resource url with port failed to resolve to site url", equals ); 166 } 167 168 public void testSiteURLFromSiteURLWithPortAndTrailingSlash ( ) throws Exception { 169 URL url = new URL ( "http://j-spider.sourceforge.net:123/" ); 170 URL expected = new URL ( "http://j-spider.sourceforge.net:123" ); 171 URL actual = URLUtil.getSiteURL(url); 172 173 boolean equals = actual.equals ( expected ); 174 assertTrue ( "simple resource url with port failed to resolve to site url", equals ); 175 } 176 177 public void testSiteURLFromFtpURLWithPortAndTrailingSlash ( ) throws Exception { 178 URL url = new URL ( "ftp://j-spider.sourceforge.net:123/folder/" ); 179 URL expected = new URL ( "ftp://j-spider.sourceforge.net:123" ); 180 URL actual = URLUtil.getSiteURL(url); 181 182 boolean equals = actual.equals ( expected ); 183 assertTrue ( "ftp resource url with port failed to resolve to site url", equals ); 184 } 185 186 public void testGetRobotsTXTUrlSimple ( ) throws Exception { 187 URL url = new URL ( "http://j-spider.sourceforge.net" ); 188 URL expected = new URL ( "http://j-spider.sourceforge.net/robots.txt" ); 189 URL actual = URLUtil.getRobotsTXTURL(url); 190 boolean equals = expected.equals(actual); 191 assertTrue("getRobotsTXTURL failed", equals); 192 } 193 194 public void testGetRobotsTXTUrlFromNullURL ( ) throws Exception { 195 URL actual = URLUtil.getRobotsTXTURL(null); 196 assertNull("getRobotsTXTURL (null url) failed", actual); 197 } 198 199 public void testGetRobotsTXTUrlTrailingSlash ( ) throws Exception { 200 URL url = new URL ( "http://j-spider.sourceforge.net/" ); 201 URL expected = new URL ( "http://j-spider.sourceforge.net/robots.txt" ); 202 URL actual = URLUtil.getRobotsTXTURL(url); 203 boolean equals = expected.equals(actual); 204 assertTrue("getRobotsTXTURL failed", equals); 205 } 206 207 public void testGetRobotsTXTUrlWithPort ( ) throws Exception { 208 URL url = new URL ( "http://j-spider.sourceforge.net:123" ); 209 URL expected = new URL ( "http://j-spider.sourceforge.net:123/robots.txt" ); 210 URL actual = URLUtil.getRobotsTXTURL(url); 211 boolean equals = expected.equals(actual); 212 assertTrue("getRobotsTXTURL failed", equals); 213 } 214 215 public void testGetRobotsTXTUrlWithPortAndTrailingSlash ( ) throws Exception { 216 URL url = new URL ( "http://j-spider.sourceforge.net:123/" ); 217 URL expected = new URL ( "http://j-spider.sourceforge.net:123/robots.txt" ); 218 URL actual = URLUtil.getRobotsTXTURL(url); 219 boolean equals = expected.equals(actual); 220 assertTrue("getRobotsTXTURL failed", equals); 221 } 222 223 public void testGetRobotsTXTUrlWithFolders ( ) throws Exception { 224 URL url = new URL ( "http://j-spider.sourceforge.net/folder/folder/resource.html" ); 225 URL expected = new URL ( "http://j-spider.sourceforge.net/robots.txt" ); 226 URL actual = URLUtil.getRobotsTXTURL(url); 227 boolean equals = expected.equals(actual); 228 assertTrue("getRobotsTXTURL failed", equals); 229 } 230 231 public void testGetRobotsTXTUrlWithPortAndFolders ( ) throws Exception { 232 URL url = new URL ( "http://j-spider.sourceforge.net:123/folder/folder/resource.html" ); 233 URL expected = new URL ( "http://j-spider.sourceforge.net:123/robots.txt" ); 234 URL actual = URLUtil.getRobotsTXTURL(url); 235 boolean equals = expected.equals(actual); 236 assertTrue("getRobotsTXTURL failed", equals); 237 } 238 239 public void testStripResourceNullResource ( ) { 240 String path = null; 241 String result = URLUtil.stripResource(path); 242 String expected = null; 243 boolean equals = result == expected; 244 assertTrue ( "stripResource failed", equals ); 245 } 246 247 public void testStripResourceSimple ( ) { 248 String path = "/folder/subfolder/resource.html"; 249 String result = URLUtil.stripResource(path); 250 String expected = "/folder/subfolder/"; 251 boolean equals = expected.equals(result); 252 assertTrue ( "stripResource failed", equals ); 253 } 254 255 public void testStripResourceTrailingSlash ( ) { 256 String path = "/folder/subfolder/"; 257 String result = URLUtil.stripResource(path); 258 String expected = "/folder/subfolder/"; 259 boolean equals = expected.equals(result); 260 assertTrue ( "stripResource failed", equals ); 261 } 262 263 public void testStripResourceOnlySlash ( ) { 264 String path = "/"; 265 String result = URLUtil.stripResource(path); 266 String expected = "/"; 267 boolean equals = expected.equals(result); 268 assertTrue ( "stripResource failed", equals ); 269 } 270 271 public void testStripResourceOnlyFolder ( ) { 272 String path = "/folder"; 273 String result = URLUtil.stripResource(path); 274 String expected = "/"; 275 boolean equals = expected.equals(result); 276 assertTrue ( "stripResource failed", equals ); 277 } 278 279 public void testDepthSimple ( ) throws Exception { 280 URL url = new URL ( "http://j-spider.sourceforge.net/test/index.html"); 281 int expected = 1; 282 int actual = URLUtil.getDepth(url); 283 assertEquals( "depth calculation failed", expected, actual ); 284 } 285 286 public void testDepthSimpleDeeper ( ) throws Exception { 287 URL url = new URL ( "http://j-spider.sourceforge.net/test/test2/test3/index.html"); 288 int expected = 3; 289 int actual = URLUtil.getDepth(url); 290 assertEquals( "depth calculation failed", expected, actual ); 291 } 292 293 public void testDepthFileOnRoot ( ) throws Exception { 294 URL url = new URL ( "http://j-spider.sourceforge.net/index.html"); 295 int expected = 0; 296 int actual = URLUtil.getDepth(url); 297 assertEquals( "depth calculation failed", expected, actual ); 298 } 299 300 public void testDepthRoot ( ) throws Exception { 301 URL url = new URL ( "http://j-spider.sourceforge.net"); 302 int expected = 0; 303 int actual = URLUtil.getDepth(url); 304 assertEquals( "depth calculation failed", expected, actual ); 305 } 306 307 public void testDepthRootTrailingSlash ( ) throws Exception { 308 URL url = new URL ( "http://j-spider.sourceforge.net/"); 309 int expected = 0; 310 int actual = URLUtil.getDepth(url); 311 assertEquals( "depth calculation failed", expected, actual ); 312 } 313 314 public void testDepthNullURL ( ) throws Exception { 315 URL url = null; 316 int expected = 0; 317 int actual = URLUtil.getDepth(url); 318 assertEquals( "depth calculation failed", expected, actual ); 319 } 320 321 public void testDepthNoFile ( ) throws Exception { 322 URL url = new URL ( "http://j-spider.sourceforge.net/test"); 323 int expected = 1; 324 int actual = URLUtil.getDepth(url); 325 assertEquals( "depth calculation failed", expected, actual ); 326 } 327 328 public void testDepthNoFileTrailingSlash ( ) throws Exception { 329 URL url = new URL ( "http://j-spider.sourceforge.net/test/"); 330 int expected = 1; 331 int actual = URLUtil.getDepth(url); 332 assertEquals( "depth calculation failed", expected, actual ); 333 } 334 335 public void testIfFileSpecifiedSimple ( ) throws Exception { 336 URL url = new URL ("http://j-spider.sourceforge.net/test/index.html"); 337 boolean expected = true; 338 boolean actual = URLUtil.isFileSpecified(url); 339 assertEquals("isFileSpecified took wrong decision", expected, actual ); 340 } 341 342 public void testIfFileSpecifiedFolder ( ) throws Exception { 343 URL url = new URL ("http://j-spider.sourceforge.net/test/index"); 344 boolean expected = false; 345 boolean actual = URLUtil.isFileSpecified(url); 346 assertEquals("isFileSpecified took wrong decision", expected, actual ); 347 } 348 349 public void testIfFileSpecifiedFolderTrailingSlash ( ) throws Exception { 350 URL url = new URL ("http://j-spider.sourceforge.net/test/index/"); 351 boolean expected = false; 352 boolean actual = URLUtil.isFileSpecified(url); 353 assertEquals("isFileSpecified took wrong decision", expected, actual ); 354 } 355 356 public void testIfFileSpecifiedFolderAndFolderWithDot ( ) throws Exception { 357 URL url = new URL ("http://j-spider.sourceforge.net/test/index.ext/index"); 358 boolean expected = false; 359 boolean actual = URLUtil.isFileSpecified(url); 360 assertEquals("isFileSpecified took wrong decision", expected, actual ); 361 } 362 363 public void testGetFolderNamesSimple ( ) throws Exception { 364 URL url = new URL ("http://j-spider.sourceforge.net/test/folder/subfolder/index.html"); 365 String [] expected = new String []{"test", "folder", "subfolder"}; 366 String [] actual = URLUtil.getFolderNames(url) ; 367 368 assertEquals("wrong number of folderNames returned", expected.length, actual.length); 369 for (int i = 0; i < actual.length; i++) { 370 String s = actual[i]; 371 assertEquals("folderName " + i + " is wrong", expected[i], s ); 372 } 373 } 374 375 public void testGetFolderNamesURLWithoutFile ( ) throws Exception { 376 URL url = new URL ("http://j-spider.sourceforge.net/test/folder/subfolder"); 377 String [] expected = new String []{"test", "folder", "subfolder"}; 378 String [] actual = URLUtil.getFolderNames(url) ; 379 380 assertEquals("wrong number of folderNames returned", expected.length, actual.length); 381 for (int i = 0; i < actual.length; i++) { 382 String s = actual[i]; 383 assertEquals("folderName " + i + " is wrong", expected[i], s ); 384 } 385 } 386 387 public void testGetFolderNamesURLWithoutFileTrailingSlash ( ) throws Exception { 388 URL url = new URL ("http://j-spider.sourceforge.net/test/folder/subfolder/"); 389 String [] expected = new String []{"test", "folder", "subfolder"}; 390 String [] actual = URLUtil.getFolderNames(url) ; 391 392 assertEquals("wrong number of folderNames returned", expected.length, actual.length); 393 for (int i = 0; i < actual.length; i++) { 394 String s = actual[i]; 395 assertEquals("folderName " + i + " is wrong", expected[i], s ); 396 } 397 } 398 399 public void testGetFolderNamesOnRoot ( ) throws Exception { 400 URL url = new URL ("http://j-spider.sourceforge.net"); 401 String [] expected = new String [0]; 402 String [] actual = URLUtil.getFolderNames(url) ; 403 404 assertEquals("wrong number of folderNames returned", expected.length, actual.length); 405 for (int i = 0; i < actual.length; i++) { 406 String s = actual[i]; 407 assertEquals("folderName " + i + " is wrong", expected[i], s ); 408 } 409 } 410 411 public void testGetFolderNamesOnRootTrailingSlash ( ) throws Exception { 412 URL url = new URL ("http://j-spider.sourceforge.net/"); 413 String [] expected = new String [0]; 414 String [] actual = URLUtil.getFolderNames(url) ; 415 416 assertEquals("wrong number of folderNames returned", expected.length, actual.length); 417 for (int i = 0; i < actual.length; i++) { 418 String s = actual[i]; 419 assertEquals("folderName " + i + " is wrong", expected[i], s ); 420 } 421 } 422 423 public void testGetFolderNamesFileOnRoot ( ) throws Exception { 424 URL url = new URL ("http://j-spider.sourceforge.net/index.html"); 425 String [] expected = new String [0]; 426 String [] actual = URLUtil.getFolderNames(url) ; 427 428 assertEquals("wrong number of folderNames returned", expected.length, actual.length); 429 for (int i = 0; i < actual.length; i++) { 430 String s = actual[i]; 431 assertEquals("folderName " + i + " is wrong", expected[i], s ); 432 } 433 } 434 435 public void testGetFolderNamesFolderOnRoot ( ) throws Exception { 436 URL url = new URL ("http://j-spider.sourceforge.net/test"); 437 String [] expected = new String []{"test"}; 438 String [] actual = URLUtil.getFolderNames(url) ; 439 440 assertEquals("wrong number of folderNames returned", expected.length, actual.length); 441 for (int i = 0; i < actual.length; i++) { 442 String s = actual[i]; 443 assertEquals("folderName " + i + " is wrong", expected[i], s ); 444 } 445 } 446 447 public void testGetFileNameSimple ( ) throws Exception { 448 URL url = new URL ("http://j-spider.sourceforge.net/test.html"); 449 String expected = "test.html"; 450 String actual = URLUtil.getFileName(url) ; 451 assertEquals("returned filename is wrong", expected, actual); 452 } 453 454 public void testGetFileNameInSubfolders ( ) throws Exception { 455 URL url = new URL ("http://j-spider.sourceforge.net/test/index/test.html"); 456 String expected = "test.html"; 457 String actual = URLUtil.getFileName(url) ; 458 assertEquals("returned filename is wrong", expected, actual); 459 } 460 461 public void testGetFileNameInTrickySubfolders ( ) throws Exception { 462 URL url = new URL ("http://j-spider.sourceforge.net/test/index.folder/test.html"); 463 String expected = "test.html"; 464 String actual = URLUtil.getFileName(url) ; 465 assertEquals("returned filename is wrong", expected, actual); 466 } 467 468 public void testGetFileNameNoFile ( ) throws Exception { 469 URL url = new URL ("http://j-spider.sourceforge.net/test/index.folder/"); 470 String expected = ""; 471 String actual = URLUtil.getFileName(url) ; 472 assertEquals("returned filename is wrong", expected, actual); 473 } 474 475 } 476 | Popular Tags |