#855442 : improved handling of orAllOf, andAnyOf, allOf and anyOf methods

This commit is contained in:
Timo Westkämper 2011-09-26 10:34:47 +03:00
parent f4e46024b2
commit 1238532e55
4 changed files with 63 additions and 2 deletions

View File

@ -29,7 +29,9 @@ public final class ExpressionUtils {
public static Predicate allOf(Predicate... exprs){
Predicate rv = null;
for (Predicate b : exprs){
rv = rv == null ? b : ExpressionUtils.and(rv,b);
if (b != null) {
rv = rv == null ? b : ExpressionUtils.and(rv,b);
}
}
return rv;
}
@ -55,7 +57,9 @@ public final class ExpressionUtils {
public static Predicate anyOf(Predicate... exprs){
Predicate rv = null;
for (Predicate b : exprs){
rv = rv == null ? b : ExpressionUtils.or(rv,b);
if (b != null) {
rv = rv == null ? b : ExpressionUtils.or(rv,b);
}
}
return rv;
}

View File

@ -23,6 +23,35 @@ public class BooleanBuilderTest {
private final BooleanExpression second = BooleanConstant.FALSE;
@Test
public void AndAnyOf() {
BooleanBuilder builder = new BooleanBuilder();
builder.andAnyOf(first, null);
assertEquals(first, builder.getValue());
}
@Test
public void AndAnyOf2() {
BooleanBuilder builder = new BooleanBuilder();
builder.andAnyOf(null, first);
assertEquals(first, builder.getValue());
}
@Test
public void OrAllOf() {
BooleanBuilder builder = new BooleanBuilder();
builder.orAllOf(first, null);
assertEquals(first, builder.getValue());
}
@Test
public void OrAllOf2() {
BooleanBuilder builder = new BooleanBuilder();
builder.orAllOf(null, first);
assertEquals(first, builder.getValue());
}
@Test(expected=QueryException.class)
public void WrappedBooleanBuilder(){
new BooleanBuilder(new BooleanBuilder());

View File

@ -23,11 +23,25 @@ public class ExpressionsTest {
public void AllOf() {
assertEquals("a && b", Expressions.allOf(a, b).toString());
}
@Test
public void AllOf_With_Nulls() {
assertEquals("a && b", Expressions.allOf(a, b, null).toString());
assertEquals("a", Expressions.allOf(a, null).toString());
assertEquals("a", Expressions.allOf(null, a).toString());
}
@Test
public void AnyOf() {
assertEquals("a || b", Expressions.anyOf(a, b).toString());
}
@Test
public void AnyOf_With_Nulls() {
assertEquals("a || b", Expressions.anyOf(a, b, null).toString());
assertEquals("a", Expressions.anyOf(a, null).toString());
assertEquals("a", Expressions.anyOf(null, a).toString());
}
@Test
public void Constant() {

View File

@ -21,6 +21,20 @@ public class BooleanExpressionTest {
public void AllOf(){
assertEquals(a.and(b).and(c), BooleanExpression.allOf(a, b, c));
}
@Test
public void AllOf_With_Nulls() {
assertEquals("a && b", BooleanExpression.allOf(a, b, null).toString());
assertEquals("a", BooleanExpression.allOf(a, null).toString());
assertEquals("a", BooleanExpression.allOf(null, a).toString());
}
@Test
public void AnyOf_With_Nulls() {
assertEquals("a || b", BooleanExpression.anyOf(a, b, null).toString());
assertEquals("a", BooleanExpression.anyOf(a, null).toString());
assertEquals("a", BooleanExpression.anyOf(null, a).toString());
}
@Test
public void AndAnyOf(){