package siena.base.test;
import java.util.List;
import siena.Query;
import siena.base.test.model.Discovery4Search2StringId;
import siena.base.test.model.Discovery4SearchStringId;
public abstract class BaseTestNoAutoInc_8_SEARCH extends BaseTestNoAutoInc_BASE {
public void testSearchSingle() {
Discovery4SearchStringId[] discs = new Discovery4SearchStringId[100];
for(int i=0; i<100; i++){
discs[i] = new Discovery4SearchStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
Query<Discovery4SearchStringId> query =
pm.createQuery(Discovery4SearchStringId.class).search("Disc_005", "name");
List<Discovery4SearchStringId> res = query.fetch();
assertEquals(1, res.size());
assertEquals(discs[5], res.get(0));
}
public void testSearchSingleKeysOnly() {
Discovery4SearchStringId[] discs = new Discovery4SearchStringId[100];
for(int i=0; i<100; i++){
discs[i] = new Discovery4SearchStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
Query<Discovery4SearchStringId> query =
pm.createQuery(Discovery4SearchStringId.class).search("Disc_005", "name");
List<Discovery4SearchStringId> res = query.fetchKeys();
assertEquals(1, res.size());
assertEquals(discs[5].name, res.get(0).name);
assertTrue(res.get(0).isOnlyIdFilled());
}
public void testSearchSingleTwice() {
Discovery4SearchStringId[] discs = new Discovery4SearchStringId[100];
for(int i=0; i<100; i++){
discs[i] = new Discovery4SearchStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
Query<Discovery4SearchStringId> query =
pm.createQuery(Discovery4SearchStringId.class).search("Disc_005", "name");
List<Discovery4SearchStringId> res = query.fetch();
assertEquals(1, res.size());
assertEquals(discs[5], res.get(0));
query =
pm.createQuery(Discovery4SearchStringId.class).search("Disc_048", "name");
res = query.fetch();
assertEquals(1, res.size());
assertEquals(discs[48], res.get(0));
}
public void testSearchSingleCount() {
Discovery4SearchStringId[] discs = new Discovery4SearchStringId[100];
for(int i=0; i<100; i++){
discs[i] = new Discovery4SearchStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
Query<Discovery4SearchStringId> query =
pm.createQuery(Discovery4SearchStringId.class).search("Disc_005", "name");
int res = query.count();
assertEquals(1, res);
}
public void testSearchMultipleBegin() {
if(supportsSearchStart()){
Discovery4SearchStringId[] discs = new Discovery4SearchStringId[100];
for(int i=0; i<100; i++){
discs[i] = new Discovery4SearchStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
Query<Discovery4SearchStringId> query =
pm.createQuery(Discovery4SearchStringId.class).search("Disc_01%", "name").order("name");
List<Discovery4SearchStringId> res = query.fetch();
assertEquals(10, res.size());
for(int i=0; i<10; i++){
assertEquals(discs[i+10], res.get(i));
}
}
}
public void testSearchMultipleEnd() {
if(supportsSearchEnd()){
Discovery4SearchStringId[] discs = new Discovery4SearchStringId[100];
for(int i=0; i<100; i++){
discs[i] = new Discovery4SearchStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
Query<Discovery4SearchStringId> query =
pm.createQuery(Discovery4SearchStringId.class).search("%_005", "name").order("name");
List<Discovery4SearchStringId> res = query.fetch();
assertEquals(1, res.size());
assertEquals(discs[5], res.get(0));
}
}
public void testSearchMultipleBeginEnd() {
if(supportsSearchStart() && supportsSearchEnd()){
Discovery4SearchStringId[] discs = new Discovery4SearchStringId[100];
for(int i=0; i<100; i++){
discs[i] = new Discovery4SearchStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
Query<Discovery4SearchStringId> query =
pm.createQuery(Discovery4SearchStringId.class).search("%_01%", "name").order("name");
List<Discovery4SearchStringId> res = query.fetch();
assertEquals(10, res.size());
for(int i=0; i<10; i++){
assertEquals(discs[i+10], res.get(i));
}
}
}
public void testSearchMultipleMultipleWords() {
if(supportsSearchStart() && supportsSearchEnd()){
Discovery4SearchStringId[] discs = new Discovery4SearchStringId[100];
for(int i=0; i<100; i++){
discs[i] = new Discovery4SearchStringId("Disc_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
Query<Discovery4SearchStringId> query =
pm.createQuery(Discovery4SearchStringId.class).search("Disc_005 Disc_010 Disc_020", "name").order("name");
List<Discovery4SearchStringId> res = query.fetch();
assertEquals(3, res.size());
assertEquals(discs[5], res.get(0));
assertEquals(discs[10], res.get(1));
assertEquals(discs[20], res.get(2));
}
}
public void testSearchMultipleFieldsMultipleWords() {
if(supportsSearchStart() && supportsSearchEnd()){
Discovery4Search2StringId[] discs = new Discovery4Search2StringId[100];
for(int i=0; i<100; i++){
discs[i] = new Discovery4Search2StringId("Disc_"+String.format("%03d", i), "Body_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
Query<Discovery4Search2StringId> query =
pm.createQuery(Discovery4Search2StringId.class).search("Disc_005 Disc_010 Disc_020 Body_058 Body_068 Body_078", "name", "body").order("name");
List<Discovery4Search2StringId> res = query.fetch();
assertEquals(6, res.size());
assertEquals(discs[5], res.get(0));
assertEquals(discs[10], res.get(1));
assertEquals(discs[20], res.get(2));
assertEquals(discs[58], res.get(3));
assertEquals(discs[68], res.get(4));
assertEquals(discs[78], res.get(5));
}
}
public void testSearchMultipleFieldsMultipleWordsFilter() {
if(supportsSearchStart() && supportsSearchEnd()){
Discovery4Search2StringId[] discs = new Discovery4Search2StringId[100];
for(int i=0; i<100; i++){
discs[i] = new Discovery4Search2StringId("Disc_"+String.format("%03d", i), "Body_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
Query<Discovery4Search2StringId> query =
pm.createQuery(Discovery4Search2StringId.class).search("Disc_005 Disc_010 Disc_058 Body_058 Body_068 Body_078", "name", "body").filter("name", "Disc_058").order("name");
List<Discovery4Search2StringId> res = query.fetch();
assertEquals(1, res.size());
assertEquals(discs[58], res.get(0));
}
}
public void testSearchMultipleFieldsMultipleWordsFilterBefore() {
if(supportsSearchStart() && supportsSearchEnd()){
Discovery4Search2StringId[] discs = new Discovery4Search2StringId[100];
for(int i=0; i<100; i++){
discs[i] = new Discovery4Search2StringId("Disc_"+String.format("%03d", i), "Body_"+String.format("%03d", i), StringID_CURIE);
}
pm.insert((Object[])discs);
Query<Discovery4Search2StringId> query =
pm.createQuery(Discovery4Search2StringId.class).filter("name", "Disc_058").search("Disc_005 Disc_010 Disc_058 Body_058 Body_068 Body_078", "name", "body").order("name");
List<Discovery4Search2StringId> res = query.fetch();
assertEquals(1, res.size());
assertEquals(discs[58], res.get(0));
}
}
}