public void Test_Match_VariativePattern_Success() { var pattern = new TailUrlMatchingPattern { Pattern = "{action[Archive|Popular]}/{categoryAlias}" }; TailUrlMatchResult tailUrlMatchResult = pattern.Match("Archive/cat"); Assert.IsTrue(tailUrlMatchResult.IsMatch); Assert.AreEqual(tailUrlMatchResult.Values.Keys.Count, 2); Assert.IsTrue(tailUrlMatchResult.Values.ContainsKey("action")); Assert.AreEqual(tailUrlMatchResult.Values["action"], "Archive"); Assert.IsTrue(tailUrlMatchResult.Values.ContainsKey("categoryAlias")); Assert.AreEqual(tailUrlMatchResult.Values["categoryAlias"], "cat"); tailUrlMatchResult = pattern.Match("Popular/cat"); Assert.IsTrue(tailUrlMatchResult.IsMatch); Assert.AreEqual(tailUrlMatchResult.Values.Keys.Count, 2); Assert.IsTrue(tailUrlMatchResult.Values.ContainsKey("action")); Assert.AreEqual(tailUrlMatchResult.Values["action"], "Popular"); Assert.IsTrue(tailUrlMatchResult.Values.ContainsKey("categoryAlias")); Assert.AreEqual(tailUrlMatchResult.Values["categoryAlias"], "cat"); }
public void Test_Match_SimpleTemplate() { var pattern = new TailUrlMatchingPattern { Pattern = "{action=Index}/{id?}" }; var mr = pattern.Match(""); Assert.IsTrue(mr.IsMatch); Assert.AreEqual(mr.Values.Keys.Count, 1); Assert.IsTrue(mr.Values.ContainsKey("action")); Assert.AreEqual(mr.Values["action"], "Index"); mr = pattern.Match("list"); Assert.IsTrue(mr.IsMatch); Assert.AreEqual(mr.Values.Keys.Count, 1); Assert.IsTrue(mr.Values.ContainsKey("action")); Assert.AreEqual(mr.Values["action"], "list"); mr = pattern.Match("details/123"); Assert.IsTrue(mr.IsMatch); Assert.AreEqual(mr.Values.Keys.Count, 2); Assert.IsTrue(mr.Values.ContainsKey("action")); Assert.AreEqual(mr.Values["action"], "details"); Assert.IsTrue(mr.Values.ContainsKey("id")); Assert.AreEqual(mr.Values["id"], "123"); mr = pattern.Match("details/123/something"); Assert.IsFalse(mr.IsMatch); }
public void Test_Match_CheckConstraints_Success() { var pattern = new TailUrlMatchingPattern { Pattern = "tariff/{geoCode?}/{tariffId?}", Defaults = new Dictionary <string, string> { { "action", "Details" } }, Constraints = new Dictionary <string, string> { { "tariffId", "^$|\\d{5,9}" }, { "geoCode", "[a-zA-z_\\-]*" } } }; TailUrlMatchResult tailUrlMatchResult = pattern.Match("tariff/ru-RU/12345"); Assert.IsTrue(tailUrlMatchResult.IsMatch); Assert.AreEqual(tailUrlMatchResult.Values.Keys.Count, 3); Assert.IsTrue(tailUrlMatchResult.Values.ContainsKey("action")); Assert.AreEqual(tailUrlMatchResult.Values["action"], "Details"); Assert.IsTrue(tailUrlMatchResult.Values.ContainsKey("tariffId")); Assert.AreEqual(tailUrlMatchResult.Values["tariffId"], "12345"); Assert.IsTrue(tailUrlMatchResult.Values.ContainsKey("geoCode")); Assert.AreEqual(tailUrlMatchResult.Values["geoCode"], "ru-RU"); }
public void Test_Match_InvalidTemplate() { var pattern = new TailUrlMatchingPattern { Pattern = "{action=Index}/{id}" }; Assert.ThrowsException <TailUrlMatchingPatternException>(() => pattern.Match("")); }
public void Test_Match_VariativePattern_Fail() { var pattern = new TailUrlMatchingPattern { Pattern = "{action[Archive|Popular]}/{categoryAlias}" }; TailUrlMatchResult tailUrlMatchResult = pattern.Match("HomeOfCat/littleCat"); Assert.IsFalse(tailUrlMatchResult.IsMatch); }
public void Test_Match_CheckDefaults() { var pattern = new TailUrlMatchingPattern { Pattern = "{id}", Defaults = new Dictionary <string, string> { { "action", "Details" } } }; var mr = pattern.Match("123"); Assert.IsTrue(mr.IsMatch); Assert.AreEqual(mr.Values.Keys.Count, 2); Assert.IsTrue(mr.Values.ContainsKey("action")); Assert.AreEqual(mr.Values["action"], "Details"); Assert.IsTrue(mr.Values.ContainsKey("id")); Assert.AreEqual(mr.Values["id"], "123"); }
public void Test_Match_CheckConstraints_Fail() { var pattern = new TailUrlMatchingPattern { Pattern = "tariff/{geoCode}/{tariffId}", Defaults = new Dictionary <string, string> { { "action", "Details" } }, Constraints = new Dictionary <string, string> { { "tariffId", "\\d{5,9}" }, { "geoCode", "[a-zA-z_\\-]+" } } }; TailUrlMatchResult tailUrlMatchResult = pattern.Match("tariff/ru-RU/qwert"); Assert.IsFalse(tailUrlMatchResult.IsMatch); }
public void Test_Match_CheckConstraints_EmptyRegex_Throw() { var pattern = new TailUrlMatchingPattern { Pattern = "tariff/{geoCode}/{tariffId}", Defaults = new Dictionary <string, string> { { "action", "Details" } }, Constraints = new Dictionary <string, string> { { "tariffId", "^$" }, { "geoCode", "[a-zA-z_\\-]*" } } }; Assert.ThrowsException <IncorrectConstraintOrPatternException>(() => { TailUrlMatchResult tailUrlMatchResult = pattern.Match("tariff/ru-RU/"); }); }
public void Test_Match_VariativePattern_EmptyVariativePattern() { var pattern = new TailUrlMatchingPattern { Pattern = "{action[]}/{categoryAlias}" }; TailUrlMatchResult tailUrlMatchResult = pattern.Match("HomeOfCat/littleCat"); Assert.IsTrue(tailUrlMatchResult.IsMatch); Assert.AreEqual(tailUrlMatchResult.Values.Keys.Count, 2); Assert.IsTrue(tailUrlMatchResult.Values.ContainsKey("action")); Assert.AreEqual(tailUrlMatchResult.Values["action"], "HomeOfCat"); Assert.IsTrue(tailUrlMatchResult.Values.ContainsKey("categoryAlias")); Assert.AreEqual(tailUrlMatchResult.Values["categoryAlias"], "littleCat"); }