@Test
  public void returnColumnsTest() throws Exception {
    Query q = new Query();
    List<String> reqCols = new ArrayList<>();
    reqCols.add("ABC");
    reqCols.add("DEF");
    reqCols.add("GHI");
    reqCols.add("JKL");
    q.setRequestedColumns(reqCols);

    QueryAtom maintable = new QueryAtom();
    maintable.setIntent(IntentType.PERSON);

    q.setPrimaryQuery(maintable);

    EzSecurityToken token = MockEzSecurityToken.getMockAppToken("test", "test");
    String res = qgImpl.generateSQLString(q, token);

    assertTrue(res.startsWith("SELECT ABC,DEF,GHI,JKL FROM testapp_PERSON WHERE secuuid = '"));
  }
  @Test
  public void binaryPredicatesAndTest() throws Exception {
    Query q = new Query();
    List<String> reqCols = new ArrayList<String>();
    reqCols.add("ABC");
    reqCols.add("DEF");
    reqCols.add("GHI");
    reqCols.add("JKL");
    q.setRequestedColumns(reqCols);

    QueryAtom maintable = new QueryAtom();
    maintable.setIntent(IntentType.PERSON);

    Predicate predicate = new Predicate();
    BinaryPredicate bpredicate = new BinaryPredicate();
    bpredicate.setColumnName("PRED1");
    bpredicate.setBinaryOperator(BinaryOperator.EQ);

    ColumnValue cv = new ColumnValue();
    cv.setStringValue("somestring");
    bpredicate.setValue(cv);
    predicate.setBinaryPredicate(bpredicate);

    Predicate predicate1 = new Predicate();
    BinaryPredicate bpredicate1 = new BinaryPredicate();
    bpredicate1.setColumnName("PRED2");
    bpredicate1.setBinaryOperator(BinaryOperator.GT);

    ColumnValue cv1 = new ColumnValue();
    cv1.setDoubleValue(1000000);
    bpredicate1.setValue(cv1);

    predicate1.setBinaryPredicate(bpredicate1);

    Predicate predicate2 = new Predicate();
    BinaryPredicate bpredicate2 = new BinaryPredicate();
    bpredicate2.setColumnName("PRED3");
    bpredicate2.setBinaryOperator(BinaryOperator.NE);

    ColumnValue cv2 = new ColumnValue();
    cv2.setBoolValue(false);
    bpredicate2.setValue(cv2);

    predicate2.setBinaryPredicate(bpredicate2);

    List<List<Predicate>> predicateList = new ArrayList<>();

    List<Predicate> predicates = new ArrayList<>();
    predicates.add(predicate);
    predicateList.add(predicates);

    List<Predicate> predicates1 = new ArrayList<>();
    predicates1.add(predicate1);
    predicateList.add(predicates1);

    List<Predicate> predicates2 = new ArrayList<>();
    predicates2.add(predicate2);
    predicateList.add(predicates2);

    maintable.setPredicates(predicateList);

    q.setPrimaryQuery(maintable);

    EzSecurityToken token = MockEzSecurityToken.getMockAppToken("test", "test");
    String res = qgImpl.generateSQLString(q, token);

    assertTrue(
        res.startsWith(
            "SELECT ABC,DEF,GHI,JKL FROM testapp_PERSON WHERE PRED1 = 'somestring' AND PRED2 > 1000000.0 "
                + "AND PRED3 != false AND secuuid = '"));
  }