Skip to content

Commit 71a6866

Browse files
QueryTest: extract QueryFilterComparatorTest, add negative tests.
1 parent 92197ab commit 71a6866

File tree

3 files changed

+165
-49
lines changed

3 files changed

+165
-49
lines changed

tests/objectbox-java-test/src/test/java/io/objectbox/FunctionalTestSuite.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.objectbox.index.IndexReaderRenewTest;
2020
import io.objectbox.query.LazyListTest;
2121
import io.objectbox.query.PropertyQueryTest;
22+
import io.objectbox.query.QueryFilterComparatorTest;
2223
import io.objectbox.query.QueryObserverTest;
2324
import io.objectbox.query.QueryTest;
2425
import io.objectbox.relation.RelationEagerTest;
@@ -44,6 +45,7 @@
4445
IndexReaderRenewTest.class,
4546
ObjectClassObserverTest.class,
4647
PropertyQueryTest.class,
48+
QueryFilterComparatorTest.class,
4749
QueryObserverTest.class,
4850
QueryTest.class,
4951
RelationTest.class,
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
package io.objectbox.query;
2+
3+
import io.objectbox.TestEntity;
4+
import org.junit.Test;
5+
6+
import java.util.Comparator;
7+
import java.util.List;
8+
9+
import static org.junit.Assert.assertEquals;
10+
11+
/**
12+
* Tests for {@link QueryBuilder#filter(QueryFilter)} and {@link QueryBuilder#sort(Comparator)}.
13+
*/
14+
public class QueryFilterComparatorTest extends AbstractQueryTest {
15+
16+
private QueryFilter<TestEntity> createTestFilter() {
17+
return new QueryFilter<TestEntity>() {
18+
@Override
19+
public boolean keep(TestEntity entity) {
20+
return entity.getSimpleString().contains("e");
21+
}
22+
};
23+
}
24+
25+
@Test
26+
public void filter_forEach() {
27+
putTestEntitiesStrings();
28+
final StringBuilder stringBuilder = new StringBuilder();
29+
box.query().filter(createTestFilter()).build()
30+
.forEach(new QueryConsumer<TestEntity>() {
31+
@Override
32+
public void accept(TestEntity data) {
33+
stringBuilder.append(data.getSimpleString()).append('#');
34+
}
35+
});
36+
assertEquals("apple#banana milk shake#", stringBuilder.toString());
37+
}
38+
39+
@Test
40+
public void filter_find() {
41+
putTestEntitiesStrings();
42+
List<TestEntity> entities = box.query().filter(createTestFilter()).build().find();
43+
assertEquals(2, entities.size());
44+
assertEquals("apple", entities.get(0).getSimpleString());
45+
assertEquals("banana milk shake", entities.get(1).getSimpleString());
46+
}
47+
48+
private Comparator<TestEntity> createTestComparator() {
49+
return new Comparator<TestEntity>() {
50+
@Override
51+
public int compare(TestEntity o1, TestEntity o2) {
52+
return o1.getSimpleString().substring(1).compareTo(o2.getSimpleString().substring(1));
53+
}
54+
};
55+
}
56+
57+
@Test
58+
public void comparator_find() {
59+
putTestEntitiesStrings();
60+
Comparator<TestEntity> testComparator = createTestComparator();
61+
List<TestEntity> entities = box.query().sort(testComparator).build().find();
62+
assertEquals(5, entities.size());
63+
assertEquals("banana", entities.get(0).getSimpleString());
64+
assertEquals("banana milk shake", entities.get(1).getSimpleString());
65+
assertEquals("bar", entities.get(2).getSimpleString());
66+
assertEquals("foo bar", entities.get(3).getSimpleString());
67+
assertEquals("apple", entities.get(4).getSimpleString());
68+
}
69+
70+
@Test(expected = UnsupportedOperationException.class)
71+
public void filter_findFirst_unsupported() {
72+
box.query()
73+
.filter(createTestFilter())
74+
.build()
75+
.findFirst();
76+
}
77+
78+
@Test(expected = UnsupportedOperationException.class)
79+
public void filter_findUnique_unsupported() {
80+
box.query()
81+
.filter(createTestFilter())
82+
.build()
83+
.findUnique();
84+
}
85+
86+
@Test(expected = UnsupportedOperationException.class)
87+
public void filter_findOffsetLimit_unsupported() {
88+
box.query()
89+
.filter(createTestFilter())
90+
.build()
91+
.find(0, 0);
92+
}
93+
94+
@Test(expected = UnsupportedOperationException.class)
95+
public void filter_findLazy_unsupported() {
96+
box.query()
97+
.filter(createTestFilter())
98+
.build()
99+
.findLazy();
100+
}
101+
102+
@Test(expected = UnsupportedOperationException.class)
103+
public void filter_findLazyCached_unsupported() {
104+
box.query()
105+
.filter(createTestFilter())
106+
.build()
107+
.findLazyCached();
108+
}
109+
110+
@Test(expected = UnsupportedOperationException.class)
111+
public void comparator_forEach_unsupported() {
112+
box.query()
113+
.sort(createTestComparator())
114+
.build()
115+
.forEach(new QueryConsumer<TestEntity>() {
116+
@Override
117+
public void accept(TestEntity data) {
118+
// Do nothing.
119+
}
120+
});
121+
}
122+
123+
@Test(expected = UnsupportedOperationException.class)
124+
public void comparator_findFirst_unsupported() {
125+
box.query()
126+
.sort(createTestComparator())
127+
.build()
128+
.findFirst();
129+
}
130+
131+
@Test(expected = UnsupportedOperationException.class)
132+
public void comparator_findUnique_unsupported() {
133+
box.query()
134+
.sort(createTestComparator())
135+
.build()
136+
.findUnique();
137+
}
138+
139+
@Test(expected = UnsupportedOperationException.class)
140+
public void comparator_findOffsetLimit_unsupported() {
141+
box.query()
142+
.sort(createTestComparator())
143+
.build()
144+
.find(0, 0);
145+
}
146+
147+
@Test(expected = UnsupportedOperationException.class)
148+
public void comparator_findLazy_unsupported() {
149+
box.query()
150+
.sort(createTestComparator())
151+
.build()
152+
.findLazy();
153+
}
154+
155+
@Test(expected = UnsupportedOperationException.class)
156+
public void comparator_findLazyCached_unsupported() {
157+
box.query()
158+
.sort(createTestComparator())
159+
.build()
160+
.findLazyCached();
161+
}
162+
163+
}

tests/objectbox-java-test/src/test/java/io/objectbox/query/QueryTest.java

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -641,46 +641,6 @@ public void accept(TestEntity data) {
641641
assertEquals("banana", stringBuilder.toString());
642642
}
643643

644-
@Test
645-
public void testForEachWithFilter() {
646-
putTestEntitiesStrings();
647-
final StringBuilder stringBuilder = new StringBuilder();
648-
box.query().filter(createTestFilter()).build()
649-
.forEach(new QueryConsumer<TestEntity>() {
650-
@Override
651-
public void accept(TestEntity data) {
652-
stringBuilder.append(data.getSimpleString()).append('#');
653-
}
654-
});
655-
assertEquals("apple#banana milk shake#", stringBuilder.toString());
656-
}
657-
658-
@Test
659-
public void testFindWithFilter() {
660-
putTestEntitiesStrings();
661-
List<TestEntity> entities = box.query().filter(createTestFilter()).build().find();
662-
assertEquals(2, entities.size());
663-
assertEquals("apple", entities.get(0).getSimpleString());
664-
assertEquals("banana milk shake", entities.get(1).getSimpleString());
665-
}
666-
667-
@Test
668-
public void testFindWithComparator() {
669-
putTestEntitiesStrings();
670-
List<TestEntity> entities = box.query().sort(new Comparator<TestEntity>() {
671-
@Override
672-
public int compare(TestEntity o1, TestEntity o2) {
673-
return o1.getSimpleString().substring(1).compareTo(o2.getSimpleString().substring(1));
674-
}
675-
}).build().find();
676-
assertEquals(5, entities.size());
677-
assertEquals("banana", entities.get(0).getSimpleString());
678-
assertEquals("banana milk shake", entities.get(1).getSimpleString());
679-
assertEquals("bar", entities.get(2).getSimpleString());
680-
assertEquals("foo bar", entities.get(3).getSimpleString());
681-
assertEquals("apple", entities.get(4).getSimpleString());
682-
}
683-
684644
@Test
685645
// TODO can we improve? More than just "still works"?
686646
public void testQueryAttempts() {
@@ -740,13 +700,4 @@ public void onDbException(Exception e) {
740700
}
741701
}
742702

743-
private QueryFilter<TestEntity> createTestFilter() {
744-
return new QueryFilter<TestEntity>() {
745-
@Override
746-
public boolean keep(TestEntity entity) {
747-
return entity.getSimpleString().contains("e");
748-
}
749-
};
750-
}
751-
752703
}

0 commit comments

Comments
 (0)