URLUtilTest.java
上传用户:qing5858
上传日期:2015-10-27
资源大小:6056k
文件大小:20k
源码类别:

搜索引擎

开发平台:

Java

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