BatchAggregationExpression extends PathSegmentExpression { Partial getPartial(final int index) { return this.partials.get(index); } BatchAggregationExpression();  BatchAggregationExpression(final Aggregation... functions);  BatchAggregationExpression(final List<Aggregation> functions); AggregationExpression add(final Aggregation function); AggregationExpression add(final Aggregation function, final EvaluationExpression preprocessing); EvaluationExpression add(final ExpressionFunction aggregation); EvaluationExpression add(final ExpressionFunction aggregation, final EvaluationExpression preprocessing); @Override void appendAsString(final Appendable appendable); @Override boolean equalsSameClass(final PathSegmentExpression other); EvaluationExpression get(final int index);  }
@Test public void testMultipleClones() throws IllegalAccessException { final BatchAggregationExpression original = this.createBatchExpression(); final Partial partial1Clone = (Partial) original.getPartial(0).clone(); final Partial partial2Clone = (Partial) original.getPartial(1).clone(); final Partial partial1Clone2 = (Partial) original.getPartial(0).clone(); final Partial partial2Clone2 = (Partial) original.getPartial(1).clone(); this.testPropertyClone(BatchAggregationExpression.class, original, partial1Clone.getBatch()); this.testPropertyClone(BatchAggregationExpression.class, original, partial1Clone2.getBatch()); this.testPropertyClone(BatchAggregationExpression.class, partial1Clone.getBatch(), partial1Clone2.getBatch()); Assert.assertSame(partial1Clone.getBatch(), partial2Clone.getBatch()); Assert.assertSame(partial1Clone2.getBatch(), partial2Clone2.getBatch()); }
@Test public void testPartialClone() throws IllegalAccessException { final BatchAggregationExpression original = this.createBatchExpression(); final Partial partial1Clone = (Partial) original.getPartial(0).clone(); final Partial partial2Clone = (Partial) original.getPartial(1).clone(); this.testPropertyClone(BatchAggregationExpression.class, original, partial1Clone.getBatch()); Assert.assertSame(partial1Clone.getBatch(), partial2Clone.getBatch()); }
@Test public void testSuccessiveClones() throws IllegalAccessException { final BatchAggregationExpression original = this.createBatchExpression(); final Partial partial1Clone = (Partial) original.getPartial(0).clone(); final Partial partial2Clone = (Partial) original.getPartial(1).clone(); final Partial partial1Clone2 = (Partial) partial1Clone.clone(); final Partial partial2Clone2 = (Partial) partial2Clone.clone(); this.testPropertyClone(BatchAggregationExpression.class, original, partial1Clone.getBatch()); this.testPropertyClone(BatchAggregationExpression.class, original, partial1Clone2.getBatch()); this.testPropertyClone(BatchAggregationExpression.class, partial1Clone.getBatch(), partial1Clone2.getBatch()); Assert.assertSame(partial1Clone.getBatch(), partial2Clone.getBatch()); Assert.assertSame(partial1Clone2.getBatch(), partial2Clone2.getBatch()); }