Repository: cayenne
Updated Branches:
  refs/heads/master 6438dc7e0 -> 2894d5ffa


cleanup, no change


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/0ffb210d
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/0ffb210d
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/0ffb210d

Branch: refs/heads/master
Commit: 0ffb210dd5f0b4a1b47651b9f8cc7540bd0522bd
Parents: 6438dc7
Author: aadamchik <aadamc...@apache.org>
Authored: Wed Dec 10 11:13:55 2014 +0300
Committer: aadamchik <aadamc...@apache.org>
Committed: Wed Dec 10 11:14:07 2014 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/query/SelectQueryIT.java | 1210 +++++++++---------
 1 file changed, 607 insertions(+), 603 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/0ffb210d/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java 
b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
index 8421310..74a738a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SelectQueryIT.java
@@ -19,6 +19,17 @@
 
 package org.apache.cayenne.query;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ObjectContext;
@@ -40,264 +51,256 @@ import org.apache.cayenne.unit.UnitDbAdapter;
 import org.apache.cayenne.unit.di.server.CayenneProjects;
 import org.apache.cayenne.unit.di.server.ServerCase;
 import org.apache.cayenne.unit.di.server.UseServerRuntime;
+import org.junit.Before;
 import org.junit.Test;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
 @UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
 public class SelectQueryIT extends ServerCase {
 
-    @Inject
-    private ObjectContext context;
+       @Inject
+       private ObjectContext context;
+
+       @Inject
+       private DBHelper dbHelper;
+
+       @Inject
+       private UnitDbAdapter accessStackAdapter;
+
+       private TableHelper tArtist;
+
+       @Before
+       public void before() {
+               this.tArtist = new TableHelper(dbHelper, 
"ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
+       }
+
+       protected void createArtistsDataSet() throws Exception {
+
+               long dateBase = System.currentTimeMillis();
+
+               for (int i = 1; i <= 20; i++) {
+                       tArtist.insert(i, "artist" + i, new 
java.sql.Date(dateBase + 10000 * i));
+               }
+       }
+
+       protected void createArtistsWildcardDataSet() throws Exception {
+               tArtist.insert(1, "_X", null);
+               tArtist.insert(2, "Y_", null);
+       }
+
+       @Test
+       public void testSetQualifier() {
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               assertNull(query.getQualifier());
+
+               Expression qual = 
ExpressionFactory.expressionOfType(Expression.AND);
+               query.setQualifier(qual);
+               assertNotNull(query.getQualifier());
+               assertSame(qual, query.getQualifier());
+       }
+
+       @Test
+       public void testAndQualifier() {
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               assertNull(query.getQualifier());
+
+               Expression e1 = 
ExpressionFactory.expressionOfType(Expression.EQUAL_TO);
+               query.andQualifier(e1);
+               assertSame(e1, query.getQualifier());
+
+               Expression e2 = 
ExpressionFactory.expressionOfType(Expression.NOT_EQUAL_TO);
+               query.andQualifier(e2);
+               assertEquals(Expression.AND, query.getQualifier().getType());
+       }
+
+       @Test
+       public void testOrQualifier() {
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               assertNull(query.getQualifier());
+
+               Expression e1 = 
ExpressionFactory.expressionOfType(Expression.EQUAL_TO);
+               query.orQualifier(e1);
+               assertSame(e1, query.getQualifier());
+
+               Expression e2 = 
ExpressionFactory.expressionOfType(Expression.NOT_EQUAL_TO);
+               query.orQualifier(e2);
+               assertEquals(Expression.OR, query.getQualifier().getType());
+       }
+
+       @Test
+       public void testFetchLimit() throws Exception {
+               createArtistsDataSet();
+
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               query.setFetchLimit(7);
+
+               List<?> objects = context.performQuery(query);
+               assertNotNull(objects);
+               assertEquals(7, objects.size());
+       }
+
+       @Test
+       public void testFetchOffset() throws Exception {
+
+               createArtistsDataSet();
+
+               int totalRows = context.select(new 
SelectQuery<Artist>(Artist.class)).size();
+
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               query.addOrdering("db:" + Artist.ARTIST_ID_PK_COLUMN, 
SortOrder.ASCENDING);
+               query.setFetchOffset(5);
+               List<Artist> results = context.select(query);
+
+               assertEquals(totalRows - 5, results.size());
+               assertEquals("artist6", results.get(0).getArtistName());
+       }
+
+       @Test
+       public void testDbEntityRoot() throws Exception {
+
+               createArtistsDataSet();
+               DbEntity artistDbEntity = 
context.getEntityResolver().getDbEntity("ARTIST");
+
+               SelectQuery query = new SelectQuery(artistDbEntity);
+               List<?> results = context.performQuery(query);
+
+               assertEquals(20, results.size());
+               assertTrue(results.get(0) instanceof DataRow);
+       }
+
+       @Test
+       public void testFetchLimitWithOffset() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               query.addOrdering("db:" + Artist.ARTIST_ID_PK_COLUMN, 
SortOrder.ASCENDING);
+               query.setFetchOffset(15);
+               query.setFetchLimit(4);
+               List<Artist> results = context.select(query);
+
+               assertEquals(4, results.size());
+               assertEquals("artist16", results.get(0).getArtistName());
+       }
+
+       @Test
+       public void testFetchOffsetWithQualifier() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               query.setQualifier(Expression.fromString("db:ARTIST_ID > 3"));
+               query.setFetchOffset(5);
+
+               List<?> objects = context.performQuery(query);
+               int size = objects.size();
+
+               SelectQuery<Artist> sizeQ = new 
SelectQuery<Artist>(Artist.class);
+               sizeQ.setQualifier(Expression.fromString("db:ARTIST_ID > 3"));
+               List<?> objects1 = context.performQuery(sizeQ);
+               int sizeAll = objects1.size();
+               assertEquals(size, sizeAll - 5);
+       }
+
+       @Test
+       public void testFetchLimitWithQualifier() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               query.setQualifier(Expression.fromString("db:ARTIST_ID > 3"));
+               query.setFetchLimit(7);
+               List<?> objects = context.performQuery(query);
+               assertEquals(7, objects.size());
+       }
+
+       @Test
+       public void testSelectAllObjectsRootEntityName() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new SelectQuery<Artist>("Artist");
+               List<?> objects = context.performQuery(query);
+               assertEquals(20, objects.size());
+       }
+
+       @Test
+       public void testSelectAllObjectsRootClass() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               List<?> objects = context.performQuery(query);
+               assertEquals(20, objects.size());
+       }
+
+       @Test
+       public void testSelectAllObjectsRootObjEntity() throws Exception {
+               createArtistsDataSet();
+               ObjEntity artistEntity = 
context.getEntityResolver().getObjEntity(Artist.class);
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(artistEntity);
+
+               List<?> objects = context.performQuery(query);
+               assertEquals(20, objects.size());
+       }
+
+       @Test
+       public void testSelectLikeExactMatch() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               Expression qual = ExpressionFactory.likeExp("artistName", 
"artist1");
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(1, objects.size());
+       }
+
+       @Test
+       public void testSelectNotLikeSingleWildcardMatch() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               Expression qual = ExpressionFactory.notLikeExp("artistName", 
"artist11%");
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(19, objects.size());
+       }
 
-    @Inject
-    private DBHelper dbHelper;
+       @Test
+       public void testSelectNotLikeIgnoreCaseSingleWildcardMatch() throws 
Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               Expression qual = 
ExpressionFactory.notLikeIgnoreCaseExp("artistName", "aRtIsT11%");
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(19, objects.size());
+       }
 
-    @Inject
-    private UnitDbAdapter accessStackAdapter;
+       @Test
+       public void testSelectLikeCaseSensitive() throws Exception {
+               if (!accessStackAdapter.supportsCaseSensitiveLike()) {
+                       return;
+               }
 
-    protected void createArtistsDataSet() throws Exception {
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
-        tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               Expression qual = ExpressionFactory.likeExp("artistName", 
"aRtIsT%");
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(0, objects.size());
+       }
 
-        long dateBase = System.currentTimeMillis();
+       @Test
+       public void testSelectLikeSingle_WildcardMatch() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               Expression qual = ExpressionFactory.likeExp("artistName", 
"artist11%");
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(1, objects.size());
+       }
 
-        for (int i = 1; i <= 20; i++) {
-            tArtist.insert(i, "artist" + i, new java.sql.Date(dateBase + 10000 
* i));
-        }
-    }
+       @Test
+       public void testSelectLikeSingle_WildcardMatchAndEscape() throws 
Exception {
 
-    protected void createArtistsWildcardDataSet() throws Exception {
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
-        tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
+               createArtistsWildcardDataSet();
 
-        tArtist.insert(1, "_X");
-        tArtist.insert(2, "Y_");
-    }
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               query.andQualifier(ExpressionFactory.likeExp("artistName", 
"=_%", '='));
 
-    @Test
-    public void testSetQualifier() {
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        assertNull(query.getQualifier());
+               List<?> objects = context.performQuery(query);
+               assertEquals(1, objects.size());
+       }
 
-        Expression qual = ExpressionFactory.expressionOfType(Expression.AND);
-        query.setQualifier(qual);
-        assertNotNull(query.getQualifier());
-        assertSame(qual, query.getQualifier());
-    }
-
-    @Test
-    public void testAndQualifier() {
-       SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        assertNull(query.getQualifier());
-
-        Expression e1 = 
ExpressionFactory.expressionOfType(Expression.EQUAL_TO);
-        query.andQualifier(e1);
-        assertSame(e1, query.getQualifier());
-
-        Expression e2 = 
ExpressionFactory.expressionOfType(Expression.NOT_EQUAL_TO);
-        query.andQualifier(e2);
-        assertEquals(Expression.AND, query.getQualifier().getType());
-    }
-
-    @Test
-    public void testOrQualifier() {
-       SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        assertNull(query.getQualifier());
-
-        Expression e1 = 
ExpressionFactory.expressionOfType(Expression.EQUAL_TO);
-        query.orQualifier(e1);
-        assertSame(e1, query.getQualifier());
-
-        Expression e2 = 
ExpressionFactory.expressionOfType(Expression.NOT_EQUAL_TO);
-        query.orQualifier(e2);
-        assertEquals(Expression.OR, query.getQualifier().getType());
-    }
-
-    @Test
-    public void testFetchLimit() throws Exception {
-        createArtistsDataSet();
-
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        query.setFetchLimit(7);
-
-        List<?> objects = context.performQuery(query);
-        assertNotNull(objects);
-        assertEquals(7, objects.size());
-    }
-
-    @Test
-    public void testFetchOffset() throws Exception {
-
-        createArtistsDataSet();
-
-        int totalRows = context.select(new 
SelectQuery<Artist>(Artist.class)).size();
-
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        query.addOrdering("db:" + Artist.ARTIST_ID_PK_COLUMN, 
SortOrder.ASCENDING);
-        query.setFetchOffset(5);
-        List<Artist> results = context.select(query);
-
-        assertEquals(totalRows - 5, results.size());
-        assertEquals("artist6", results.get(0).getArtistName());
-    }
-
-    @Test
-    public void testDbEntityRoot() throws Exception {
-
-        createArtistsDataSet();
-        DbEntity artistDbEntity = 
context.getEntityResolver().getDbEntity("ARTIST");
-
-        SelectQuery query = new SelectQuery(artistDbEntity);
-        List<?> results = context.performQuery(query);
-
-        assertEquals(20, results.size());
-        assertTrue(results.get(0) instanceof DataRow);
-    }
-
-    @Test
-    public void testFetchLimitWithOffset() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        query.addOrdering("db:" + Artist.ARTIST_ID_PK_COLUMN, 
SortOrder.ASCENDING);
-        query.setFetchOffset(15);
-        query.setFetchLimit(4);
-        List<Artist> results = context.select(query);
-
-        assertEquals(4, results.size());
-        assertEquals("artist16", results.get(0).getArtistName());
-    }
-
-    @Test
-    public void testFetchOffsetWithQualifier() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        query.setQualifier(Expression.fromString("db:ARTIST_ID > 3"));
-        query.setFetchOffset(5);
-
-        List<?> objects = context.performQuery(query);
-        int size = objects.size();
-
-        SelectQuery<Artist> sizeQ = new SelectQuery<Artist>(Artist.class);
-        sizeQ.setQualifier(Expression.fromString("db:ARTIST_ID > 3"));
-        List<?> objects1 = context.performQuery(sizeQ);
-        int sizeAll = objects1.size();
-        assertEquals(size, sizeAll - 5);
-    }
-
-    @Test
-    public void testFetchLimitWithQualifier() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        query.setQualifier(Expression.fromString("db:ARTIST_ID > 3"));
-        query.setFetchLimit(7);
-        List<?> objects = context.performQuery(query);
-        assertEquals(7, objects.size());
-    }
-
-    @Test
-    public void testSelectAllObjectsRootEntityName() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>("Artist");
-        List<?> objects = context.performQuery(query);
-        assertEquals(20, objects.size());
-    }
-
-    @Test
-    public void testSelectAllObjectsRootClass() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        List<?> objects = context.performQuery(query);
-        assertEquals(20, objects.size());
-    }
-
-    @Test
-    public void testSelectAllObjectsRootObjEntity() throws Exception {
-        createArtistsDataSet();
-        ObjEntity artistEntity = 
context.getEntityResolver().getObjEntity(Artist.class);
-        SelectQuery<Artist> query = new SelectQuery<Artist>(artistEntity);
-
-        List<?> objects = context.performQuery(query);
-        assertEquals(20, objects.size());
-    }
-
-    @Test
-    public void testSelectLikeExactMatch() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        Expression qual = ExpressionFactory.likeExp("artistName", "artist1");
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(1, objects.size());
-    }
-
-    @Test
-    public void testSelectNotLikeSingleWildcardMatch() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        Expression qual = ExpressionFactory.notLikeExp("artistName", 
"artist11%");
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(19, objects.size());
-    }
-
-    @Test
-    public void testSelectNotLikeIgnoreCaseSingleWildcardMatch() throws 
Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        Expression qual = ExpressionFactory.notLikeIgnoreCaseExp("artistName", 
"aRtIsT11%");
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(19, objects.size());
-    }
-
-    @Test
-    public void testSelectLikeCaseSensitive() throws Exception {
-        if (!accessStackAdapter.supportsCaseSensitiveLike()) {
-            return;
-        }
-
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        Expression qual = ExpressionFactory.likeExp("artistName", "aRtIsT%");
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(0, objects.size());
-    }
-
-    @Test
-    public void testSelectLikeSingleWildcardMatch() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        Expression qual = ExpressionFactory.likeExp("artistName", "artist11%");
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(1, objects.size());
-    }
-
-    @Test
-    public void testSelectLikeSingleWildcardMatchAndEscape() throws Exception {
-
-        createArtistsWildcardDataSet();
-
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        query.andQualifier(ExpressionFactory.likeExp("artistName", "=_%", 
'='));
-
-        List<?> objects = context.performQuery(query);
-        assertEquals(1, objects.size());
-    }
-    
-       @Test
-       public void 
testSelectLikeSingleWildcardMatchAndEscape_AndOtherCriteria() throws Exception {
+       @Test
+       public void testSelectLike_WildcardMatchAndEscape_AndOtherCriteria() 
throws Exception {
 
                createArtistsWildcardDataSet();
 
@@ -310,13 +313,14 @@ public class SelectQueryIT extends ServerCase {
                List<?> objects = context.performQuery(query);
                assertEquals(1, objects.size());
        }
-       
+
        @Test
-       public void 
testSelectLikeSingleWildcardMatchIgnoreCaseAndEscape_AndOtherCriteria() throws 
Exception {
+       public void 
testSelectLike_WildcardMatchIgnoreCaseAndEscape_AndOtherCriteria() throws 
Exception {
 
                createArtistsWildcardDataSet();
 
-               // CAY-1978 - combining LIKE..ESCAPE with another clause 
generated bad SQL
+               // CAY-1978 - combining LIKE..ESCAPE with another clause 
generated bad
+               // SQL
                SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
                
query.andQualifier(ExpressionFactory.likeIgnoreCaseExp("artistName", "=_%", 
'='));
                query.andQualifier(Artist.ARTIST_NAME.eq("_X"));
@@ -325,360 +329,360 @@ public class SelectQueryIT extends ServerCase {
                assertEquals(1, objects.size());
        }
 
-    @Test
-    public void testSelectLikeMultipleWildcardMatch() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        Expression qual = ExpressionFactory.likeExp("artistName", "artist1%");
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(11, objects.size());
-    }
-
-    /**
-     * Test how "like ignore case" works when using uppercase parameter.
-     */
-    @Test
-    public void testSelectLikeIgnoreCaseObjects1() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        Expression qual = ExpressionFactory.likeIgnoreCaseExp("artistName", 
"ARTIST%");
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(20, objects.size());
-    }
-
-    /** Test how "like ignore case" works when using lowercase parameter. */
-    @Test
-    public void testSelectLikeIgnoreCaseObjects2() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-        Expression qual = ExpressionFactory.likeIgnoreCaseExp("artistName", 
"artist%");
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(20, objects.size());
-    }
-
-    @Test
-    public void testSelectIn() throws Exception {
-        createArtistsDataSet();
-        SelectQuery query = new SelectQuery(Artist.class);
-        Expression qual = Expression.fromString("artistName in ('artist1', 
'artist2')");
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(2, objects.size());
-    }
-
-    @Test
-    public void testSelectParameterizedIn() throws Exception {
-        createArtistsDataSet();
-        SelectQuery query = new SelectQuery(Artist.class);
-        Expression qual = Expression.fromString("artistName in $list");
-        query.setQualifier(qual);
-        query = query.queryWithParameters(Collections.singletonMap("list", new 
Object[] { "artist1", "artist2" }));
-        List<?> objects = context.performQuery(query);
-        assertEquals(2, objects.size());
-    }
-
-    @Test
-    public void testSelectParameterizedEmptyIn() throws Exception {
-        createArtistsDataSet();
-        SelectQuery query = new SelectQuery(Artist.class);
-        Expression qual = Expression.fromString("artistName in $list");
-        query.setQualifier(qual);
-        query = query.queryWithParameters(Collections.singletonMap("list", new 
Object[] {}));
-        List<?> objects = context.performQuery(query);
-        assertEquals(0, objects.size());
-    }
-
-    @Test
-    public void testSelectParameterizedEmptyNotIn() throws Exception {
-        createArtistsDataSet();
-        SelectQuery query = new SelectQuery(Artist.class);
-        Expression qual = Expression.fromString("artistName not in $list");
-        query.setQualifier(qual);
-        query = query.queryWithParameters(Collections.singletonMap("list", new 
Object[] {}));
-        List<?> objects = context.performQuery(query);
-        assertEquals(20, objects.size());
-    }
-
-    @Test
-    public void testSelectEmptyIn() throws Exception {
-        createArtistsDataSet();
-        SelectQuery query = new SelectQuery(Artist.class);
-        Expression qual = ExpressionFactory.inExp("artistName");
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(0, objects.size());
-    }
-
-    @Test
-    public void testSelectEmptyNotIn() throws Exception {
-        createArtistsDataSet();
-        SelectQuery query = new SelectQuery(Artist.class);
-        Expression qual = ExpressionFactory.notInExp("artistName");
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(20, objects.size());
-    }
-
-    @Test
-    public void testSelectBooleanTrue() throws Exception {
-        createArtistsDataSet();
-        SelectQuery query = new SelectQuery(Artist.class);
-        Expression qual = ExpressionFactory.expTrue();
-        qual = qual.andExp(ExpressionFactory.matchExp("artistName", 
"artist1"));
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(1, objects.size());
-    }
-
-    @Test
-    public void testSelectBooleanNotTrueOr() throws Exception {
-        createArtistsDataSet();
-        SelectQuery query = new SelectQuery(Artist.class);
-        Expression qual = ExpressionFactory.expTrue();
-        qual = qual.notExp();
-        qual = qual.orExp(ExpressionFactory.matchExp("artistName", "artist1"));
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(1, objects.size());
-    }
-
-    @Test
-    public void testSelectBooleanFalse() throws Exception {
-        createArtistsDataSet();
-        SelectQuery query = new SelectQuery(Artist.class);
-        Expression qual = ExpressionFactory.expFalse();
-        qual = qual.andExp(ExpressionFactory.matchExp("artistName", 
"artist1"));
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(0, objects.size());
-    }
-
-    @Test
-    public void testSelectBooleanFalseOr() throws Exception {
-        createArtistsDataSet();
-        SelectQuery query = new SelectQuery(Artist.class);
-        Expression qual = ExpressionFactory.expFalse();
-        qual = qual.orExp(ExpressionFactory.matchExp("artistName", "artist1"));
-        query.setQualifier(qual);
-        List<?> objects = context.performQuery(query);
-        assertEquals(1, objects.size());
-    }
-
-    /**
-     * Tests that all queries specified in prefetch are executed in a more
-     * complex prefetch scenario.
-     */
-    @Test
-    public void testRouteWithPrefetches() {
-        EntityResolver resolver = context.getEntityResolver();
-        MockQueryRouter router = new MockQueryRouter();
-
-        SelectQuery<Artist> q = new SelectQuery<Artist>(Artist.class, 
ExpressionFactory.matchExp("artistName", "a"));
-
-        q.route(router, resolver, null);
-        assertEquals(1, router.getQueryCount());
-
-        q.addPrefetch("paintingArray");
-        router.reset();
-        q.route(router, resolver, null);
-        assertEquals(2, router.getQueryCount());
-
-        q.addPrefetch("paintingArray.toGallery");
-        router.reset();
-        q.route(router, resolver, null);
-        assertEquals(3, router.getQueryCount());
-
-        q.addPrefetch("artistExhibitArray.toExhibit");
-        router.reset();
-        q.route(router, resolver, null);
-        assertEquals(4, router.getQueryCount());
-
-        q.removePrefetch("paintingArray");
-        router.reset();
-        q.route(router, resolver, null);
-        assertEquals(3, router.getQueryCount());
-    }
-
-    /**
-     * Tests that all queries specified in prefetch are executed in a more
-     * complex prefetch scenario with no reverse obj relationships.
-     */
-    @Test
-    public void testRouteQueryWithPrefetchesNoReverse() {
-
-        EntityResolver resolver = context.getEntityResolver();
-        ObjEntity paintingEntity = resolver.getObjEntity(Painting.class);
-        ObjEntity galleryEntity = resolver.getObjEntity(Gallery.class);
-        ObjEntity artistExhibitEntity = 
resolver.getObjEntity(ArtistExhibit.class);
-        ObjEntity exhibitEntity = resolver.getObjEntity(Exhibit.class);
-        ObjRelationship paintingToArtistRel = 
paintingEntity.getRelationship("toArtist");
-        paintingEntity.removeRelationship("toArtist");
-
-        ObjRelationship galleryToPaintingRel = 
galleryEntity.getRelationship("paintingArray");
-        galleryEntity.removeRelationship("paintingArray");
-
-        ObjRelationship artistExhibitToArtistRel = 
artistExhibitEntity.getRelationship("toArtist");
-        artistExhibitEntity.removeRelationship("toArtist");
-
-        ObjRelationship exhibitToArtistExhibitRel = 
exhibitEntity.getRelationship("artistExhibitArray");
-        exhibitEntity.removeRelationship("artistExhibitArray");
-
-        Expression e = ExpressionFactory.matchExp("artistName", "artist1");
-        SelectQuery<Artist> q = new SelectQuery<Artist>(Artist.class, e);
-        q.addPrefetch("paintingArray");
-        q.addPrefetch("paintingArray.toGallery");
-        q.addPrefetch("artistExhibitArray.toExhibit");
-
-        try {
-            MockQueryRouter router = new MockQueryRouter();
-            q.route(router, resolver, null);
-            assertEquals(4, router.getQueryCount());
-        } finally {
-            paintingEntity.addRelationship(paintingToArtistRel);
-            galleryEntity.addRelationship(galleryToPaintingRel);
-            artistExhibitEntity.addRelationship(artistExhibitToArtistRel);
-            exhibitEntity.addRelationship(exhibitToArtistExhibitRel);
-        }
-    }
-
-    /**
-     * Test prefetching with qualifier on the root query being the path to the
-     * prefetch.
-     */
-    @Test
-    public void testRouteQueryWithPrefetchesPrefetchExpressionPath() {
-
-        // find the painting not matching the artist (this is the case where
-        // such prefetch
-        // at least makes sense)
-        Expression exp = ExpressionFactory.noMatchExp("toArtist", new 
Object());
-
-        SelectQuery q = new SelectQuery(Painting.class, exp);
-        q.addPrefetch("toArtist");
-
-        // test how prefetches are resolved in this case - this was a stumbling
-        // block for
-        // a while
-        EntityResolver resolver = context.getEntityResolver();
-        MockQueryRouter router = new MockQueryRouter();
-        q.route(router, resolver, null);
-        assertEquals(2, router.getQueryCount());
-    }
-
-    @Test
-    public void testLeftJoinAndPrefetchToMany() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class, 
ExpressionFactory.matchExp(
-                "paintingArray+.toGallery", null));
-        query.addPrefetch("artistExhibitArray");
-        context.performQuery(query);
-    }
-
-    @Test
-    public void testLeftJoinAndPrefetchToOne() throws Exception {
-        createArtistsDataSet();
-        SelectQuery<Painting> query = new 
SelectQuery<Painting>(Painting.class, ExpressionFactory.matchExp(
-                "toArtist+.artistName", null));
-        query.addPrefetch("toGallery");
-        context.select(query);
-    }
-
-    @Test
-    public void testSelect_MatchObject() {
-
-        Artist a1 = context.newObject(Artist.class);
-        a1.setArtistName("a1");
-        Artist a2 = context.newObject(Artist.class);
-        a2.setArtistName("a2");
-        Artist a3 = context.newObject(Artist.class);
-        a3.setArtistName("a3");
-        context.commitChanges();
-
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class);
-
-        query.setQualifier(ExpressionFactory.matchExp(a2));
-        Object res = Cayenne.objectForQuery(context, query);// exception if >1
-                                                            // result
-        assertSame(res, a2);
-        assertTrue(query.getQualifier().match(res));
-
-        query.setQualifier(ExpressionFactory.matchAnyExp(a1, a3));
-        query.addOrdering("artistName", SortOrder.ASCENDING);
-        List<Artist> list = context.select(query);
-        assertEquals(list.size(), 2);
-        assertSame(list.get(0), a1);
-        assertSame(list.get(1), a3);
-        assertTrue(query.getQualifier().match(a1));
-        assertTrue(query.getQualifier().match(a3));
-
-        assertEquals(query.getQualifier(), 
ExpressionFactory.matchAnyExp(Arrays.asList(a1, a3)));
-    }
-
-    @Test
-    public void testSelect_WithOrdering() {
-
-        Artist a1 = context.newObject(Artist.class);
-        a1.setArtistName("a1");
-        Artist a2 = context.newObject(Artist.class);
-        a2.setArtistName("a2");
-        Artist a3 = context.newObject(Artist.class);
-        a3.setArtistName("a3");
-        context.commitChanges();
-
-        List<Ordering> orderings = Arrays.asList(new Ordering("artistName", 
SortOrder.ASCENDING));
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class, 
null, orderings);
-
-        List<Artist> list = context.select(query);
-        assertEquals(list.size(), 3);
-        assertSame(list.get(0), a1);
-        assertSame(list.get(1), a2);
-        assertSame(list.get(2), a3);
-    }
-
-    /**
-     * Tests INs with more than 1000 elements
-     */
-    @Test
-    public void testSelectLongIn() {
-        // not all adapters strip INs, so we just make sure query with such
-        // qualifier
-        // fires OK
-        Object[] numbers = new String[2009];
-        for (int i = 0; i < numbers.length; i++) {
-            numbers[i] = "" + i;
-        }
-
-        SelectQuery<Artist> query = new SelectQuery<Artist>(Artist.class,
-                ExpressionFactory.inExp("artistName", numbers));
-        context.performQuery(query);
-    }
-
-    @Test
-    public void testCacheOffsetAndLimit() throws Exception {
-        createArtistsDataSet();
-
-        SelectQuery<Artist> query1 = new SelectQuery<Artist>(Artist.class);
-        query1.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
-        query1.setFetchOffset(0);
-        query1.setFetchLimit(10);
-        context.performQuery(query1);
-
-        SelectQuery<Artist> query2 = new SelectQuery<Artist>(Artist.class);
-        query2.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
-        query2.setFetchOffset(10);
-        query2.setFetchLimit(10);
-        context.performQuery(query2);
-
-        SelectQuery<Artist> query3 = new SelectQuery<Artist>(Artist.class);
-        query3.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
-        query3.setFetchOffset(10);
-        query3.setFetchLimit(10);
-        context.performQuery(query3);
-
-        
assertFalse(query1.metaData.getCacheKey().equals(query2.metaData.cacheKey));
-        assertEquals(query2.metaData.getCacheKey(), 
query3.metaData.getCacheKey());
-    }
+       @Test
+       public void testSelectLikeMultiple_WildcardMatch() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               Expression qual = ExpressionFactory.likeExp("artistName", 
"artist1%");
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(11, objects.size());
+       }
+
+       /**
+        * Test how "like ignore case" works when using uppercase parameter.
+        */
+       @Test
+       public void testSelectLikeIgnoreCaseObjects1() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               Expression qual = 
ExpressionFactory.likeIgnoreCaseExp("artistName", "ARTIST%");
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(20, objects.size());
+       }
+
+       /** Test how "like ignore case" works when using lowercase parameter. */
+       @Test
+       public void testSelectLikeIgnoreCaseObjects2() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+               Expression qual = 
ExpressionFactory.likeIgnoreCaseExp("artistName", "artist%");
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(20, objects.size());
+       }
+
+       @Test
+       public void testSelectIn() throws Exception {
+               createArtistsDataSet();
+               SelectQuery query = new SelectQuery(Artist.class);
+               Expression qual = Expression.fromString("artistName in 
('artist1', 'artist2')");
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(2, objects.size());
+       }
+
+       @Test
+       public void testSelectParameterizedIn() throws Exception {
+               createArtistsDataSet();
+               SelectQuery query = new SelectQuery(Artist.class);
+               Expression qual = Expression.fromString("artistName in $list");
+               query.setQualifier(qual);
+               query = 
query.queryWithParameters(Collections.singletonMap("list", new Object[] { 
"artist1", "artist2" }));
+               List<?> objects = context.performQuery(query);
+               assertEquals(2, objects.size());
+       }
+
+       @Test
+       public void testSelectParameterizedEmptyIn() throws Exception {
+               createArtistsDataSet();
+               SelectQuery query = new SelectQuery(Artist.class);
+               Expression qual = Expression.fromString("artistName in $list");
+               query.setQualifier(qual);
+               query = 
query.queryWithParameters(Collections.singletonMap("list", new Object[] {}));
+               List<?> objects = context.performQuery(query);
+               assertEquals(0, objects.size());
+       }
+
+       @Test
+       public void testSelectParameterizedEmptyNotIn() throws Exception {
+               createArtistsDataSet();
+               SelectQuery query = new SelectQuery(Artist.class);
+               Expression qual = Expression.fromString("artistName not in 
$list");
+               query.setQualifier(qual);
+               query = 
query.queryWithParameters(Collections.singletonMap("list", new Object[] {}));
+               List<?> objects = context.performQuery(query);
+               assertEquals(20, objects.size());
+       }
+
+       @Test
+       public void testSelectEmptyIn() throws Exception {
+               createArtistsDataSet();
+               SelectQuery query = new SelectQuery(Artist.class);
+               Expression qual = ExpressionFactory.inExp("artistName");
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(0, objects.size());
+       }
+
+       @Test
+       public void testSelectEmptyNotIn() throws Exception {
+               createArtistsDataSet();
+               SelectQuery query = new SelectQuery(Artist.class);
+               Expression qual = ExpressionFactory.notInExp("artistName");
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(20, objects.size());
+       }
+
+       @Test
+       public void testSelectBooleanTrue() throws Exception {
+               createArtistsDataSet();
+               SelectQuery query = new SelectQuery(Artist.class);
+               Expression qual = ExpressionFactory.expTrue();
+               qual = qual.andExp(ExpressionFactory.matchExp("artistName", 
"artist1"));
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(1, objects.size());
+       }
+
+       @Test
+       public void testSelectBooleanNotTrueOr() throws Exception {
+               createArtistsDataSet();
+               SelectQuery query = new SelectQuery(Artist.class);
+               Expression qual = ExpressionFactory.expTrue();
+               qual = qual.notExp();
+               qual = qual.orExp(ExpressionFactory.matchExp("artistName", 
"artist1"));
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(1, objects.size());
+       }
+
+       @Test
+       public void testSelectBooleanFalse() throws Exception {
+               createArtistsDataSet();
+               SelectQuery query = new SelectQuery(Artist.class);
+               Expression qual = ExpressionFactory.expFalse();
+               qual = qual.andExp(ExpressionFactory.matchExp("artistName", 
"artist1"));
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(0, objects.size());
+       }
+
+       @Test
+       public void testSelectBooleanFalseOr() throws Exception {
+               createArtistsDataSet();
+               SelectQuery query = new SelectQuery(Artist.class);
+               Expression qual = ExpressionFactory.expFalse();
+               qual = qual.orExp(ExpressionFactory.matchExp("artistName", 
"artist1"));
+               query.setQualifier(qual);
+               List<?> objects = context.performQuery(query);
+               assertEquals(1, objects.size());
+       }
+
+       /**
+        * Tests that all queries specified in prefetch are executed in a more
+        * complex prefetch scenario.
+        */
+       @Test
+       public void testRouteWithPrefetches() {
+               EntityResolver resolver = context.getEntityResolver();
+               MockQueryRouter router = new MockQueryRouter();
+
+               SelectQuery<Artist> q = new SelectQuery<Artist>(Artist.class, 
ExpressionFactory.matchExp("artistName", "a"));
+
+               q.route(router, resolver, null);
+               assertEquals(1, router.getQueryCount());
+
+               q.addPrefetch("paintingArray");
+               router.reset();
+               q.route(router, resolver, null);
+               assertEquals(2, router.getQueryCount());
+
+               q.addPrefetch("paintingArray.toGallery");
+               router.reset();
+               q.route(router, resolver, null);
+               assertEquals(3, router.getQueryCount());
+
+               q.addPrefetch("artistExhibitArray.toExhibit");
+               router.reset();
+               q.route(router, resolver, null);
+               assertEquals(4, router.getQueryCount());
+
+               q.removePrefetch("paintingArray");
+               router.reset();
+               q.route(router, resolver, null);
+               assertEquals(3, router.getQueryCount());
+       }
+
+       /**
+        * Tests that all queries specified in prefetch are executed in a more
+        * complex prefetch scenario with no reverse obj relationships.
+        */
+       @Test
+       public void testRouteQueryWithPrefetchesNoReverse() {
+
+               EntityResolver resolver = context.getEntityResolver();
+               ObjEntity paintingEntity = 
resolver.getObjEntity(Painting.class);
+               ObjEntity galleryEntity = resolver.getObjEntity(Gallery.class);
+               ObjEntity artistExhibitEntity = 
resolver.getObjEntity(ArtistExhibit.class);
+               ObjEntity exhibitEntity = resolver.getObjEntity(Exhibit.class);
+               ObjRelationship paintingToArtistRel = 
paintingEntity.getRelationship("toArtist");
+               paintingEntity.removeRelationship("toArtist");
+
+               ObjRelationship galleryToPaintingRel = 
galleryEntity.getRelationship("paintingArray");
+               galleryEntity.removeRelationship("paintingArray");
+
+               ObjRelationship artistExhibitToArtistRel = 
artistExhibitEntity.getRelationship("toArtist");
+               artistExhibitEntity.removeRelationship("toArtist");
+
+               ObjRelationship exhibitToArtistExhibitRel = 
exhibitEntity.getRelationship("artistExhibitArray");
+               exhibitEntity.removeRelationship("artistExhibitArray");
+
+               Expression e = ExpressionFactory.matchExp("artistName", 
"artist1");
+               SelectQuery<Artist> q = new SelectQuery<Artist>(Artist.class, 
e);
+               q.addPrefetch("paintingArray");
+               q.addPrefetch("paintingArray.toGallery");
+               q.addPrefetch("artistExhibitArray.toExhibit");
+
+               try {
+                       MockQueryRouter router = new MockQueryRouter();
+                       q.route(router, resolver, null);
+                       assertEquals(4, router.getQueryCount());
+               } finally {
+                       paintingEntity.addRelationship(paintingToArtistRel);
+                       galleryEntity.addRelationship(galleryToPaintingRel);
+                       
artistExhibitEntity.addRelationship(artistExhibitToArtistRel);
+                       
exhibitEntity.addRelationship(exhibitToArtistExhibitRel);
+               }
+       }
+
+       /**
+        * Test prefetching with qualifier on the root query being the path to 
the
+        * prefetch.
+        */
+       @Test
+       public void testRouteQueryWithPrefetchesPrefetchExpressionPath() {
+
+               // find the painting not matching the artist (this is the case 
where
+               // such prefetch
+               // at least makes sense)
+               Expression exp = ExpressionFactory.noMatchExp("toArtist", new 
Object());
+
+               SelectQuery q = new SelectQuery(Painting.class, exp);
+               q.addPrefetch("toArtist");
+
+               // test how prefetches are resolved in this case - this was a 
stumbling
+               // block for
+               // a while
+               EntityResolver resolver = context.getEntityResolver();
+               MockQueryRouter router = new MockQueryRouter();
+               q.route(router, resolver, null);
+               assertEquals(2, router.getQueryCount());
+       }
+
+       @Test
+       public void testLeftJoinAndPrefetchToMany() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class, ExpressionFactory.matchExp(
+                               "paintingArray+.toGallery", null));
+               query.addPrefetch("artistExhibitArray");
+               context.performQuery(query);
+       }
+
+       @Test
+       public void testLeftJoinAndPrefetchToOne() throws Exception {
+               createArtistsDataSet();
+               SelectQuery<Painting> query = new 
SelectQuery<Painting>(Painting.class, ExpressionFactory.matchExp(
+                               "toArtist+.artistName", null));
+               query.addPrefetch("toGallery");
+               context.select(query);
+       }
+
+       @Test
+       public void testSelect_MatchObject() {
+
+               Artist a1 = context.newObject(Artist.class);
+               a1.setArtistName("a1");
+               Artist a2 = context.newObject(Artist.class);
+               a2.setArtistName("a2");
+               Artist a3 = context.newObject(Artist.class);
+               a3.setArtistName("a3");
+               context.commitChanges();
+
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class);
+
+               query.setQualifier(ExpressionFactory.matchExp(a2));
+               Object res = Cayenne.objectForQuery(context, query);// 
exception if >1
+                                                                               
                                        // result
+               assertSame(res, a2);
+               assertTrue(query.getQualifier().match(res));
+
+               query.setQualifier(ExpressionFactory.matchAnyExp(a1, a3));
+               query.addOrdering("artistName", SortOrder.ASCENDING);
+               List<Artist> list = context.select(query);
+               assertEquals(list.size(), 2);
+               assertSame(list.get(0), a1);
+               assertSame(list.get(1), a3);
+               assertTrue(query.getQualifier().match(a1));
+               assertTrue(query.getQualifier().match(a3));
+
+               assertEquals(query.getQualifier(), 
ExpressionFactory.matchAnyExp(Arrays.asList(a1, a3)));
+       }
+
+       @Test
+       public void testSelect_WithOrdering() {
+
+               Artist a1 = context.newObject(Artist.class);
+               a1.setArtistName("a1");
+               Artist a2 = context.newObject(Artist.class);
+               a2.setArtistName("a2");
+               Artist a3 = context.newObject(Artist.class);
+               a3.setArtistName("a3");
+               context.commitChanges();
+
+               List<Ordering> orderings = Arrays.asList(new 
Ordering("artistName", SortOrder.ASCENDING));
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class, null, orderings);
+
+               List<Artist> list = context.select(query);
+               assertEquals(list.size(), 3);
+               assertSame(list.get(0), a1);
+               assertSame(list.get(1), a2);
+               assertSame(list.get(2), a3);
+       }
+
+       /**
+        * Tests INs with more than 1000 elements
+        */
+       @Test
+       public void testSelectLongIn() {
+               // not all adapters strip INs, so we just make sure query with 
such
+               // qualifier
+               // fires OK
+               Object[] numbers = new String[2009];
+               for (int i = 0; i < numbers.length; i++) {
+                       numbers[i] = "" + i;
+               }
+
+               SelectQuery<Artist> query = new 
SelectQuery<Artist>(Artist.class,
+                               ExpressionFactory.inExp("artistName", numbers));
+               context.performQuery(query);
+       }
+
+       @Test
+       public void testCacheOffsetAndLimit() throws Exception {
+               createArtistsDataSet();
+
+               SelectQuery<Artist> query1 = new 
SelectQuery<Artist>(Artist.class);
+               query1.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
+               query1.setFetchOffset(0);
+               query1.setFetchLimit(10);
+               context.performQuery(query1);
+
+               SelectQuery<Artist> query2 = new 
SelectQuery<Artist>(Artist.class);
+               query2.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
+               query2.setFetchOffset(10);
+               query2.setFetchLimit(10);
+               context.performQuery(query2);
+
+               SelectQuery<Artist> query3 = new 
SelectQuery<Artist>(Artist.class);
+               query3.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
+               query3.setFetchOffset(10);
+               query3.setFetchLimit(10);
+               context.performQuery(query3);
+
+               
assertFalse(query1.metaData.getCacheKey().equals(query2.metaData.cacheKey));
+               assertEquals(query2.metaData.getCacheKey(), 
query3.metaData.getCacheKey());
+       }
 }

Reply via email to