|
42 | 42 | import static io.objectbox.TestEntity_.simpleLong;
|
43 | 43 | import static io.objectbox.TestEntity_.simpleShort;
|
44 | 44 | import static io.objectbox.TestEntity_.simpleString;
|
| 45 | +import static org.junit.Assert.assertArrayEquals; |
45 | 46 | import static org.junit.Assert.assertEquals;
|
46 | 47 | import static org.junit.Assert.assertFalse;
|
47 | 48 | import static org.junit.Assert.assertNotNull;
|
@@ -138,6 +139,36 @@ public void testScalarLessAndGreater() {
|
138 | 139 | assertEquals(3, query.count());
|
139 | 140 | }
|
140 | 141 |
|
| 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 | + |
141 | 172 | @Test
|
142 | 173 | public void testScalarBetween() {
|
143 | 174 | putTestEntitiesScalars();
|
@@ -352,40 +383,96 @@ public void testByteArrayEqualsAndSetParameter() {
|
352 | 383 | }
|
353 | 384 |
|
354 | 385 | @Test
|
355 |
| - public void testByteArrayLess() { |
| 386 | + public void byteArray_lessAndGreater_works() { |
356 | 387 | putTestEntitiesScalars();
|
357 |
| - |
358 | 388 | byte[] value = {1, 2, (byte) 2005};
|
359 |
| - Query<TestEntity> query = box.query().less(simpleByteArray, value).build(); |
360 |
| - List<TestEntity> results = query.find(); |
361 | 389 |
|
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() { |
371 | 439 | 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 | + ); |
389 | 476 | }
|
390 | 477 |
|
391 | 478 | @Test
|
@@ -736,4 +823,16 @@ public void testDescribe() {
|
736 | 823 | assertTrue(describeActual.contains(TestEntity_.simpleInt.name));
|
737 | 824 | assertEquals("(simpleString ==(i) \"Hello\"\n OR simpleInt > 42)", query.describeParameters());
|
738 | 825 | }
|
| 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 | + } |
739 | 838 | }
|
0 commit comments