From 718538484ac934f2d41f387baed8e145de8034c7 Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Mon, 14 Apr 2008 03:18:32 +0000 Subject: Support query fetch limits. --- .../java/com/amazon/carbonado/TestStorables.java | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) (limited to 'src/test') diff --git a/src/test/java/com/amazon/carbonado/TestStorables.java b/src/test/java/com/amazon/carbonado/TestStorables.java index 96b7504..5073ef8 100644 --- a/src/test/java/com/amazon/carbonado/TestStorables.java +++ b/src/test/java/com/amazon/carbonado/TestStorables.java @@ -2430,6 +2430,74 @@ public class TestStorables extends TestCase { assertEquals(total, actual); } + public void test_fetchSlice() throws Exception { + Storage storage = getRepository().storageFor(StorableTestBasic.class); + + for (int i=0; i<100; i++) { + StorableTestBasic sb = storage.prepare(); + sb.setId(i); + sb.setIntProp(99 - i); + sb.setLongProp(i); + sb.setDoubleProp(i); + sb.setStringProp(String.valueOf(i)); + sb.insert(); + } + + // No slice + List results; + results = storage.query().fetch(0, null).toList(); + assertEquals(100, results.size()); + + // To slice + results = storage.query().fetch(0, 50L).toList(); + assertEquals(50, results.size()); + results = storage.query().orderBy("id").fetch(0, 50L).toList(); + assertEquals(50, results.size()); + assertEquals(0, results.get(0).getId()); + assertEquals(1, results.get(1).getId()); + results = storage.query().orderBy("intProp").fetch(0, 50L).toList(); + assertEquals(50, results.size()); + assertEquals(99, results.get(0).getId()); + assertEquals(98, results.get(1).getId()); + + // From slice + results = storage.query().fetch(40, null).toList(); + assertEquals(60, results.size()); + results = storage.query().orderBy("id").fetch(40, null).toList(); + assertEquals(60, results.size()); + assertEquals(40, results.get(0).getId()); + assertEquals(41, results.get(1).getId()); + results = storage.query().orderBy("intProp").fetch(40, null).toList(); + assertEquals(60, results.size()); + assertEquals(59, results.get(0).getId()); + assertEquals(58, results.get(1).getId()); + + // From and to slice + results = storage.query().fetch(40, 50L).toList(); + assertEquals(10, results.size()); + results = storage.query().orderBy("id").fetch(40, 50L).toList(); + assertEquals(10, results.size()); + assertEquals(40, results.get(0).getId()); + assertEquals(41, results.get(1).getId()); + results = storage.query().orderBy("intProp").fetch(40, 50L).toList(); + assertEquals(10, results.size()); + assertEquals(59, results.get(0).getId()); + assertEquals(58, results.get(1).getId()); + + // Filter and slice + Query query = storage.query("doubleProp >= ?").with(30.0); + results = query.fetch(10, 20L).toList(); + assertEquals(10, results.size()); + results = query.orderBy("id").fetch(10, 20L).toList(); + assertEquals(10, results.size()); + assertEquals(40, results.get(0).getId()); + assertEquals(41, results.get(1).getId()); + results = query.orderBy("intProp").fetch(10, 20L).toList(); + assertEquals(10, results.size()); + assertEquals(89, results.get(0).getId()); + assertEquals(88, results.get(1).getId()); + } + public void test_lobInsert() throws Exception { Storage storage = getRepository().storageFor(StorableWithLobs.class); -- cgit v1.2.3