package siena.base.test;
import static siena.Json.map;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import siena.Query;
import siena.SienaRestrictedApiException;
import siena.base.test.model.Address;
import siena.base.test.model.AutoInc;
import siena.base.test.model.Contact;
import siena.base.test.model.DataTypes;
import siena.base.test.model.DataTypes.EnumLong;
import siena.base.test.model.Discovery4JoinStringId;
import siena.base.test.model.DiscoveryPrivate;
import siena.base.test.model.DiscoveryStringId;
import siena.base.test.model.MultipleKeys;
import siena.base.test.model.PersonLongAutoID;
import siena.base.test.model.PersonLongManualID;
import siena.base.test.model.PersonStringAutoIncID;
import siena.base.test.model.PersonStringID;
import siena.base.test.model.PersonUUID;
import siena.sdb.SdbPersistenceManager;
public abstract class BaseTestNoAutoInc_3_ITER extends BaseTestNoAutoInc_BASE {
public void testIterFullUUID() {
Iterable<PersonUUID> people = pm.createQuery(PersonUUID.class).order("n").iter();
assertNotNull(people);
@SuppressWarnings("serial")
ArrayList<PersonUUID> l = new ArrayList<PersonUUID>() {{
add(UUID_TESLA);
add(UUID_CURIE);
add(UUID_EINSTEIN);
}};
int i = 0;
for (PersonUUID person : people) {
PersonUUID p = l.get(i);
assertEquals(p, person);
i++;
}
}
public void testIterFullLongAutoID() {
if(supportsAutoincrement()){
Iterable<PersonLongAutoID> people = pm.createQuery(PersonLongAutoID.class).order("n").iter();
assertNotNull(people);
PersonLongAutoID[] array = new PersonLongAutoID[] { LongAutoID_TESLA, LongAutoID_CURIE, LongAutoID_EINSTEIN };
int i = 0;
for (PersonLongAutoID person : people) {
assertEquals(array[i], person);
i++;
}
}else {
try {
Iterable<PersonLongAutoID> people = pm.createQuery(PersonLongAutoID.class).order("n").iter();
}catch(SienaRestrictedApiException ex){
return;
}
fail();
}
}
public void testIterFullLongManualID() {
Iterable<PersonLongManualID> people = pm.createQuery(PersonLongManualID.class).order("n").iter();
assertNotNull(people);
PersonLongManualID[] array = new PersonLongManualID[] { LongManualID_TESLA, LongManualID_CURIE, LongManualID_EINSTEIN };
int i = 0;
for (PersonLongManualID person : people) {
assertEquals(array[i], person);
i++;
}
}
public void testIterFullLongStringID() {
Iterable<PersonStringID> people = pm.createQuery(PersonStringID.class).order("n").iter();
assertNotNull(people);
PersonStringID[] array = new PersonStringID[] { StringID_TESLA, StringID_CURIE, StringID_EINSTEIN };
int i = 0;
for (PersonStringID person : people) {
assertEquals(array[i], person);
i++;
}
}
public void testIterLimitUUID() {
Iterable<PersonUUID> people = pm.createQuery(PersonUUID.class).order("n").iter(2);
assertNotNull(people);
@SuppressWarnings("serial")
ArrayList<PersonUUID> l = new ArrayList<PersonUUID>() {{
add(UUID_TESLA);
add(UUID_CURIE);
}};
int i = 0;
for (PersonUUID person : people) {
assertEquals( l.get(i), person);
i++;
}
}
public void testIterLimitLongAutoID() {
if(supportsAutoincrement()){
Iterable<PersonLongAutoID> people = pm.createQuery(PersonLongAutoID.class).order("n").iter(2);
assertNotNull(people);
PersonLongAutoID[] array = new PersonLongAutoID[] { LongAutoID_TESLA, LongAutoID_CURIE };
int i = 0;
for (PersonLongAutoID person : people) {
assertEquals(array[i], person);
i++;
}
}else {
try {
Iterable<PersonLongAutoID> people = pm.createQuery(PersonLongAutoID.class).order("n").iter(2);
}catch(SienaRestrictedApiException ex){
return;
}
fail();
}
}
public void testIterLimitLongManualID() {
Iterable<PersonLongManualID> people = pm.createQuery(PersonLongManualID.class).order("n").iter(2);
assertNotNull(people);
PersonLongManualID[] array = new PersonLongManualID[] { LongManualID_TESLA, LongManualID_CURIE };
int i = 0;
for (PersonLongManualID person : people) {
assertEquals(array[i], person);
i++;
}
}
public void testIterLimitLongStringID() {
Iterable<PersonStringID> people = pm.createQuery(PersonStringID.class).order("n").iter(2);
assertNotNull(people);
PersonStringID[] array = new PersonStringID[] { StringID_TESLA, StringID_CURIE };
int i = 0;
for (PersonStringID person : people) {
assertEquals(array[i], person);
i++;
}
}
public void testIterLimitOffsetUUID() {
Iterable<PersonUUID> people = pm.createQuery(PersonUUID.class).order("n").iter(2,1);
assertNotNull(people);
@SuppressWarnings("serial")
ArrayList<PersonUUID> l = new ArrayList<PersonUUID>() {{
add(UUID_CURIE);
add(UUID_EINSTEIN);
}};
int i = 0;
for (PersonUUID person : people) {
assertEquals( l.get(i), person);
i++;
}
}
public void testIterLimitOffsetLongAutoID() {
if(supportsAutoincrement()) {
Iterable<PersonLongAutoID> people = pm.createQuery(PersonLongAutoID.class).order("n").iter(2, 1);
assertNotNull(people);
PersonLongAutoID[] array = new PersonLongAutoID[] { LongAutoID_CURIE, LongAutoID_EINSTEIN };
int i = 0;
for (PersonLongAutoID person : people) {
assertEquals(array[i], person);
i++;
}
}else {
try {
Iterable<PersonLongAutoID> people = pm.createQuery(PersonLongAutoID.class).order("n").iter(2, 1);
}catch(SienaRestrictedApiException ex){
return;
}
fail();
}
}
public void testIterLimitOffsetLongManualID() {
Iterable<PersonLongManualID> people = pm.createQuery(PersonLongManualID.class).order("n").iter(2,1);
assertNotNull(people);
PersonLongManualID[] array = new PersonLongManualID[] { LongManualID_CURIE, LongManualID_EINSTEIN };
int i = 0;
for (PersonLongManualID person : people) {
assertEquals(array[i], person);
i++;
}
}
public void testIterLimitOffsetLongStringID() {
Iterable<PersonStringID> people = pm.createQuery(PersonStringID.class).order("n").iter(2,1);
assertNotNull(people);
PersonStringID[] array = new PersonStringID[] { StringID_CURIE, StringID_EINSTEIN };
int i = 0;
for (PersonStringID person : people) {
assertEquals(array[i], person);
i++;
}
}
public void testIterFilter() {
Iterable<PersonUUID> people = pm.createQuery(PersonUUID.class).filter("n>", 1).order("n").iter();
assertNotNull(people);
PersonUUID[] array = new PersonUUID[] { UUID_CURIE, UUID_EINSTEIN };
int i = 0;
for (PersonUUID PersonIntKey : people) {
assertEquals(array[i], PersonIntKey);
i++;
}
}
public void testIterFilterLimit() {
Iterable<PersonUUID> people = pm.createQuery(PersonUUID.class).filter("n>", 1).order("n").iter(1);
assertNotNull(people);
PersonUUID[] array = new PersonUUID[] { UUID_CURIE };
int i = 0;
for (PersonUUID PersonIntKey : people) {
assertEquals(array[i], PersonIntKey);
i++;
}
}
public void testIterFilterLimitOffset() {
Iterable<PersonUUID> people = pm.createQuery(PersonUUID.class).filter("n>", 1).order("n").iter(2, 1);
assertNotNull(people);
PersonUUID[] array = new PersonUUID[] { UUID_EINSTEIN };
int i = 0;
for (PersonUUID PersonIntKey : people) {
assertEquals(array[i], PersonIntKey);
i++;
}
}
public void testIterLotsOfEntitiesStateless(){
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).order("name");
Iterable<DiscoveryStringId> iter = query.iter();
Iterator<DiscoveryStringId> it = iter.iterator();
int i=0;
while(it.hasNext()){
DiscoveryStringId disc = it.next();
assertEquals(discs[i++], disc);
}
assertEquals(150, i);
}
public void testIterLotsOfEntitiesStateful(){
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");
Iterable<DiscoveryStringId> iter = query.iter();
Iterator<DiscoveryStringId> it = iter.iterator();
int i=0;
while(it.hasNext()){
DiscoveryStringId disc = it.next();
assertEquals(discs[i++], disc);
}
assertEquals(150, i);
}
public void testIterLotsOfEntitiesStatefulMixed(){
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");
Iterable<DiscoveryStringId> res = query.iter(50);
Iterator<DiscoveryStringId> it = res.iterator();
int i=0;
while(it.hasNext()){
DiscoveryStringId disc = it.next();
assertEquals(discs[i++], disc);
}
assertEquals(50, i);
res = query.iter(50,50);
it = res.iterator();
i=100;
while(it.hasNext()){
DiscoveryStringId disc = it.next();
assertEquals(discs[i++], disc);
}
assertEquals(150, i);
res = query.iter(50,100);
it = res.iterator();
while(it.hasNext()){
DiscoveryStringId disc = it.next();
assertEquals(discs[i++], disc);
}
assertEquals(150, i);
}
public void testIterLotsOfEntitiesStatefulMixed2(){
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");
Iterable<DiscoveryStringId> iter = query.paginate(50).iter();
Iterator<DiscoveryStringId> it = iter.iterator();
int i=0;
while(it.hasNext()){
DiscoveryStringId disc = it.next();
assertEquals(discs[i++], disc);
}
assertEquals(50, i);
iter = query.iter(50,50);
it = iter.iterator();
i=50;
while(it.hasNext()){
DiscoveryStringId disc = it.next();
assertEquals(discs[i++], disc);
}
assertEquals(100, i);
}
public void testIterLotsOfEntitiesStatefulMixed3(){
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");
Iterable<DiscoveryStringId> iter = query.iter(50);
Iterator<DiscoveryStringId> it = iter.iterator();
int i=0;
while(it.hasNext()){
DiscoveryStringId disc = it.next();
assertEquals(discs[i++], disc);
}
assertEquals(50, i);
iter = query.paginate(50).iter();
it = iter.iterator();
i=50;
while(it.hasNext()){
DiscoveryStringId disc = it.next();
assertEquals(discs[i++], disc);
}
assertEquals(100, i);
iter = query.iter();
it = iter.iterator();
i=50;
while(it.hasNext()){
DiscoveryStringId disc = it.next();
assertEquals(discs[i++], disc);
}
assertEquals(100, i);
iter = query.nextPage().iter();
it = iter.iterator();
while(it.hasNext()){
DiscoveryStringId disc = it.next();
assertEquals(discs[i++], disc);
}
assertEquals(150, i);
}
}