@Test
 public void test7() {
   UrlRenderer r1 =
       new UrlRenderer(
           new MockWebRequest(
               Url.parse("MyTestPage/indexed1/indexed2/indexed3?10-27.ILinkListener-l2&p1=v1")));
   assertEquals("../../../MyTestPage?10", r1.renderUrl(Url.parse("MyTestPage?10")));
 }
 @Test
 public void test8() {
   UrlRenderer r1 =
       new UrlRenderer(new MockWebRequest(Url.parse("en/first-test-page?16-1.ILinkListener-l1")));
   assertEquals(
       "./first-test-page/indexed1/indexed2/indexed3?p1=v1",
       r1.renderUrl(Url.parse("en/first-test-page/indexed1/indexed2/indexed3?p1=v1")));
 }
 /**
  * Verify that absolute urls are rendered as is, ignoring the current client url and base url
  * completely.
  *
  * <p>https://issues.apache.org/jira/browse/WICKET-4466
  */
 @Test
 public void renderAbsoluteUrl() {
   String absoluteUrl = "http://www.example.com/some/path.ext";
   Url url = Url.parse(absoluteUrl);
   UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("foo/bar")));
   String renderedUrl = renderer.renderUrl(url);
   assertEquals(absoluteUrl, renderedUrl);
 }
  /** WICKET-4935 prevent another double slash */
  @Test
  public void test15() {
    UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("private/AdminPage")));

    assertEquals(
        "../signIn;jsessionid=16k3wqa9c4sgq1cnp7fisa20u",
        r1.renderRelativeUrl(Url.parse("/signIn;jsessionid=16k3wqa9c4sgq1cnp7fisa20u")));
  }
 @Test
 public void test1() {
   UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("foo/bar/baz?a=b")));
   assertEquals("./xyz?x=y", r1.renderUrl(Url.parse("foo/bar/xyz?x=y")));
   assertEquals("./baz/xyz?x=y", r1.renderUrl(Url.parse("foo/bar/baz/xyz?x=y")));
   assertEquals("../aaa/xyz?x=y", r1.renderUrl(Url.parse("foo/aaa/xyz?x=y")));
   assertEquals("../../bbb/aaa/xyz?x=y", r1.renderUrl(Url.parse("bbb/aaa/xyz?x=y")));
 }
  @Test
  public void renderFullUrlAsRelativeToBaseUrlWithoutSchemeHostnameAndPort() {
    Url baseUrl = Url.parse("/contextPath/filterPath/a/b/c/d");
    Url encodedFullUrl = Url.parse("http://host:8080/contextPath/filterPath/a/b;jsessionid=123456");

    UrlRenderer renderer = new UrlRenderer(new MockWebRequest(baseUrl));
    String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);

    assertEquals("../../b;jsessionid=123456", encodedRelativeUrl);
  }
  /** WICKET-4920 prevent double slash */
  @Test
  public void test14() {
    UrlRenderer r1 = new UrlRenderer(new MockWebRequest(new Url()));

    assertEquals(
        "./;jsessionid=1p87c5424zjuvd57kljcu2bwa?0-1.IBehaviorListener.1-component",
        r1.renderRelativeUrl(
            Url.parse(
                "http://localhost:8080/;jsessionid=1p87c5424zjuvd57kljcu2bwa?0-1.IBehaviorListener.1-component")));
  }
 @Test
 public void renderFullUrlWithRelativeArgument() {
   Url baseUrl = Url.parse("one/two/three");
   baseUrl.setProtocol("http");
   baseUrl.setHost("www.example.com");
   baseUrl.setPort(8888);
   UrlRenderer renderer = new UrlRenderer(new MockWebRequest(baseUrl));
   renderer.setBaseUrl(baseUrl); // this is needed because MockWebRequest cuts data
   String fullUrl = renderer.renderFullUrl(Url.parse("../four"));
   assertEquals("http://www.example.com:8888/one/four", fullUrl);
 }
  @Test
  public void renderFullUrlAsRelativeToBaseUrlWithoutComposedFilterPath() {
    Url baseUrl = Url.parse("a/b/c/d"); // base url without context path and filter path
    Url encodedFullUrl = Url.parse("http://host:8080/context/path/a/b;jsessionid=123456");

    MockWebRequest request = new MockWebRequest(baseUrl);
    request.setContextPath("context/path");
    UrlRenderer renderer = new UrlRenderer(request);
    String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);

    assertEquals("../../b;jsessionid=123456", encodedRelativeUrl);
  }
 /** https://issues.apache.org/jira/browse/WICKET-4514 */
 @Test
 public void renderFullUrlWithAbsoluteArgument() {
   Url baseUrl = Url.parse("one/two/three");
   baseUrl.setProtocol("http");
   baseUrl.setHost("www.example.com");
   baseUrl.setPort(8888);
   UrlRenderer renderer = new UrlRenderer(new MockWebRequest(baseUrl));
   renderer.setBaseUrl(baseUrl); // this is needed because MockWebRequest cuts data
   String fullUrl = renderer.renderFullUrl(Url.parse("/four")); // url starting with slash is
   // considered absolute
   assertEquals("http://www.example.com:8888/four", fullUrl);
 }
  @Test
  public void renderFullUrlAsRelativeToBaseUrlWithFirstSegmentsEqualToTheFilterPath() {
    // base url without context path and filter path
    // 'filterPath' here is a normal segment with the same value
    Url baseUrl = Url.parse("filterPath/a/b/c/d");

    // here 'filterPath' is the actual filter path and should be ignored
    Url encodedFullUrl = Url.parse("http://host:8080/filterPath/a/b;jsessionid=123456");

    MockWebRequest request = new MockWebRequest(baseUrl);
    request.setFilterPath("filterPath");
    UrlRenderer renderer = new UrlRenderer(request);
    String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);

    assertEquals("../../../../a/b;jsessionid=123456", encodedRelativeUrl);
  }
  /**
   * https://issues.apache.org/jira/browse/WICKET-4561
   * https://issues.apache.org/jira/browse/WICKET-4562
   */
  @Test
  public void renderUrlWithRelativeArgument() {
    Url baseUrl = Url.parse("one/two/three");
    UrlRenderer renderer = new UrlRenderer(new MockWebRequest(baseUrl));
    baseUrl.setProtocol("http");
    baseUrl.setHost("www.example.com");
    baseUrl.setPort(8888);
    renderer.setBaseUrl(baseUrl);

    Url newUrl = Url.parse("four");
    newUrl.setProtocol("https");
    String fullUrl = renderer.renderUrl(newUrl);
    assertEquals("https://www.example.com:8888/four", fullUrl);

    newUrl = Url.parse("./four");
    newUrl.setProtocol("https");
    fullUrl = renderer.renderUrl(newUrl);
    assertEquals("https://www.example.com:8888/four", fullUrl);

    newUrl = Url.parse("./././four");
    newUrl.setProtocol("https");
    fullUrl = renderer.renderUrl(newUrl);
    assertEquals("https://www.example.com:8888/four", fullUrl);

    newUrl = Url.parse("../four");
    newUrl.setProtocol("https");
    fullUrl = renderer.renderUrl(newUrl);
    assertEquals("https://www.example.com:8888/four", fullUrl);

    newUrl = Url.parse(".././four");
    newUrl.setProtocol("https");
    fullUrl = renderer.renderUrl(newUrl);
    assertEquals("https://www.example.com:8888/four", fullUrl);

    newUrl = Url.parse("../../../../four");
    newUrl.setProtocol("https");
    fullUrl = renderer.renderUrl(newUrl);
    assertEquals("https://www.example.com:8888/four", fullUrl);
  }
  @Test
  public void test10() {
    MockWebRequest request =
        new MockWebRequest(Url.parse("a/b/q/d/e"), "/contextPath", "/filterPath", "../");

    UrlRenderer r = new UrlRenderer(request);
    assertEquals("../../../../../", r.renderContextRelativeUrl(""));
    assertEquals("../../../../../", r.renderContextRelativeUrl("/"));
    assertEquals("../../../../../f", r.renderContextRelativeUrl("/f"));
    assertEquals("../../../../../../f", r.renderContextRelativeUrl("../f"));

    try {
      r.renderContextRelativeUrl(null);
      fail("Null 'url' is not allowed!");
    } catch (IllegalArgumentException iax) {
      assertTrue(true);
    }
  }
 /** <a href="https://issues.apache.org/jira/browse/WICKET-3337">WICKET-3337</a> */
 @Test
 public void test11() {
   UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("a")));
   assertEquals("./.", r1.renderUrl(Url.parse("")));
 }
 @Test
 public void test9() {
   UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("a/b/q/d/e")));
   assertEquals("../../../q/c/d/e", r1.renderUrl(Url.parse("a/q/c/d/e")));
 }
 /**
  * https://issues.apache.org/jira/browse/WICKET-4401
  *
  * <p>A Url should not ends with '..' because some web containers do not handle it properly. Using
  * '../' works better.
  */
 @Test
 public void test13() {
   UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("foo/bar")));
   assertEquals("../", r1.renderUrl(Url.parse("")));
 }
 @Test
 public void test2() {
   UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("foo/bar/baz?a=b")));
   assertEquals("../../foo?x=y", r1.renderUrl(Url.parse("foo?x=y")));
   assertEquals("../../aaa?x=y", r1.renderUrl(Url.parse("aaa?x=y")));
 }
 @Test
 public void test6() {
   UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("url/")));
   assertEquals("./x?1", r1.renderUrl(Url.parse("url/x?1")));
 }
 @Test
 public void test3() {
   UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("?a=b")));
   assertEquals("./a/b/c?x=y", r1.renderUrl(Url.parse("a/b/c?x=y")));
 }