|
4 | 4 | import io.objectbox.TestEntity_;
|
5 | 5 | import org.junit.Test;
|
6 | 6 |
|
| 7 | +import javax.annotation.Nullable; |
| 8 | +import java.util.ArrayList; |
7 | 9 | import java.util.Arrays;
|
8 | 10 | import java.util.HashMap;
|
9 | 11 | import java.util.List;
|
10 | 12 | import java.util.Map;
|
11 | 13 |
|
12 | 14 | import static org.junit.Assert.assertEquals;
|
| 15 | +import static org.junit.Assert.assertNotNull; |
| 16 | +import static org.junit.Assert.assertNull; |
13 | 17 | import static org.junit.Assert.assertThrows;
|
14 | 18 | import static org.junit.Assert.assertTrue;
|
15 | 19 |
|
16 | 20 | public class FlexQueryTest extends AbstractQueryTest {
|
17 | 21 |
|
| 22 | + private TestEntity createFlexPropertyEntity(@Nullable Object flex) { |
| 23 | + TestEntity entity = new TestEntity(); |
| 24 | + entity.setFlexProperty(flex); |
| 25 | + return entity; |
| 26 | + } |
| 27 | + |
| 28 | + /** |
| 29 | + * equals works for flexible string and integer properties. |
| 30 | + */ |
| 31 | + @Test |
| 32 | + public void equals_flexString() { |
| 33 | + box.put( |
| 34 | + createFlexPropertyEntity("banana"), |
| 35 | + createFlexPropertyEntity(-1), |
| 36 | + createFlexPropertyEntity(1.3f), |
| 37 | + createFlexPropertyEntity(-1.4d), |
| 38 | + createFlexPropertyEntity(null) |
| 39 | + ); |
| 40 | + |
| 41 | + assertFlexPropertyEqualsMatch("banana"); |
| 42 | + assertFlexPropertyEqualsMatch(-1); |
| 43 | + |
| 44 | + // Check isNull as well |
| 45 | + List<TestEntity> results = box.query(TestEntity_.flexProperty.isNull()).build().find(); |
| 46 | + assertEquals(1, results.size()); |
| 47 | + assertNull(results.get(0).getFlexProperty()); |
| 48 | + } |
| 49 | + |
| 50 | + private void assertFlexPropertyEqualsMatch(Object value) { |
| 51 | + List<TestEntity> results = box.query(TestEntity_.flexProperty.equal(value.toString())).build().find(); |
| 52 | + assertEquals(1, results.size()); |
| 53 | + assertEquals(value, results.get(0).getFlexProperty()); |
| 54 | + } |
| 55 | + |
| 56 | + /** |
| 57 | + * containsElement matches strings and integers of flexible list. |
| 58 | + */ |
| 59 | + @Test |
| 60 | + public void containsElement_flexList() { |
| 61 | + List<Object> flexListMatch = new ArrayList<>(); |
| 62 | + flexListMatch.add("banana"); |
| 63 | + flexListMatch.add(12); |
| 64 | + List<Object> flexListNoMatch = new ArrayList<>(); |
| 65 | + flexListNoMatch.add("banana milk shake"); |
| 66 | + flexListNoMatch.add(1234); |
| 67 | + List<Object> flexListNotSupported = new ArrayList<>(); |
| 68 | + flexListNotSupported.add(1.3f); |
| 69 | + flexListNotSupported.add(-1.4d); |
| 70 | + box.put( |
| 71 | + createFlexPropertyEntity(flexListMatch), |
| 72 | + createFlexPropertyEntity(flexListNoMatch), |
| 73 | + createFlexPropertyEntity(flexListNotSupported), |
| 74 | + createFlexPropertyEntity(null) |
| 75 | + ); |
| 76 | + |
| 77 | + assertFlexListContainsElement("banana"); |
| 78 | + assertFlexListContainsElement(12); |
| 79 | + } |
| 80 | + |
| 81 | + @SuppressWarnings("unchecked") |
| 82 | + private void assertFlexListContainsElement(Object value) { |
| 83 | + List<TestEntity> results = box.query(TestEntity_.flexProperty.containsElement(value.toString())).build().find(); |
| 84 | + assertEquals(1, results.size()); |
| 85 | + List<Object> list = (List<Object>) results.get(0).getFlexProperty(); |
| 86 | + assertNotNull(list); |
| 87 | + assertTrue(list.contains("banana")); |
| 88 | + } |
| 89 | + |
18 | 90 | private TestEntity createFlexMapEntity(String s, boolean b, long l, float f, double d) {
|
19 | 91 | TestEntity entity = new TestEntity();
|
20 | 92 | Map<String, Object> map = new HashMap<>();
|
@@ -63,7 +135,7 @@ public void contains_stringObjectMap() {
|
63 | 135 | TestEntity_.stringObjectMap.containsKeyValue("", "").alias("contains")
|
64 | 136 | ).build();
|
65 | 137 | assertEquals(0, setParamQuery.find().size());
|
66 |
| - |
| 138 | + |
67 | 139 | setParamQuery.setParameters(TestEntity_.stringObjectMap, "banana-string", "banana");
|
68 | 140 | List<TestEntity> setParamResults = setParamQuery.find();
|
69 | 141 | assertEquals(1, setParamResults.size());
|
|
0 commit comments