use of org.parboiled.parserunners.ReportingParseRunner in project ddf by codice.
the class TestKeywordTextParser method testNegatives.
@Test
public void testNegatives() {
// TODO add more expressions to test
List<String> inputs = new ArrayList<String>();
// these should fail even with loose parsing
inputs.add("");
inputs.add("()");
inputs.add("( )");
inputs.add(" ");
inputs.add("( Keyword");
inputs.add("(Keyword");
inputs.add("Keyword)");
inputs.add("Keyword )");
inputs.add("product2 NOT))(((( anothertitle");
inputs.add("(A AND B) NOT ((C OR D) AND (B NOT A) OR E");
inputs.add("(A AND B) NOT ((C\" AND (B NOT A)) OR E");
inputs.add("(A AND B) NOT (\"C\" AND \"B)) OR E");
inputs.add("(A AND B) NOT (\"A \"C\"\" AND (B)) OR E");
// this could be made valid
inputs.add("(\"A)()()(((()))()((()))))()(((((()))((\" B) OR C");
// if an escape character
// were introduced
inputs.add("() (stuff) OR C");
// one missing leading parenthesis
inputs.add("(((((((((((stuff))))))))))) OR C)");
// one missing trailing parenthesis
inputs.add("((((((((((((stuff)))))))))) OR C)");
inputs.add("((((((((((((\"stuff (stuff2)\"))))))))))) OR C)");
inputs.add("(\"A)()()(((()))()((()))))()(((((()))((\" B) OR C");
inputs.add("\"\"");
inputs.add("\"");
for (String input : inputs) {
KeywordTextParser parser = Parboiled.createParser(KeywordTextParser.class);
ParsingResult<?> result = new ReportingParseRunner(parser.inputPhrase()).run(input);
LOGGER.debug("input = {}\t\t=====>result matched = {}", input, result.matched);
assertThat("[" + input + "] should have failed.", result.parseErrors.size(), greaterThan(0));
}
}
use of org.parboiled.parserunners.ReportingParseRunner in project ddf by codice.
the class TestKeywordTextParser method testSpacing.
@Test
public void testSpacing() {
// TODO add more expressions to test
List<String> inputs = new ArrayList<String>();
inputs.add(" A B OR C");
inputs.add(" A B OR C ");
inputs.add(" A B OR C ");
inputs.add(" A B OR C");
inputs.add(" A B OR C");
inputs.add("A B OR C ");
inputs.add(" A B OR C NOT D AND E ");
for (String input : inputs) {
KeywordTextParser parser = Parboiled.createParser(KeywordTextParser.class);
ParsingResult<?> result = new ReportingParseRunner(parser.inputPhrase()).run(input);
assertEquals("Failed on input [" + input + "]. Parse Error [" + getErrorOutput(result) + "]", 0, result.parseErrors.size());
assertEquals("Failed to parse [" + input + "] properly.", input, ParseTreeUtils.getNodeText(result.parseTreeRoot, result.inputBuffer));
}
}
use of org.parboiled.parserunners.ReportingParseRunner in project ddf by codice.
the class KeywordTextParserTest method testSpacing.
@Test
public void testSpacing() {
// TODO add more expressions to test
List<String> inputs = new ArrayList<>();
inputs.add(" A B OR C");
inputs.add(" A B OR C ");
inputs.add(" A B OR C ");
inputs.add(" A B OR C");
inputs.add(" A B OR C");
inputs.add("A B OR C ");
inputs.add(" A B OR C NOT D AND E ");
for (String input : inputs) {
KeywordTextParser parser = Parboiled.createParser(KeywordTextParser.class);
ParsingResult<?> result = new ReportingParseRunner(parser.inputPhrase()).run(input);
assertEquals("Failed on input [" + input + "]. Parse Error [" + getErrorOutput(result) + "]", 0, result.parseErrors.size());
assertEquals("Failed to parse [" + input + "] properly.", input, ParseTreeUtils.getNodeText(result.parseTreeRoot, result.inputBuffer));
}
}
use of org.parboiled.parserunners.ReportingParseRunner in project ddf by codice.
the class TestKeywordTextParser method testPositives.
@Test
public void testPositives() {
// TODO add more expressions to test
List<String> inputs = new ArrayList<String>();
inputs.add("נּ€");
inputs.add("A AND B");
inputs.add("A AND B AND C");
inputs.add("A OR B");
inputs.add("(A OR B) ");
inputs.add(" (\"B\")");
inputs.add("( B)");
inputs.add("(\"A OR B \" )");
inputs.add("A NOT B");
inputs.add("A B");
inputs.add("AND");
inputs.add("\"AND\"");
inputs.add("test tester3");
inputs.add("A B OR C");
inputs.add("A \"B\" OR C");
inputs.add("A \"test\" OR C");
inputs.add("A B OR \"C\"");
inputs.add("$%'^&_+` ''''veryInterest*ingKeyword!@#$%^&_+-=`~1234567890[]{}\\|?/><,.:; OR %^&_+-=*`~123");
inputs.add("test TeSt1 OR another3test");
inputs.add("A B C D E A N D N O T O R F G H I \"J 1 2 3 4 5 6\" 2 * 7 8 9 # $ % ^ ! } [ ` ; ' <");
inputs.add("(\"A14356377856nyin8o789l;;l453 234l56;23$$#%#$@^#@&&!\" B) OR C");
inputs.add("(A AND B) OR C");
inputs.add("(A AND B) NOT ((C OR D) AND (B NOT A)) OR E");
inputs.add("A AND B AND C AND D OR E NOT F");
inputs.add("A B AND C D OR E NOT F");
inputs.add("(A B AND C D) OR E NOT F");
inputs.add("A NOT A");
inputs.add("A (NOT C) D");
inputs.add("(((Apple) AND (((Orange) OR Banana))))");
inputs.add("A B");
inputs.add("(\"A14356377856nyin8o789l;;l453 234l56;23$$#%#$@^#@&&!\" B) OR C");
inputs.add("( A )");
inputs.add(" AND ");
inputs.add(" keyword2 ");
inputs.add(" AND");
inputs.add("AND ");
inputs.add(" AND ");
inputs.add("\" AND \"");
inputs.add("(\"Keyword \")");
inputs.add("\" Keyword\"");
inputs.add("( \"Keyword\")");
inputs.add("A ( OR ) B");
inputs.add("((((((((((((\"stuff stuff2\"))))))))))) OR C)");
inputs.add("(\"A14356377856nyin8o789l;;l453 234l56;23$$#%#$@^#@&&!\" B) OR C");
for (String input : inputs) {
KeywordTextParser parser = Parboiled.createParser(KeywordTextParser.class);
ParsingResult<?> result = new ReportingParseRunner(parser.inputPhrase()).run(input);
LOGGER.debug("input = {}\t\t=====>result matched = {}", input, result.matched);
assertEquals("Failed on input [" + input + "]. Parse Error [" + getErrorOutput(result) + "]", 0, result.parseErrors.size());
assertEquals("Failed to parse [" + input + "] properly.", input, ParseTreeUtils.getNodeText(result.parseTreeRoot, result.inputBuffer));
}
}
use of org.parboiled.parserunners.ReportingParseRunner in project ddf by codice.
the class KeywordTextParserTest method testNegatives.
@Test
public void testNegatives() {
// TODO add more expressions to test
List<String> inputs = new ArrayList<>();
// these should fail even with loose parsing
inputs.add("");
inputs.add("()");
inputs.add("( )");
inputs.add(" ");
inputs.add("( Keyword");
inputs.add("(Keyword");
inputs.add("Keyword)");
inputs.add("Keyword )");
inputs.add("product2 NOT))(((( anothertitle");
inputs.add("(A AND B) NOT ((C OR D) AND (B NOT A) OR E");
inputs.add("(A AND B) NOT ((C\" AND (B NOT A)) OR E");
inputs.add("(A AND B) NOT (\"C\" AND \"B)) OR E");
inputs.add("(A AND B) NOT (\"A \"C\"\" AND (B)) OR E");
// this could be made valid
inputs.add("(\"A)()()(((()))()((()))))()(((((()))((\" B) OR C");
// if an escape character
// were introduced
inputs.add("() (stuff) OR C");
// one missing leading parenthesis
inputs.add("(((((((((((stuff))))))))))) OR C)");
// one missing trailing parenthesis
inputs.add("((((((((((((stuff)))))))))) OR C)");
inputs.add("((((((((((((\"stuff (stuff2)\"))))))))))) OR C)");
inputs.add("(\"A)()()(((()))()((()))))()(((((()))((\" B) OR C");
inputs.add("\"\"");
inputs.add("\"");
for (String input : inputs) {
KeywordTextParser parser = Parboiled.createParser(KeywordTextParser.class);
ParsingResult<?> result = new ReportingParseRunner(parser.inputPhrase()).run(input);
LOGGER.debug("input = {}\t\t=====>result matched = {}", input, result.matched);
assertThat("[" + input + "] should have failed.", result.parseErrors.size(), greaterThan(0));
}
}
Aggregations