Search in sources :

Example 1 with ParenthesisSymbol

use of com.cinchapi.ccl.grammar.ParenthesisSymbol in project concourse by cinchapi.

the class ConcourseCompilerTest method testGroupSub.

@Test
public void testGroupSub() {
    String key0 = TestData.getString();
    Operator operator0 = Operator.EQUALS;
    Object value0 = TestData.getObject();
    String key1 = TestData.getString();
    Operator operator1 = Operator.GREATER_THAN;
    Object value1 = TestData.getObject();
    String key2 = TestData.getString();
    Operator operator2 = Operator.LESS_THAN;
    Object value2 = TestData.getObject();
    Criteria criteria = Criteria.where().key(key0).operator(operator0).value(value0).and().group(Criteria.where().key(key1).operator(operator1).value(value1).or().key(key2).operator(operator2).value(value2).build()).build();
    List<Symbol> symbols = Parsing.groupExpressions(criteria.symbols());
    ExpressionSymbol exp0 = (ExpressionSymbol) symbols.get(0);
    ConjunctionSymbol sym1 = (ConjunctionSymbol) symbols.get(1);
    ParenthesisSymbol sym2 = (ParenthesisSymbol) symbols.get(2);
    ExpressionSymbol exp3 = (ExpressionSymbol) symbols.get(3);
    ConjunctionSymbol sym4 = (ConjunctionSymbol) symbols.get(4);
    ExpressionSymbol exp5 = (ExpressionSymbol) symbols.get(5);
    ParenthesisSymbol sym6 = (ParenthesisSymbol) symbols.get(6);
    Assert.assertEquals(7, symbols.size());
    Assert.assertEquals(exp0.raw().key(), key0);
    Assert.assertEquals(exp0.raw().operator(), operator0);
    Assert.assertEquals(exp0.values().get(0).value(), value0);
    Assert.assertEquals(ConjunctionSymbol.AND, sym1);
    Assert.assertEquals(ParenthesisSymbol.LEFT, sym2);
    Assert.assertEquals(exp3.raw().key(), key1);
    Assert.assertEquals(exp3.raw().operator(), operator1);
    Assert.assertEquals(exp3.values().get(0).value(), value1);
    Assert.assertEquals(ConjunctionSymbol.OR, sym4);
    Assert.assertEquals(exp5.raw().key(), key2);
    Assert.assertEquals(exp5.raw().operator(), operator2);
    Assert.assertEquals(exp5.values().get(0).value(), value2);
    Assert.assertEquals(ParenthesisSymbol.RIGHT, sym6);
}
Also used : Operator(com.cinchapi.concourse.thrift.Operator) KeySymbol(com.cinchapi.ccl.grammar.KeySymbol) PostfixNotationSymbol(com.cinchapi.ccl.grammar.PostfixNotationSymbol) Symbol(com.cinchapi.ccl.grammar.Symbol) OperatorSymbol(com.cinchapi.ccl.grammar.OperatorSymbol) ValueSymbol(com.cinchapi.ccl.grammar.ValueSymbol) ExpressionSymbol(com.cinchapi.ccl.grammar.ExpressionSymbol) ConjunctionSymbol(com.cinchapi.ccl.grammar.ConjunctionSymbol) ParenthesisSymbol(com.cinchapi.ccl.grammar.ParenthesisSymbol) ExpressionSymbol(com.cinchapi.ccl.grammar.ExpressionSymbol) ParenthesisSymbol(com.cinchapi.ccl.grammar.ParenthesisSymbol) ConjunctionSymbol(com.cinchapi.ccl.grammar.ConjunctionSymbol) Test(org.junit.Test)

Aggregations

ConjunctionSymbol (com.cinchapi.ccl.grammar.ConjunctionSymbol)1 ExpressionSymbol (com.cinchapi.ccl.grammar.ExpressionSymbol)1 KeySymbol (com.cinchapi.ccl.grammar.KeySymbol)1 OperatorSymbol (com.cinchapi.ccl.grammar.OperatorSymbol)1 ParenthesisSymbol (com.cinchapi.ccl.grammar.ParenthesisSymbol)1 PostfixNotationSymbol (com.cinchapi.ccl.grammar.PostfixNotationSymbol)1 Symbol (com.cinchapi.ccl.grammar.Symbol)1 ValueSymbol (com.cinchapi.ccl.grammar.ValueSymbol)1 Operator (com.cinchapi.concourse.thrift.Operator)1 Test (org.junit.Test)1