Search in sources :

Example 1 with ParseException

use of edu.uci.ics.texera.textql.languageparser.ParseException in project textdb by TextDB.

the class TextQLParserTest method testStatementsMain.

/**
 * Test the statementsMain method of the parser.
 * It should parse a list of statements and return the expected list
 * of Statement object and provide the Statements to the consumer.
 * @throws ParseException if an unexpected ParseException is thrown
 */
@Test
public void testStatementsMain() throws ParseException {
    // Declaration of multiple statements for testing
    String SelectStatement00 = "SELECT * FROM a;";
    String SelectStatement13 = "SELECT h, i, j, KEYWORDMATCH([h6,h7,k8,k9], \"key5\") FROM q LIMIT 5 OFFSET 6;";
    String SelectStatement14 = "SELECT KEYWORDMATCH(i6, \"key5\") FROM q;";
    String createViewStatement00 = " CREATE VIEW v0 AS SELECT * FROM a; ";
    String createViewStatement01 = " CREATE VIEW v1 AS SELECT f8, fa, fc, df, ff FROM j LIMIT 1 OFFSET 8; ";
    String createViewStatement02 = " CREATE VIEW v2 AS SELECT e, KEYWORDMATCH([g4,g5], \"key0\") FROM o ;";
    String createViewStatement03 = " CREATE VIEW v2 AS SELECT KEYWORDMATCH([g4,g5], \"key0\", substring) FROM o ;";
    // Example of statement objects used for testing
    ProjectPredicate SelectStatementSelect00 = new ProjectAllFieldsPredicate();
    // Statement SelectStatementParameters00 = new SelectStatement("_sid0", , null, "a", null, null);
    ProjectPredicate SelectStatementSelect13 = new ProjectSomeFieldsPredicate(Arrays.asList("h", "i", "j"));
    ExtractPredicate SelectStatementExtract13 = new KeywordExtractPredicate(Arrays.asList("h6", "h7", "k8", "k9"), "key5", null);
    // Statement SelectStatementParameters13 = new SelectStatement("_sid0", , SelectStatementExtract13, "q", 5, 6);
    ExtractPredicate SelectStatementExtract14 = new KeywordExtractPredicate(Arrays.asList("i6"), "key5", null);
    // Statement SelectStatementParameters14 = new SelectStatement("_sid0", null, SelectStatementExtract14, "q", null, null);
    ProjectPredicate cfreateViewStatementSelect00 = new ProjectAllFieldsPredicate();
    // Statement createViewStatementSelect00 = new SelectStatement("_sid0", , null, "a", null, null);
    // Statement createViewStatementParameters00 = new CreateViewStatement("v0", createViewStatementSelect00);
    ProjectPredicate createViewStatementSelect01 = new ProjectSomeFieldsPredicate(Arrays.asList("f8", "fa", "fc", "df", "ff"));
    // Statement createViewStatementSelect01 = new SelectStatement("_sid0", , null, "j", 1, 8);
    // Statement createViewStatementParameters01 = new CreateViewStatement("v1", createViewStatementSelect01);
    ProjectPredicate createViewStatementSelect02 = new ProjectSomeFieldsPredicate(Arrays.asList("e"));
    ExtractPredicate createViewStatementExtract02 = new KeywordExtractPredicate(Arrays.asList("g4", "g5"), "key0", null);
    // Statement createViewStatementSelect02 = new SelectStatement("_sid0", , createViewStatementExtract02, "o", null, null);
    // Statement createViewStatementParameters02 = new CreateViewStatement("v2", createViewStatementSelect02);
    ExtractPredicate createViewStatementExtract03 = new KeywordExtractPredicate(Arrays.asList("g4", "g5"), "key0", "substring");
    // Statement createViewStatementSelect03 = new SelectStatement("_sid0", null, createViewStatementExtract03, "o", null, null);
    // Statement createViewStatementParameters03 = new CreateViewStatement("v2", createViewStatementSelect03);
    // Test combinations of statements
    String statements00 = SelectStatement00;
    Statement statements00Select = new SelectStatement("_sid0", SelectStatementSelect00, null, "a", null, null);
    List<Statement> statements00Result = Arrays.asList(statements00Select);
    Assert.assertEquals((new TextQLParser(string2InputStream(statements00))).mainStatementList(null), statements00Result);
    String statements01 = createViewStatement02;
    Statement statements01Select = new SelectStatement("_sid0", createViewStatementSelect02, createViewStatementExtract02, "o", null, null);
    Statement statements01CreateView = new CreateViewStatement("v2", statements01Select);
    List<Statement> statements01Result = Arrays.asList(statements01CreateView);
    Assert.assertEquals((new TextQLParser(string2InputStream(statements01))).mainStatementList(null), statements01Result);
    String statements02 = createViewStatement02 + SelectStatement00;
    Statement statements02Select00 = new SelectStatement("_sid0", createViewStatementSelect02, createViewStatementExtract02, "o", null, null);
    Statement statements02CreateView00 = new CreateViewStatement("v2", statements02Select00);
    Statement statements02Select01 = new SelectStatement("_sid1", SelectStatementSelect00, null, "a", null, null);
    List<Statement> statementsResult02 = Arrays.asList(statements02CreateView00, statements02Select01);
    List<Statement> statementsConsumed02 = new ArrayList<>();
    Assert.assertEquals((new TextQLParser(string2InputStream(statements02))).mainStatementList(null), statementsResult02);
    Assert.assertEquals((new TextQLParser(string2InputStream(statements02))).mainStatementList(s -> statementsConsumed02.add(s)), statementsResult02);
    Assert.assertEquals(statementsConsumed02, statementsResult02);
    String statements03 = SelectStatement00 + createViewStatement00 + createViewStatement03;
    Statement statements03Select00 = new SelectStatement("_sid0", SelectStatementSelect00, null, "a", null, null);
    Statement statements03Select01 = new SelectStatement("_sid1", cfreateViewStatementSelect00, null, "a", null, null);
    Statement statements03CreateView01 = new CreateViewStatement("v0", statements03Select01);
    Statement statements03Select02 = new SelectStatement("_sid2", null, createViewStatementExtract03, "o", null, null);
    Statement statements03CreateView02 = new CreateViewStatement("v2", statements03Select02);
    List<Statement> statements03Result = Arrays.asList(statements03Select00, statements03CreateView01, statements03CreateView02);
    List<Statement> statements03Consumed = new ArrayList<>();
    Assert.assertEquals((new TextQLParser(string2InputStream(statements03))).mainStatementList(null), statements03Result);
    Assert.assertEquals((new TextQLParser(string2InputStream(statements03))).mainStatementList(s -> statements03Consumed.add(s)), statements03Result);
    Assert.assertEquals(statements03Consumed, statements03Result);
    String statements04 = createViewStatement02 + SelectStatement14 + SelectStatement13;
    Statement statements04Select00 = new SelectStatement("_sid0", createViewStatementSelect02, createViewStatementExtract02, "o", null, null);
    Statement statements04CreateView00 = new CreateViewStatement("v2", statements04Select00);
    Statement statements04Select01 = new SelectStatement("_sid1", null, SelectStatementExtract14, "q", null, null);
    Statement statements04Select02 = new SelectStatement("_sid2", SelectStatementSelect13, SelectStatementExtract13, "q", 5, 6);
    List<Statement> statements04Result = Arrays.asList(statements04CreateView00, statements04Select01, statements04Select02);
    List<Statement> statements04Consumed = new ArrayList<>();
    Assert.assertEquals((new TextQLParser(string2InputStream(statements04))).mainStatementList(null), statements04Result);
    Assert.assertEquals((new TextQLParser(string2InputStream(statements04))).mainStatementList(s -> statements04Consumed.add(s)), statements04Result);
    Assert.assertEquals(statements04Consumed, statements04Result);
    String statements05 = createViewStatement01 + SelectStatement13 + createViewStatement03;
    Statement statements05Select00 = new SelectStatement("_sid0", createViewStatementSelect01, null, "j", 1, 8);
    Statement statements05CreateView00 = new CreateViewStatement("v1", statements05Select00);
    Statement statements05Select01 = new SelectStatement("_sid1", SelectStatementSelect13, SelectStatementExtract13, "q", 5, 6);
    Statement statements05Select02 = new SelectStatement("_sid2", null, createViewStatementExtract03, "o", null, null);
    Statement statements05CreateView02 = new CreateViewStatement("v2", statements05Select02);
    List<Statement> statements05Result = Arrays.asList(statements05CreateView00, statements05Select01, statements05CreateView02);
    List<Statement> statements05Consumed = new ArrayList<>();
    Assert.assertEquals((new TextQLParser(string2InputStream(statements05))).mainStatementList(null), statements05Result);
    Assert.assertEquals((new TextQLParser(string2InputStream(statements05))).mainStatementList(s -> statements05Consumed.add(s)), statements05Result);
    Assert.assertEquals(statements05Consumed, statements05Result);
}
Also used : PrintStream(java.io.PrintStream) CreateViewStatement(edu.uci.ics.texera.textql.statements.CreateViewStatement) ProjectAllFieldsPredicate(edu.uci.ics.texera.textql.statements.predicates.ProjectAllFieldsPredicate) ProjectPredicate(edu.uci.ics.texera.textql.statements.predicates.ProjectPredicate) ProjectSomeFieldsPredicate(edu.uci.ics.texera.textql.statements.predicates.ProjectSomeFieldsPredicate) Arrays(java.util.Arrays) ParseException(edu.uci.ics.texera.textql.languageparser.ParseException) SelectStatement(edu.uci.ics.texera.textql.statements.SelectStatement) IOException(java.io.IOException) Callable(java.util.concurrent.Callable) Test(org.junit.Test) PipedOutputStream(java.io.PipedOutputStream) ArrayList(java.util.ArrayList) List(java.util.List) ExtractPredicate(edu.uci.ics.texera.textql.statements.predicates.ExtractPredicate) Statement(edu.uci.ics.texera.textql.statements.Statement) PipedInputStream(java.io.PipedInputStream) TokenMgrError(edu.uci.ics.texera.textql.languageparser.TokenMgrError) Assert(junit.framework.Assert) KeywordExtractPredicate(edu.uci.ics.texera.textql.statements.predicates.KeywordExtractPredicate) TextQLParser(edu.uci.ics.texera.textql.languageparser.TextQLParser) InputStream(java.io.InputStream) ProjectPredicate(edu.uci.ics.texera.textql.statements.predicates.ProjectPredicate) CreateViewStatement(edu.uci.ics.texera.textql.statements.CreateViewStatement) CreateViewStatement(edu.uci.ics.texera.textql.statements.CreateViewStatement) SelectStatement(edu.uci.ics.texera.textql.statements.SelectStatement) Statement(edu.uci.ics.texera.textql.statements.Statement) ProjectAllFieldsPredicate(edu.uci.ics.texera.textql.statements.predicates.ProjectAllFieldsPredicate) ArrayList(java.util.ArrayList) SelectStatement(edu.uci.ics.texera.textql.statements.SelectStatement) ExtractPredicate(edu.uci.ics.texera.textql.statements.predicates.ExtractPredicate) KeywordExtractPredicate(edu.uci.ics.texera.textql.statements.predicates.KeywordExtractPredicate) ProjectSomeFieldsPredicate(edu.uci.ics.texera.textql.statements.predicates.ProjectSomeFieldsPredicate) KeywordExtractPredicate(edu.uci.ics.texera.textql.statements.predicates.KeywordExtractPredicate) TextQLParser(edu.uci.ics.texera.textql.languageparser.TextQLParser) Test(org.junit.Test)

Aggregations

ParseException (edu.uci.ics.texera.textql.languageparser.ParseException)1 TextQLParser (edu.uci.ics.texera.textql.languageparser.TextQLParser)1 TokenMgrError (edu.uci.ics.texera.textql.languageparser.TokenMgrError)1 CreateViewStatement (edu.uci.ics.texera.textql.statements.CreateViewStatement)1 SelectStatement (edu.uci.ics.texera.textql.statements.SelectStatement)1 Statement (edu.uci.ics.texera.textql.statements.Statement)1 ExtractPredicate (edu.uci.ics.texera.textql.statements.predicates.ExtractPredicate)1 KeywordExtractPredicate (edu.uci.ics.texera.textql.statements.predicates.KeywordExtractPredicate)1 ProjectAllFieldsPredicate (edu.uci.ics.texera.textql.statements.predicates.ProjectAllFieldsPredicate)1 ProjectPredicate (edu.uci.ics.texera.textql.statements.predicates.ProjectPredicate)1 ProjectSomeFieldsPredicate (edu.uci.ics.texera.textql.statements.predicates.ProjectSomeFieldsPredicate)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 PipedInputStream (java.io.PipedInputStream)1 PipedOutputStream (java.io.PipedOutputStream)1 PrintStream (java.io.PrintStream)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 List (java.util.List)1 Callable (java.util.concurrent.Callable)1