public void testBackRefMatcher() { NdnRegexBackrefManager backRef = new NdnRegexBackrefManager(); NdnRegexBackrefMatcher cm = new NdnRegexBackrefMatcher("(<a><b>)", backRef); backRef.pushRef(cm); cm.lateCompile(); bool res = cm.match(new Name("/a/b/c"), 0, 2); Assert.AssertEquals(true, res); Assert.AssertEquals(2, cm.getMatchResult().Count); Assert.AssertEquals("a", cm.getMatchResult()[0].toEscapedString()); Assert.AssertEquals("b", cm.getMatchResult()[1].toEscapedString()); Assert.AssertEquals(1, backRef.size()); backRef = new NdnRegexBackrefManager(); cm = new NdnRegexBackrefMatcher("(<a>(<b>))", backRef); backRef.pushRef(cm); cm.lateCompile(); res = cm.match(new Name("/a/b/c"), 0, 2); Assert.AssertEquals(true, res); Assert.AssertEquals(2, cm.getMatchResult().Count); Assert.AssertEquals("a", cm.getMatchResult()[0].toEscapedString()); Assert.AssertEquals("b", cm.getMatchResult()[1].toEscapedString()); Assert.AssertEquals(2, backRef.size()); Assert.AssertEquals("a", backRef.getBackref(0).getMatchResult()[0] .toEscapedString()); Assert.AssertEquals("b", backRef.getBackref(0).getMatchResult()[1] .toEscapedString()); Assert.AssertEquals("b", backRef.getBackref(1).getMatchResult()[0] .toEscapedString()); }
public void testComponentMatcher() { NdnRegexBackrefManager backRef = new NdnRegexBackrefManager(); NdnRegexComponentMatcher cm = new NdnRegexComponentMatcher("a", backRef); bool res = cm.match(new Name("/a/b/"), 0, 1); Assert.AssertEquals(true, res); Assert.AssertEquals(1, cm.getMatchResult().Count); Assert.AssertEquals("a", cm.getMatchResult()[0].toEscapedString()); backRef = new NdnRegexBackrefManager(); cm = new NdnRegexComponentMatcher("a", backRef); res = cm.match(new Name("/a/b/"), 1, 1); Assert.AssertEquals(false, res); Assert.AssertEquals(0, cm.getMatchResult().Count); backRef = new NdnRegexBackrefManager(); cm = new NdnRegexComponentMatcher("(c+)\\.(cd)", backRef); res = cm.match(new Name("/ccc.cd/b/"), 0, 1); Assert.AssertEquals(true, res); Assert.AssertEquals(1, cm.getMatchResult().Count); Assert.AssertEquals("ccc.cd", cm.getMatchResult()[0].toEscapedString()); Assert.AssertEquals(2, backRef.size()); Assert.AssertEquals("ccc", backRef.getBackref(0).getMatchResult()[0] .toEscapedString()); Assert.AssertEquals("cd", backRef.getBackref(1).getMatchResult()[0] .toEscapedString()); }
public void testBackRefMatcherAdvanced() { NdnRegexBackrefManager backRef = new NdnRegexBackrefManager(); NdnRegexRepeatMatcher cm = new NdnRegexRepeatMatcher("([<a><b>])+", backRef, 10); bool res = cm.match(new Name("/a/b/c"), 0, 2); Assert.AssertEquals(true, res); Assert.AssertEquals(2, cm.getMatchResult().Count); Assert.AssertEquals("a", cm.getMatchResult()[0].toEscapedString()); Assert.AssertEquals("b", cm.getMatchResult()[1].toEscapedString()); Assert.AssertEquals(1, backRef.size()); Assert.AssertEquals("b", backRef.getBackref(0).getMatchResult()[0] .toEscapedString()); }
public void testBackRefMatcherAdvanced2() { NdnRegexBackrefManager backRef = new NdnRegexBackrefManager(); NdnRegexPatternListMatcher cm = new NdnRegexPatternListMatcher( "(<a>(<b>))<c>", backRef); bool res = cm.match(new Name("/a/b/c"), 0, 3); Assert.AssertEquals(true, res); Assert.AssertEquals(3, cm.getMatchResult().Count); Assert.AssertEquals("a", cm.getMatchResult()[0].toEscapedString()); Assert.AssertEquals("b", cm.getMatchResult()[1].toEscapedString()); Assert.AssertEquals("c", cm.getMatchResult()[2].toEscapedString()); Assert.AssertEquals(2, backRef.size()); Assert.AssertEquals("a", backRef.getBackref(0).getMatchResult()[0] .toEscapedString()); Assert.AssertEquals("b", backRef.getBackref(0).getMatchResult()[1] .toEscapedString()); Assert.AssertEquals("b", backRef.getBackref(1).getMatchResult()[0] .toEscapedString()); }