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

Reply via email to