@Test public void testDisjunction() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}{b}", Collections.singletonMap(Names.A, PathParam.matching("a|b"))); // Map<String, String> expectedParameters = new HashMap<String, String>(); expectedParameters.put(Names.A, "a"); expectedParameters.put(Names.B, "c"); // router.assertRoute(expectedParameters, "/ac"); expectedParameters.put(Names.A, "b"); router.assertRoute(expectedParameters, "/bc"); }
@Test public void testPreservePath() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching(".*").preservePath(true))); router.assertRoute(Collections.singletonMap(Names.A, "a"), "/a"); router.assertRoute(Collections.singletonMap(Names.A, "//"), "///"); router.assertRoute(Collections.singletonMap(Names.A, "a/"), "/a/"); } }
@Test public void testCaptureGroup() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching("a(.)c").captureGroup(true))); // router.assertRoute(Collections.singletonMap(Names.A, "b"), "/abc"); }
@Test public void testLang() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}b", Collections.singletonMap(Names.A, PathParam.matching("(([A-Za-z]{2})/)?").preservePath(true))); // router.assertRoute(Collections.singletonMap(Names.A, "fr/"), "/fr/b"); router.assertRoute(Collections.singletonMap(Names.A, ""), "/b"); }
@Test public void testLang() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}b", Collections.singletonMap(Names.A, PathParam.matching("(([A-Za-z]{2})/)?").preservePath(true))); // router.assertRoute(Collections.singletonMap(Names.A, "fr/"), "/fr/b"); router.assertRoute(Collections.singletonMap(Names.A, ""), "/b"); }
@Test public void testPrecedence() throws Exception { RouterAssert router = new RouterAssert(); router.append("/a"); router.append("/{p}/b", Collections.singletonMap(Names.P, PathParam.matching("a"))); // router.assertRoute(Collections.<String, String>emptyMap(), "a"); router.assertRoute(Collections.<String, String>emptyMap(), "/a"); assertNull(router.route("/a/")); router.assertRoute(Collections.singletonMap(Names.P, "a"), "/a/b"); }
@Test public void testSimplePatternPathParam() throws Exception { Router router = new Router(); Route r = router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching("a"))); // assertEquals("/a", r.matches(Collections.singletonMap(Names.P, "a")).render()); assertNull(r.matches(Collections.singletonMap(Names.P, "ab"))); }
@Test public void testDisjunction() throws Exception { Router router = new Router(); Route r = router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching("a|b"))); // assertEquals("/b", r.matches(Collections.singletonMap(Names.A, "b")).render()); }
@Test public void testWildcardParamPathWithDefaultForm() throws Exception { Router router = new Router(); Route a= router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching(".*"))); // assertEquals("/_", a.matches(Collections.singletonMap(Names.P, "/")).render()); }
@Test public void testDisjunction() throws Exception { Router router = new Router(); Route r = router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching("a|b"))); // assertEquals("/b", r.matches(Collections.singletonMap(Names.A, "b")).render()); }
@Test public void testPrecedence() throws Exception { RouterAssert router = new RouterAssert(); router.append("/a"); router.append("/{p}/b", Collections.singletonMap(Names.P, PathParam.matching("a"))); // router.assertRoute(Collections.<String, String>emptyMap(), "a"); router.assertRoute(Collections.<String, String>emptyMap(), "/a"); assertNull(router.route("/a/")); router.assertRoute(Collections.singletonMap(Names.P, "a"), "/a/b"); }
@Override public void setUp() throws Exception { this.router = new RouterAssert(); Map<String, PathParam.Builder> params = Collections.singletonMap(Names.GTN_PATH, PathParam.matching(".*").preservePath(true)); portal = router.append("/private/{gtn:sitetype}/{gtn:sitename}{gtn:path}", params); group = router.append("/groups/{gtn:sitetype}/{gtn:sitename}{gtn:path}", params); user = router.append("/users/{gtn:sitetype}/{gtn:sitename}{gtn:path}", params); }
@Test public void testCaptureGroup() throws Exception { Router router = new Router(); Route r = router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching("a(.)c").captureGroup(true))); // assertEquals("/abc", r.matches(Collections.singletonMap(Names.A, "b")).render()); } }
@Test public void testAvoidMatchingPrefix() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{a}/ab/c", Collections.singletonMap(Names.A, PathParam.matching("a?").preservePath(true))); // Map<String, String> expectedParameters = new HashMap<String, String>(); expectedParameters.put(Names.A, ""); router.assertRoute(a, expectedParameters, "/ab/c"); assertEquals("/ab/c", a.matches(expectedParameters).render()); }
@Test public void testSimplePattern() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching("a"))); // router.assertRoute(Collections.singletonMap(Names.P, "a"), "/a"); router.assertRoute(Collections.singletonMap(Names.P, "a"), "a"); assertNull(router.route("/ab")); assertNull(router.route("ab")); }
@Test public void testParamPreservePath() throws Exception { RouterAssert router = new RouterAssert(); Route a = router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching("[^/]+").preservePath(true))); // Route router.assertRoute(Collections.singletonMap(Names.P, "_"), "/_"); assertNull(router.route("//")); // Render assertNull(a.matches(Collections.singletonMap(Names.P, "/"))); }
@Test public void testSimplePattern() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{p}", Collections.singletonMap(Names.P, PathParam.matching("a"))); // router.assertRoute(Collections.singletonMap(Names.P, "a"), "/a"); router.assertRoute(Collections.singletonMap(Names.P, "a"), "a"); assertNull(router.route("/ab")); assertNull(router.route("ab")); }
@Test public void testPartialMatching() throws Exception { RouterAssert router = new RouterAssert(); router.append("/{a}", Collections.singletonMap(Names.A, PathParam.matching("abc").preservePath(true))); // assertNull(router.route("/abcdef")); }
@Test public void testPrecedence() throws Exception { Router router = new Router(); Route a = router.append("/a"); Route b = router.append("/{p}/b", Collections.singletonMap(Names.P, PathParam.matching("a"))); // assertEquals("/a", a.matches(Collections.<String, String>emptyMap()).render()); assertEquals("/a/b", b.matches(Collections.singletonMap(Names.P, "a")).render()); }
@Test public void testLang() throws Exception { Router router = new Router(); Route r = router.append("/{a}b", Collections.singletonMap(Names.A, PathParam.matching("(([A-Za-z]{2})/)?").preservePath(true))); // assertEquals("/fr/b", r.matches(Collections.singletonMap(Names.A, "fr/")).render()); assertEquals("/b", r.matches(Collections.singletonMap(Names.A, "")).render()); }