Condition: add whereNot(), andNot() and orNot()
This commit is contained in:
parent
0fbb4f62b6
commit
fe355a3850
2 changed files with 63 additions and 1 deletions
|
@ -29,7 +29,7 @@ package net.kemitix.conditional;
|
||||||
public interface Condition {
|
public interface Condition {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new {@code Condition}.
|
* Create a new {@code Condition} for the clause.
|
||||||
*
|
*
|
||||||
* @param clause the condition to test
|
* @param clause the condition to test
|
||||||
*
|
*
|
||||||
|
@ -42,6 +42,17 @@ public interface Condition {
|
||||||
return new FalseCondition();
|
return new FalseCondition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new {@code Condition} for the boolean opposite of the clause.
|
||||||
|
*
|
||||||
|
* @param clause the condition to test
|
||||||
|
*
|
||||||
|
* @return the Condition
|
||||||
|
*/
|
||||||
|
static Condition whereNot(boolean clause) {
|
||||||
|
return where(!clause);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logically AND combine the current {@code Condition} with the clause.
|
* Logically AND combine the current {@code Condition} with the clause.
|
||||||
*
|
*
|
||||||
|
@ -51,6 +62,17 @@ public interface Condition {
|
||||||
*/
|
*/
|
||||||
Condition and(boolean clause);
|
Condition and(boolean clause);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logically AND combine the current {@code Condition} with boolean opposite of the clause.
|
||||||
|
*
|
||||||
|
* @param clause the condition to test
|
||||||
|
*
|
||||||
|
* @return the Condition
|
||||||
|
*/
|
||||||
|
default Condition andNot(boolean clause) {
|
||||||
|
return and(!clause);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logically OR combine the current {@code Condition} with the clause.
|
* Logically OR combine the current {@code Condition} with the clause.
|
||||||
*
|
*
|
||||||
|
@ -60,6 +82,17 @@ public interface Condition {
|
||||||
*/
|
*/
|
||||||
Condition or(boolean clause);
|
Condition or(boolean clause);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logically OR combine the current {@code Condition} with the boolean opposite of the clause.
|
||||||
|
*
|
||||||
|
* @param clause the condition to test
|
||||||
|
*
|
||||||
|
* @return the Condition
|
||||||
|
*/
|
||||||
|
default Condition orNot(boolean clause) {
|
||||||
|
return or(!clause);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Perform this response if the {@code Condition} is {@code true}.
|
* Perform this response if the {@code Condition} is {@code true}.
|
||||||
*
|
*
|
||||||
|
|
|
@ -115,6 +115,35 @@ public class ConditionalTest {
|
||||||
thenTheOtherwiseResponseRuns();
|
thenTheOtherwiseResponseRuns();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whereNotFalseThenRuns() {
|
||||||
|
//when
|
||||||
|
Condition.whereNot(false)
|
||||||
|
.then(thenResponse);
|
||||||
|
//then
|
||||||
|
thenTheThenResponseRuns();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whereTrueAndNotFalseThenRuns() {
|
||||||
|
//when
|
||||||
|
Condition.where(true)
|
||||||
|
.andNot(false)
|
||||||
|
.then(thenResponse);
|
||||||
|
//then
|
||||||
|
thenTheThenResponseRuns();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whereFalseOrNotFalseThenRuns() {
|
||||||
|
//when
|
||||||
|
Condition.where(false)
|
||||||
|
.orNot(false)
|
||||||
|
.then(thenResponse);
|
||||||
|
//then
|
||||||
|
thenTheThenResponseRuns();
|
||||||
|
}
|
||||||
|
|
||||||
private void whenOr(final boolean firstClause, final boolean secondClause) {
|
private void whenOr(final boolean firstClause, final boolean secondClause) {
|
||||||
Condition.where(firstClause)
|
Condition.where(firstClause)
|
||||||
.or(secondClause)
|
.or(secondClause)
|
||||||
|
|
Loading…
Reference in a new issue