### Question:
ConditionEvaluate { public boolean evaluate(List<String> row) throws ParseException { for (int i = 0; i < columnNames.length; i++) { jexlContext.set(columnNames[i], row.get(columnIndexes[i])); } Object value; try { value = expression.evaluate(jexlContext); } catch (Exception e) { throw new ParseException("Cannot evaluate condition: " + expression.getSourceText() + ". " + e.getLocalizedMessage(), e); } if (value instanceof Boolean) { return (Boolean)value; } throw new ParseException("Invalid condition: " + expression.getSourceText()); } ConditionEvaluate(List<String> columnNames, String condition); boolean evaluate(List<String> row); ToStringHelper toStringHelper(Object self); @Override String toString();  }### Answer:
@Test public void mixCondition() throws InitializationException, ParseException { String condition = "column1 == 123 && column2 == '456' && column3 > 0.2"; ConditionEvaluate c = new ConditionEvaluate(columnNames, condition); List<String> row = Lists.newArrayList("123", "456", "0.5"); assertEquals(true, c.evaluate(row)); row = Lists.newArrayList("123", "456", "-5"); assertEquals(false, c.evaluate(row)); isFalse("column1 == 123 || column2 == 321", "321", "123"); isTrue("column1 == 123 || column2 == 321", "123", "456"); isTrue("column1 == 123 || column2 == 321", "456", "321"); isFalse("(column1 == 123 || column2 == 321) && column3 == 5", "321", "123", "5"); isFalse("(column1 == 123 || column2 == 321) && column3 == 5", "123", "321", "4"); isTrue("(column1 == 123 || column2 == 321) && column3 == 5", "123", "456", "5"); isTrue("(column1 == 123 || column2 == 321) && column3 == 5", "234", "321", "5"); }