public void testFilterRuleWith2And2() throws Exception {
prep();
// build an expression with 2 AND, it should split into 3 filters
LogicalExpressionPlan p5 = new LogicalExpressionPlan();
LogicalExpression lp3 = new ProjectExpression(p5, 0, 2, filter);
LogicalExpression cont = new ConstantExpression(p5, new Integer(3));
p5.add(lp3);
p5.add(cont);
LogicalExpression eq = new EqualExpression(p5, lp3, cont);
lp3 = new ProjectExpression(p5, 0, 0, filter);
LogicalExpression lp4 = new ProjectExpression(p5, 0, 3, filter);
p5.add(lp4);
p5.add(lp3);
LogicalExpression eq2 = new EqualExpression(p5, lp3, lp4);
LogicalExpression and1 = new AndExpression(p5, eq, eq2);
lp3 = new ProjectExpression(p5, 0, 2, filter);
lp4 = new ProjectExpression(p5, 0, 5, filter);
p5.add(lp3);
p5.add(lp4);
eq2 = new EqualExpression(p5, lp3, lp4);
LogicalExpression and2 = new AndExpression(p5, and1, eq2);
((LOFilter)filter).setFilterPlan(p5);
Rule r = new SplitFilter("SplitFilter");
Set<Rule> s = new HashSet<Rule>();