public void testQuantifier() { new ParserTester("*").assertParseQuantifier(Quantifier.zeroOrMore(Quantifier.Mode.GREEDY)); new ParserTester("+").assertParseQuantifier(Quantifier.oneOrMore(Quantifier.Mode.GREEDY)); new ParserTester("?").assertParseQuantifier(Quantifier.onceOrNotAtAll(Quantifier.Mode.GREEDY)); new ParserTester("*a").assertParseQuantifier(Quantifier.zeroOrMore(Quantifier.Mode.GREEDY)); new ParserTester("+a").assertParseQuantifier(Quantifier.oneOrMore(Quantifier.Mode.GREEDY)); new ParserTester("?a").assertParseQuantifier(Quantifier.onceOrNotAtAll(Quantifier.Mode.GREEDY)); new ParserTester("*?").assertParseQuantifier(Quantifier.zeroOrMore(Quantifier.Mode.RELUCTANT)); new ParserTester("+?").assertParseQuantifier(Quantifier.oneOrMore(Quantifier.Mode.RELUCTANT)); new ParserTester("??").assertParseQuantifier(Quantifier.onceOrNotAtAll(Quantifier.Mode.RELUCTANT)); new ParserTester("*+").assertParseQuantifier(Quantifier.zeroOrMore(Quantifier.Mode.POSSESSIVE)); new ParserTester("++").assertParseQuantifier(Quantifier.oneOrMore(Quantifier.Mode.POSSESSIVE)); new ParserTester("?+").assertParseQuantifier(Quantifier.onceOrNotAtAll(Quantifier.Mode.POSSESSIVE)); new ParserTester("a").assertParseQuantifier(null); new ParserTester("").assertParseQuantifier(null); new ParserTester("{2}").assertParseQuantifier(Quantifier.exactly(Quantifier.Mode.GREEDY, 2)); new ParserTester("{2,}").assertParseQuantifier(Quantifier.atLeast(Quantifier.Mode.GREEDY, 2)); new ParserTester("{2,4}").assertParseQuantifier(Quantifier.between(Quantifier.Mode.GREEDY, 2, 4)); }
public void testExpression() { new ParserTester("").assertNotParseExpression(); new ParserTester("^").assertParseExpression("<^/>", 1); new ParserTester("^+").assertParseExpression("<+><^/></+>", 2); new ParserTester("$").assertParseExpression("<$/>", 1); new ParserTester("$+").assertParseExpression("<+><$/></+>", 2); new ParserTester("a").assertParseExpression("<c>a</c>", 1); new ParserTester("a+").assertParseExpression("<+><c>a</c></+>", 2); new ParserTester(".").assertParseExpression("<./>", 1); new ParserTester(".+").assertParseExpression("<+><./></+>", 2); new ParserTester("\\+").assertParseExpression("<c>+</c>", 2); new ParserTester("\\++").assertParseExpression("<+><c>+</c></+>", 3); new ParserTester("*").assertNotParseExpression(); new ParserTester("+").assertNotParseExpression(); new ParserTester("?").assertNotParseExpression(); new ParserTester("{").assertNotParseExpression(); new ParserTester("|").assertNotParseExpression(); }
public void testParseBracketExpression() { new ParserTester("[a]").assertParseCharacterClass("[a]"); new ParserTester("[^a]").assertParseCharacterClass("[^[a]]"); new ParserTester("[^a-b]").assertParseCharacterClass("[^[a-b]]"); new ParserTester("[a-b]").assertParseCharacterClass("[a-b]"); new ParserTester("[ab]").assertParseCharacterClass("[[a]||[b]]"); new ParserTester("[a&]").assertParseCharacterClass("[[a]||[&]]"); new ParserTester("[a&&b]").assertParseCharacterClass("[[a]&&[b]]"); new ParserTester("[a&&[^b]]").assertParseCharacterClass("[[a]&&[^[b]]]"); new ParserTester("[a[^b]]").assertParseCharacterClass("[[a]||[^[b]]]"); new ParserTester("[a[b]]").assertParseCharacterClass("[[a]||[b]]"); new ParserTester("[a[b]c]").assertParseCharacterClass("[[a]||[[b]||[c]]]"); new ParserTester("[[a]bc]").assertParseCharacterClass("[[a]||[[b]||[c]]]"); new ParserTester("[-]").assertParseCharacterClass("[-]"); new ParserTester("[a-]").assertParseCharacterClass("[[a]||[-]]"); // new ParserTester("[---]").assertParseCharacterClass("[---]"); new ParserTester("[#--]").assertParseCharacterClass("[#--]"); }
public void testQuantifier() { new ParserTester("*").assertParseQuantifier(Quantifier.zeroOrMore(Quantifier.Mode.GREEDY)); new ParserTester("+").assertParseQuantifier(Quantifier.oneOrMore(Quantifier.Mode.GREEDY)); new ParserTester("?").assertParseQuantifier(Quantifier.onceOrNotAtAll(Quantifier.Mode.GREEDY)); new ParserTester("*a").assertParseQuantifier(Quantifier.zeroOrMore(Quantifier.Mode.GREEDY)); new ParserTester("+a").assertParseQuantifier(Quantifier.oneOrMore(Quantifier.Mode.GREEDY)); new ParserTester("?a").assertParseQuantifier(Quantifier.onceOrNotAtAll(Quantifier.Mode.GREEDY)); new ParserTester("*?").assertParseQuantifier(Quantifier.zeroOrMore(Quantifier.Mode.RELUCTANT)); new ParserTester("+?").assertParseQuantifier(Quantifier.oneOrMore(Quantifier.Mode.RELUCTANT)); new ParserTester("??").assertParseQuantifier(Quantifier.onceOrNotAtAll(Quantifier.Mode.RELUCTANT)); new ParserTester("*+").assertParseQuantifier(Quantifier.zeroOrMore(Quantifier.Mode.POSSESSIVE)); new ParserTester("++").assertParseQuantifier(Quantifier.oneOrMore(Quantifier.Mode.POSSESSIVE)); new ParserTester("?+").assertParseQuantifier(Quantifier.onceOrNotAtAll(Quantifier.Mode.POSSESSIVE)); new ParserTester("a").assertParseQuantifier(null); new ParserTester("").assertParseQuantifier(null); new ParserTester("{2}").assertParseQuantifier(Quantifier.exactly(Quantifier.Mode.GREEDY, 2)); new ParserTester("{2,}").assertParseQuantifier(Quantifier.atLeast(Quantifier.Mode.GREEDY, 2)); new ParserTester("{2,4}").assertParseQuantifier(Quantifier.between(Quantifier.Mode.GREEDY, 2, 4)); }
public void testParseBracketExpression() { new ParserTester("[a]").assertParseCharacterClass("[a]"); new ParserTester("[^a]").assertParseCharacterClass("[^[a]]"); new ParserTester("[^a-b]").assertParseCharacterClass("[^[a-b]]"); new ParserTester("[a-b]").assertParseCharacterClass("[a-b]"); new ParserTester("[ab]").assertParseCharacterClass("[[a]||[b]]"); new ParserTester("[a&]").assertParseCharacterClass("[[a]||[&]]"); new ParserTester("[a&&b]").assertParseCharacterClass("[[a]&&[b]]"); new ParserTester("[a&&[^b]]").assertParseCharacterClass("[[a]&&[^[b]]]"); new ParserTester("[a[^b]]").assertParseCharacterClass("[[a]||[^[b]]]"); new ParserTester("[a[b]]").assertParseCharacterClass("[[a]||[b]]"); new ParserTester("[a[b]c]").assertParseCharacterClass("[[a]||[[b]||[c]]]"); new ParserTester("[[a]bc]").assertParseCharacterClass("[[a]||[[b]||[c]]]"); new ParserTester("[-]").assertParseCharacterClass("[-]"); new ParserTester("[a-]").assertParseCharacterClass("[[a]||[-]]"); // new ParserTester("[---]").assertParseCharacterClass("[---]"); new ParserTester("[#--]").assertParseCharacterClass("[#--]"); }
public void testExpression() { new ParserTester("").assertNotParseExpression(); new ParserTester("^").assertParseExpression("<^/>", 1); new ParserTester("^+").assertParseExpression("<+><^/></+>", 2); new ParserTester("$").assertParseExpression("<$/>", 1); new ParserTester("$+").assertParseExpression("<+><$/></+>", 2); new ParserTester("a").assertParseExpression("<c>a</c>", 1); new ParserTester("a+").assertParseExpression("<+><c>a</c></+>", 2); new ParserTester(".").assertParseExpression("<./>", 1); new ParserTester(".+").assertParseExpression("<+><./></+>", 2); new ParserTester("\\+").assertParseExpression("<c>+</c>", 2); new ParserTester("\\++").assertParseExpression("<+><c>+</c></+>", 3); new ParserTester("*").assertNotParseExpression(); new ParserTester("+").assertNotParseExpression(); new ParserTester("?").assertNotParseExpression(); new ParserTester("{").assertNotParseExpression(); new ParserTester("|").assertNotParseExpression(); }
public void testGroup() { new ParserTester("(a)").assertParseExpression("<(><c>a</c></(>", 3); new ParserTester("(a(b)c)").assertParseExpression("<(><c>a</c><(><c>b</c></(><c>c</c></(>", 7); new ParserTester("(?:a)").assertParseExpression("<(?:><c>a</c></(?:>", 5); new ParserTester("(?=a)").assertParseExpression("<(?=><c>a</c></(?=>", 5); new ParserTester("(?!a)").assertParseExpression("<(?!><c>a</c></(?!>", 5); new ParserTester("(?<=a)").assertParseExpression("<(?<=><c>a</c></(?<=>", 6); new ParserTester("(?<!a)").assertParseExpression("<(?<!><c>a</c></(?<!>", 6); new ParserTester("(?)").assertParseExpression("<(><c>?</c></(>", 3); new ParserTester("(?_)").assertNotParseExpression(); new ParserTester("(?<_)").assertNotParseExpression(); }
public void testDisjunction() { new ParserTester("a|").assertParseDisjunction("<c>a</c>|"); new ParserTester("|a").assertParseDisjunction("|<c>a</c>"); new ParserTester("a|b").assertParseDisjunction("<c>a</c>|<c>b</c>"); }
public void testExtendedRegexp() { new ParserTester("").assertParseDisjunction(""); new ParserTester(".").assertParseDisjunction("<./>"); new ParserTester("^").assertParseDisjunction("<^/>"); new ParserTester("^$").assertParseDisjunction("<^/><$/>"); new ParserTester("a").assertParseDisjunction("<c>a</c>"); new ParserTester("a|b").assertParseDisjunction("<c>a</c>|<c>b</c>"); new ParserTester("a|b|c").assertParseDisjunction("<c>a</c>|<c>b</c>|<c>c</c>"); new ParserTester("a+|b*").assertParseDisjunction("<+><c>a</c></+>|<*><c>b</c></*>"); new ParserTester("\\.").assertParseDisjunction("<c>.</c>"); }
public void testExtendedRegexp() { new ParserTester("").assertParseDisjunction(""); new ParserTester(".").assertParseDisjunction("<./>"); new ParserTester("^").assertParseDisjunction("<^/>"); new ParserTester("^$").assertParseDisjunction("<^/><$/>"); new ParserTester("a").assertParseDisjunction("<c>a</c>"); new ParserTester("a|b").assertParseDisjunction("<c>a</c>|<c>b</c>"); new ParserTester("a|b|c").assertParseDisjunction("<c>a</c>|<c>b</c>|<c>c</c>"); new ParserTester("a+|b*").assertParseDisjunction("<+><c>a</c></+>|<*><c>b</c></*>"); new ParserTester("\\.").assertParseDisjunction("<c>.</c>"); }
public void testDisjunction() { new ParserTester("a|").assertParseDisjunction("<c>a</c>|"); new ParserTester("|a").assertParseDisjunction("|<c>a</c>"); new ParserTester("a|b").assertParseDisjunction("<c>a</c>|<c>b</c>"); }
public void testGroup() { new ParserTester("(a)").assertParseExpression("<(><c>a</c></(>", 3); new ParserTester("(a(b)c)").assertParseExpression("<(><c>a</c><(><c>b</c></(><c>c</c></(>", 7); new ParserTester("(?:a)").assertParseExpression("<(?:><c>a</c></(?:>", 5); new ParserTester("(?=a)").assertParseExpression("<(?=><c>a</c></(?=>", 5); new ParserTester("(?!a)").assertParseExpression("<(?!><c>a</c></(?!>", 5); new ParserTester("(?<=a)").assertParseExpression("<(?<=><c>a</c></(?<=>", 6); new ParserTester("(?<!a)").assertParseExpression("<(?<!><c>a</c></(?<!>", 6); new ParserTester("(?)").assertParseExpression("<(><c>?</c></(>", 3); new ParserTester("(?_)").assertNotParseExpression(); new ParserTester("(?<_)").assertNotParseExpression(); }