Search in sources :

Example 1 with ReportingParseRunner

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));
    }
}
Also used : ArrayList(java.util.ArrayList) KeywordTextParser(org.codice.ddf.endpoints.KeywordTextParser) ReportingParseRunner(org.parboiled.parserunners.ReportingParseRunner) Test(org.junit.Test)

Example 2 with ReportingParseRunner

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));
    }
}
Also used : ArrayList(java.util.ArrayList) KeywordTextParser(org.codice.ddf.endpoints.KeywordTextParser) ReportingParseRunner(org.parboiled.parserunners.ReportingParseRunner) Test(org.junit.Test)

Example 3 with ReportingParseRunner

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));
    }
}
Also used : ArrayList(java.util.ArrayList) KeywordTextParser(org.codice.ddf.opensearch.endpoint.KeywordTextParser) ReportingParseRunner(org.parboiled.parserunners.ReportingParseRunner) Test(org.junit.Test)

Example 4 with ReportingParseRunner

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));
    }
}
Also used : ArrayList(java.util.ArrayList) KeywordTextParser(org.codice.ddf.endpoints.KeywordTextParser) ReportingParseRunner(org.parboiled.parserunners.ReportingParseRunner) Test(org.junit.Test)

Example 5 with ReportingParseRunner

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));
    }
}
Also used : ArrayList(java.util.ArrayList) KeywordTextParser(org.codice.ddf.opensearch.endpoint.KeywordTextParser) ReportingParseRunner(org.parboiled.parserunners.ReportingParseRunner) Test(org.junit.Test)

Aggregations

ArrayList (java.util.ArrayList)6 Test (org.junit.Test)6 ReportingParseRunner (org.parboiled.parserunners.ReportingParseRunner)6 KeywordTextParser (org.codice.ddf.endpoints.KeywordTextParser)3 KeywordTextParser (org.codice.ddf.opensearch.endpoint.KeywordTextParser)3