Skip to content

Commit e8db684

Browse files
Or equal: add tests for integer, float and byte array.
1 parent a85510d commit e8db684

File tree

1 file changed

+129
-30
lines changed
  • tests/objectbox-java-test/src/test/java/io/objectbox/query

1 file changed

+129
-30
lines changed

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

Lines changed: 129 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import static io.objectbox.TestEntity_.simpleLong;
4343
import static io.objectbox.TestEntity_.simpleShort;
4444
import static io.objectbox.TestEntity_.simpleString;
45+
import static org.junit.Assert.assertArrayEquals;
4546
import static org.junit.Assert.assertEquals;
4647
import static org.junit.Assert.assertFalse;
4748
import static org.junit.Assert.assertNotNull;
@@ -138,6 +139,36 @@ public void testScalarLessAndGreater() {
138139
assertEquals(3, query.count());
139140
}
140141

142+
@Test
143+
public void integer_lessAndGreater_works() {
144+
putTestEntitiesScalars();
145+
int value = 2004;
146+
147+
buildFindAndAssert(
148+
box.query().less(TestEntity_.simpleInt, value),
149+
4,
150+
(index, item) -> assertTrue(item.getSimpleInt() < value)
151+
);
152+
153+
buildFindAndAssert(
154+
box.query().greater(TestEntity_.simpleInt, value),
155+
5,
156+
(index, item) -> assertTrue(item.getSimpleInt() > value)
157+
);
158+
159+
buildFindAndAssert(
160+
box.query().lessOrEqual(TestEntity_.simpleInt, value),
161+
5,
162+
(index, item) -> assertTrue(item.getSimpleInt() <= value)
163+
);
164+
165+
buildFindAndAssert(
166+
box.query().greaterOrEqual(TestEntity_.simpleInt, value),
167+
6,
168+
(index, item) -> assertTrue(item.getSimpleInt() >= value)
169+
);
170+
}
171+
141172
@Test
142173
public void testScalarBetween() {
143174
putTestEntitiesScalars();
@@ -352,40 +383,96 @@ public void testByteArrayEqualsAndSetParameter() {
352383
}
353384

354385
@Test
355-
public void testByteArrayLess() {
386+
public void byteArray_lessAndGreater_works() {
356387
putTestEntitiesScalars();
357-
358388
byte[] value = {1, 2, (byte) 2005};
359-
Query<TestEntity> query = box.query().less(simpleByteArray, value).build();
360-
List<TestEntity> results = query.find();
361389

362-
assertEquals(5, results.size());
363-
// Java does not have compareTo for arrays, so just make sure its not equal to the value
364-
for (TestEntity result : results) {
365-
assertFalse(Arrays.equals(value, result.getSimpleByteArray()));
366-
}
367-
}
368-
369-
@Test
370-
public void testByteArrayGreater() {
390+
// Java does not have compareTo for arrays, so just make sure its not equal to the value.
391+
ListItemAsserter<TestEntity> resultsNotEqual = (index, item) -> assertFalse(Arrays.equals(value, item.getSimpleByteArray()));
392+
393+
buildFindAndAssert(
394+
box.query().less(TestEntity_.simpleByteArray, value), 5, resultsNotEqual
395+
);
396+
397+
buildFindAndAssert(
398+
box.query().greater(TestEntity_.simpleByteArray, value), 4, resultsNotEqual
399+
);
400+
401+
buildFindAndAssert(
402+
box.query().lessOrEqual(TestEntity_.simpleByteArray, value),
403+
6,
404+
(index, item) -> {
405+
if (index == 5) {
406+
assertArrayEquals(value, item.getSimpleByteArray());
407+
} else {
408+
assertFalse(Arrays.equals(value, item.getSimpleByteArray()));
409+
}
410+
}
411+
);
412+
413+
buildFindAndAssert(
414+
box.query().greaterOrEqual(TestEntity_.simpleByteArray, value),
415+
5,
416+
(index, item) -> {
417+
if (index == 0) {
418+
assertArrayEquals(value, item.getSimpleByteArray());
419+
} else {
420+
assertFalse(Arrays.equals(value, item.getSimpleByteArray()));
421+
}
422+
}
423+
);
424+
425+
// greater and less
426+
byte[] valueGreater = {1, 2, (byte) 2002};
427+
buildFindAndAssert(
428+
box.query().greater(TestEntity_.simpleByteArray, valueGreater).less(TestEntity_.simpleByteArray, value),
429+
2,
430+
(index, item) -> {
431+
assertFalse(Arrays.equals(value, item.getSimpleByteArray()));
432+
assertFalse(Arrays.equals(valueGreater, item.getSimpleByteArray()));
433+
}
434+
);
435+
}
436+
437+
@Test
438+
public void float_lessAndGreater_works() {
371439
putTestEntitiesScalars();
372-
373-
byte[] value = {1, 2, (byte) 2005};
374-
Query<TestEntity> query = box.query().greater(simpleByteArray, value).build();
375-
List<TestEntity> results = query.find();
376-
377-
assertEquals(4, results.size());
378-
// Java does not have compareTo for arrays, so just make sure its not equal to the value
379-
for (TestEntity result : results) {
380-
assertFalse(Arrays.equals(value, result.getSimpleByteArray()));
381-
}
382-
}
383-
384-
@Test
385-
public void testScalarFloatLessAndGreater() {
386-
putTestEntitiesScalars();
387-
Query<TestEntity> query = box.query().greater(simpleFloat, 400.29f).less(simpleFloat, 400.51f).build();
388-
assertEquals(3, query.count());
440+
float value = 400.5f;
441+
442+
buildFindAndAssert(
443+
box.query().less(TestEntity_.simpleFloat, value),
444+
5,
445+
(index, item) -> assertTrue(item.getSimpleFloat() < value)
446+
);
447+
448+
buildFindAndAssert(
449+
box.query().lessOrEqual(TestEntity_.simpleFloat, value),
450+
6,
451+
(index, item) -> assertTrue(item.getSimpleFloat() <= value)
452+
);
453+
454+
buildFindAndAssert(
455+
box.query().greater(TestEntity_.simpleFloat, value),
456+
4,
457+
(index, item) -> assertTrue(item.getSimpleFloat() > value)
458+
);
459+
460+
buildFindAndAssert(
461+
box.query().greaterOrEqual(TestEntity_.simpleFloat, value),
462+
5,
463+
(index, item) -> assertTrue(item.getSimpleFloat() >= value)
464+
);
465+
466+
float valueLess = 400.51f;
467+
float valueGreater = 400.29f;
468+
buildFindAndAssert(
469+
box.query().greater(TestEntity_.simpleFloat, valueGreater).less(TestEntity_.simpleFloat, valueLess),
470+
3,
471+
(index, item) -> {
472+
assertTrue(item.getSimpleFloat() < valueLess);
473+
assertTrue(item.getSimpleFloat() > valueGreater);
474+
}
475+
);
389476
}
390477

391478
@Test
@@ -736,4 +823,16 @@ public void testDescribe() {
736823
assertTrue(describeActual.contains(TestEntity_.simpleInt.name));
737824
assertEquals("(simpleString ==(i) \"Hello\"\n OR simpleInt > 42)", query.describeParameters());
738825
}
826+
827+
private <T> void buildFindAndAssert(QueryBuilder<T> builder, int expectedCount, ListItemAsserter<T> asserter) {
828+
List<T> results = builder.build().find();
829+
assertEquals(expectedCount, results.size());
830+
for (int i = 0; i < results.size(); i++) {
831+
asserter.assertListItem(i, results.get(i));
832+
}
833+
}
834+
835+
private interface ListItemAsserter<T> {
836+
void assertListItem(int index, T item);
837+
}
739838
}

0 commit comments

Comments
 (0)