package siena.base.test; import java.util.Iterator; import java.util.List; import siena.Query; import siena.base.test.model.DiscoveryStringId; public abstract class BaseTestNoAutoInc_6_FETCH_ITER extends BaseTestNoAutoInc_BASE { public void testFetchIterLotsOfEntitiesStatefulMixed(){ DiscoveryStringId[] discs = new DiscoveryStringId[150]; for(int i=0; i<150; i++){ discs[i] = new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE); } pm.insert((Object[])discs); Query<DiscoveryStringId> query = pm.createQuery(DiscoveryStringId.class).stateful().order("name"); List<DiscoveryStringId> res = query.fetch(50); assertEquals(50, res.size()); for(int i=0; i<50; i++){ assertEquals(discs[i], res.get(i)); } Iterable<DiscoveryStringId> res2 = query.iter(50); Iterator<DiscoveryStringId> it2 = res2.iterator(); int i=50; while(it2.hasNext()){ DiscoveryStringId disc = it2.next(); assertEquals(discs[i++], disc); } assertEquals(100, i); res = query.paginate(25).fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i+100], res.get(i)); } res2 = query.nextPage().iter(); it2 = res2.iterator(); i=125; while(it2.hasNext()){ DiscoveryStringId disc = it2.next(); assertEquals(discs[i++], disc); } assertEquals(150, i); res = query.previousPage().fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i+100], res.get(i)); } res = query.previousPage().fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i+75], res.get(i)); } res = query.previousPage().fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i+50], res.get(i)); } res = query.nextPage().fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i+75], res.get(i)); } res = query.nextPage().fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i+100], res.get(i)); } res = query.nextPage().fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i+125], res.get(i)); } res = query.nextPage().fetch(); assertEquals(0, res.size()); res = query.previousPage().fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i+125], res.get(i)); } res = query.previousPage().fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i+100], res.get(i)); } res = query.previousPage().fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i+75], res.get(i)); } res = query.previousPage().fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i+50], res.get(i)); } res = query.previousPage().fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i+25], res.get(i)); } res = query.previousPage().fetch(); assertEquals(25, res.size()); for(i=0; i<25; i++){ assertEquals(discs[i], res.get(i)); } } public void testFetchIterLotsOfEntitiesStatefulMixed2(){ DiscoveryStringId[] discs = new DiscoveryStringId[200]; for(int i=0; i<200; i++){ discs[i] = new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE); } pm.insert((Object[])discs); Query<DiscoveryStringId> query = pm.createQuery(DiscoveryStringId.class).stateful().order("name"); List<DiscoveryStringId> res = query.fetch(50); assertEquals(50, res.size()); for(int i=0; i<50; i++){ assertEquals(discs[i], res.get(i)); } Iterable<DiscoveryStringId> res2 = query.iter(50); Iterator<DiscoveryStringId> it2 = res2.iterator(); int i=50; while(it2.hasNext()){ DiscoveryStringId disc = it2.next(); assertEquals(discs[i++], disc); } assertEquals(100, i); res = query.fetch(50); assertEquals(50, res.size()); for(i=0; i<50; i++){ assertEquals(discs[i+100], res.get(i)); } res2 = query.iter(50); it2 = res2.iterator(); i=150; while(it2.hasNext()){ DiscoveryStringId disc = it2.next(); assertEquals(discs[i++], disc); } assertEquals(200, i); } public void testFetchIterLotsOfEntitiesStatefulMixed3(){ DiscoveryStringId[] discs = new DiscoveryStringId[150]; for(int i=0; i<150; i++){ discs[i] = new DiscoveryStringId("Disc_"+String.format("%03d", i), StringID_CURIE); } pm.insert((Object[])discs); Query<DiscoveryStringId> query = pm.createQuery(DiscoveryStringId.class).stateful().order("name"); List<DiscoveryStringId> res = query.fetch(50); assertEquals(50, res.size()); for(int i=0; i<50; i++){ assertEquals(discs[i], res.get(i)); } Iterable<DiscoveryStringId> res2 = query.iter(); Iterator<DiscoveryStringId> it2 = res2.iterator(); int i=50; while(it2.hasNext()){ DiscoveryStringId disc = it2.next(); assertEquals(discs[i++], disc); } assertEquals(150, i); } }