This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push:
new 5afdb92cd CAY-2860 Translate (not)in expression with empty values -
add tests
5afdb92cd is described below
commit 5afdb92cdd861938444ae0b6508131983adcd09a
Author: Nikita Timofeev <[email protected]>
AuthorDate: Wed Jun 19 10:53:37 2024 +0400
CAY-2860 Translate (not)in expression with empty values
- add tests
---
.../apache/cayenne/exp/ExpressionFactoryTest.java | 12 ++++++++++
.../java/org/apache/cayenne/exp/ExpressionIT.java | 28 +++++++++++++++++++++-
2 files changed, 39 insertions(+), 1 deletion(-)
diff --git
a/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java
b/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java
index b4c7eb662..d52fc4782 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionFactoryTest.java
@@ -190,6 +190,12 @@ public class ExpressionFactoryTest {
assertEquals(Expression.FALSE, exp.getType());
}
+ @Test
+ public void testInExpEmpty() {
+ Expression in = ExpressionFactory.inExp("abc", List.of());
+ assertEquals(ExpressionFactory.expFalse(), in);
+ }
+
@Test
public void testNotInExp1() {
Expression exp = ExpressionFactory.notInExp("abc", "a", "b");
@@ -212,6 +218,12 @@ public class ExpressionFactoryTest {
assertEquals(Expression.TRUE, exp.getType());
}
+ @Test
+ public void testNotInExpEmpty() {
+ Expression in = ExpressionFactory.notInExp("abc", List.of());
+ assertEquals(ExpressionFactory.expTrue(), in);
+ }
+
@Test
public void testLikeExp() {
String v = "abc";
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionIT.java
b/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionIT.java
index 1255a8b07..461c51c21 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionIT.java
@@ -23,6 +23,9 @@ import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.access.DataContext;
import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.exp.parser.ASTIn;
+import org.apache.cayenne.exp.parser.ASTList;
+import org.apache.cayenne.exp.parser.SimpleNode;
import org.apache.cayenne.query.ObjectSelect;
import org.apache.cayenne.runtime.CayenneRuntime;
import org.apache.cayenne.testdo.testmap.Artist;
@@ -31,6 +34,7 @@ import org.apache.cayenne.unit.UnitDbAdapter;
import org.apache.cayenne.unit.di.runtime.CayenneProjects;
import org.apache.cayenne.unit.di.runtime.RuntimeCase;
import org.apache.cayenne.unit.di.runtime.UseCayenneRuntime;
+import org.junit.Ignore;
import org.junit.Test;
import java.util.ArrayList;
@@ -96,7 +100,7 @@ public class ExpressionIT extends RuntimeCase {
@Test
public void testFirst() {
- List<Painting> paintingList = new ArrayList<Painting>();
+ List<Painting> paintingList = new ArrayList<>();
Painting p1 = context.newObject(Painting.class);
p1.setPaintingTitle("x1");
paintingList.add(p1);
@@ -158,6 +162,28 @@ public class ExpressionIT extends RuntimeCase {
assertEquals(1, artists.size());
}
+ @Test
+ public void testInEmpty() {
+ Artist a1 = context.newObject(Artist.class);
+ a1.setArtistName("Picasso");
+ context.commitChanges();
+
+ List<Artist> artists = ObjectSelect.query(Artist.class,
Artist.ARTIST_NAME.in(List.of())).select(context);
+ assertTrue(artists.isEmpty());
+ }
+
+ @Test
+ @Ignore("see https://issues.apache.org/jira/browse/CAY-2860")
+ public void testExplicitInEmpty() {
+ Artist a1 = context.newObject(Artist.class);
+ a1.setArtistName("Picasso");
+ context.commitChanges();
+
+ ASTIn in = new ASTIn((SimpleNode)
Artist.ARTIST_NAME.getExpression(), new ASTList(List.of()));
+ List<Artist> artists = ObjectSelect.query(Artist.class,
in).select(context);
+ assertTrue(artists.isEmpty());
+ }
+
/**
* We are waiting invalid SQL here:
* data type of expression is not boolean in statement