/** * {@inheritDoc} */ @Override public void removeOperand(AbstractExpression operand) { getOperands().remove(operand); }
/** * {@inheritDoc} */ @Override public void addOperand(AbstractExpression operand) { if (canAddOperand() && !getOperands().contains(operand)) { getOperands().add(operand); } }
/** * {@inheritDoc} */ @Override public boolean evaluate(InvocationSequenceData invocSequence, ICachedDataService cachedDataService) { for (AbstractExpression expr : getOperands()) { if (!expr.evaluate(invocSequence, cachedDataService)) { return false; } } return true; }
@Test public void withElements() { AndExpression andExpression = new AndExpression(expr1, expr2, expr3); assertThat(andExpression.getOperands(), hasSize(3)); assertThat(andExpression.getOperands(), contains((AbstractExpression) expr1, expr2, expr3)); } }
@Test public void empty() { AndExpression andExpression = new AndExpression(); assertThat(andExpression.getOperands(), hasSize(0)); }
@Test public void removeOne() { AndExpression andExpression = new AndExpression(expr1, expr2, expr3); andExpression.removeOperand(expr2); assertThat(andExpression.getOperands(), hasSize(2)); }
@Test public void removeNotExistent() { AndExpression andExpression = new AndExpression(expr1, expr3); andExpression.removeOperand(expr2); assertThat(andExpression.getOperands(), hasSize(2)); }
@Test public void add() { AndExpression andExpression = new AndExpression(); andExpression.addOperand(new OrExpression()); assertThat(andExpression.getOperands(), hasSize(1)); }
@Test public void removeTwice() { AndExpression andExpression = new AndExpression(expr1, expr2, expr3); andExpression.removeOperand(expr2); andExpression.removeOperand(expr2); assertThat(andExpression.getOperands(), hasSize(2)); } }
@Test public void addDuplicate() { AndExpression andExpression = new AndExpression(); OrExpression operand = new OrExpression(); andExpression.addOperand(operand); andExpression.addOperand(operand); assertThat(andExpression.getOperands(), hasSize(1)); } }
@Test public void addTwo() { AndExpression andExpression = new AndExpression(); andExpression.addOperand(new OrExpression()); andExpression.addOperand(new OrExpression()); assertThat(andExpression.getOperands(), hasSize(2)); }