mirror of
https://github.com/querydsl/querydsl.git
synced 2026-07-03 21:07:49 +08:00
#855442 : improved handling of orAllOf, andAnyOf, allOf and anyOf methods
This commit is contained in:
parent
f4e46024b2
commit
1238532e55
@ -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;
|
||||
}
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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(){
|
||||
|
||||
Loading…
Reference in New Issue
Block a user