@Test public void testDistribute2() { ConstantTupleExpression n = new ConstantTupleExpression(10); ExpressionCountDistributor cntDistributor = new ExpressionCountDistributor(n); TupleExpression t1 = new ConstantTupleExpression(1); TupleExpression t2 = new ConstantTupleExpression(2); TupleExpression t3 = new ConstantTupleExpression(1); TupleExpression t4 = new ConstantTupleExpression(2); TblColRef c = PowerMockito.mock(TblColRef.class); PowerMockito.when(c.getType()).thenReturn(DataType.getType("decimal")); TupleExpression t5 = new ColumnTupleExpression(c); IEvaluatableTuple evaluatableTuple = PowerMockito.mock(IEvaluatableTuple.class); IFilterCodeSystem filterCodeSystem = PowerMockito.mock(IFilterCodeSystem.class); t5 = PowerMockito.spy(t5); PowerMockito.when(t5.calculate(evaluatableTuple, filterCodeSystem)).thenReturn(new BigDecimal(3)); TupleExpression t6 = new ConstantTupleExpression(1); TupleExpression t7 = new ConstantTupleExpression(3); TupleExpression t8 = new ConstantTupleExpression(2); TupleExpression t9 = new ConstantTupleExpression(2); TupleExpression t10 = new ConstantTupleExpression(3); TupleExpression t11 = new ConstantTupleExpression(4); TupleExpression t12 = new ConstantTupleExpression(6); TupleExpression t13 = new ConstantTupleExpression(2); TupleExpression t14 = new ConstantTupleExpression(1); TupleExpression b1 = new BinaryTupleExpression(ExpressionOperatorEnum.PLUS, t1, t2); TupleExpression b2 = new BinaryTupleExpression(ExpressionOperatorEnum.PLUS, t3, t4); TupleExpression b3 = new BinaryTupleExpression(ExpressionOperatorEnum.PLUS, t5, t6); TupleExpression b4 = new BinaryTupleExpression(ExpressionOperatorEnum.PLUS, t8, t5); TupleExpression b5 = new BinaryTupleExpression(ExpressionOperatorEnum.PLUS, t9, t10); TupleExpression b6 = new BinaryTupleExpression(ExpressionOperatorEnum.MULTIPLE, t5, t13); TupleExpression b11 = new BinaryTupleExpression(ExpressionOperatorEnum.MULTIPLE, b2, b3); TupleExpression b12 = new BinaryTupleExpression(ExpressionOperatorEnum.MULTIPLE, b4, b5); TupleExpression b21 = new BinaryTupleExpression(ExpressionOperatorEnum.PLUS, b11, t7); TupleExpression b22 = new BinaryTupleExpression(ExpressionOperatorEnum.PLUS, b12, t11); TupleFilter f1 = PowerMockito.mock(CompareTupleFilter.class); TupleFilter f2 = PowerMockito.mock(CompareTupleFilter.class); List<Pair<TupleFilter, TupleExpression>> whenList = Lists.newArrayList(); whenList.add(new Pair<>(f1, b21)); whenList.add(new Pair<>(f2, b22)); TupleExpression b31 = new CaseTupleExpression(whenList, t12); TupleExpression b41 = new BinaryTupleExpression(ExpressionOperatorEnum.MULTIPLE, b1, b31); TupleExpression b51 = new BinaryTupleExpression(ExpressionOperatorEnum.PLUS, b41, b6); TupleExpression b61 = new BinaryTupleExpression(ExpressionOperatorEnum.PLUS, b51, t14); TupleExpression ret = b61.accept(cntDistributor); assertTrue(cntDistributor.ifCntSet()); PowerMockito.when(f1.evaluate(evaluatableTuple, filterCodeSystem)).thenReturn(true); assertEquals(new BigDecimal(223), ret.calculate(evaluatableTuple, filterCodeSystem)); PowerMockito.when(f1.evaluate(evaluatableTuple, filterCodeSystem)).thenReturn(false); PowerMockito.when(f2.evaluate(evaluatableTuple, filterCodeSystem)).thenReturn(true); assertEquals(new BigDecimal(481), ret.calculate(evaluatableTuple, filterCodeSystem)); PowerMockito.when(f1.evaluate(evaluatableTuple, filterCodeSystem)).thenReturn(false); PowerMockito.when(f2.evaluate(evaluatableTuple, filterCodeSystem)).thenReturn(false); assertEquals(new BigDecimal(196), ret.calculate(evaluatableTuple, filterCodeSystem)); }
public boolean ifCntSet() { return ifCntSet; }
ExpressionCountDistributor implements ExpressionVisitor { public boolean ifCntSet() { return ifCntSet; } }
ExpressionCountDistributor implements ExpressionVisitor { public boolean ifCntSet() { return ifCntSet; } ExpressionCountDistributor(TupleExpression cntExpr); }
ExpressionCountDistributor implements ExpressionVisitor { public boolean ifCntSet() { return ifCntSet; } ExpressionCountDistributor(TupleExpression cntExpr); @Override TupleExpression visitConstant(ConstantTupleExpression constExpr); @Override TupleExpression visitColumn(ColumnTupleExpression colExpr); @Override TupleExpression visitBinary(BinaryTupleExpression binaryExpr); @Override TupleExpression visitCaseCall(CaseTupleExpression caseExpr); @Override TupleExpression visitRexCall(RexCallTupleExpression rexCallExpr); @Override TupleExpression visitNone(NoneTupleExpression noneExpr); boolean ifCntSet(); }
ExpressionCountDistributor implements ExpressionVisitor { public boolean ifCntSet() { return ifCntSet; } ExpressionCountDistributor(TupleExpression cntExpr); @Override TupleExpression visitConstant(ConstantTupleExpression constExpr); @Override TupleExpression visitColumn(ColumnTupleExpression colExpr); @Override TupleExpression visitBinary(BinaryTupleExpression binaryExpr); @Override TupleExpression visitCaseCall(CaseTupleExpression caseExpr); @Override TupleExpression visitRexCall(RexCallTupleExpression rexCallExpr); @Override TupleExpression visitNone(NoneTupleExpression noneExpr); boolean ifCntSet();  }