Skip to content

Commit f103488

Browse files
Test equals and containsElement for flex property.
1 parent 50ef8b8 commit f103488

File tree

1 file changed

+73
-1
lines changed

1 file changed

+73
-1
lines changed

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

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,89 @@
44
import io.objectbox.TestEntity_;
55
import org.junit.Test;
66

7+
import javax.annotation.Nullable;
8+
import java.util.ArrayList;
79
import java.util.Arrays;
810
import java.util.HashMap;
911
import java.util.List;
1012
import java.util.Map;
1113

1214
import static org.junit.Assert.assertEquals;
15+
import static org.junit.Assert.assertNotNull;
16+
import static org.junit.Assert.assertNull;
1317
import static org.junit.Assert.assertThrows;
1418
import static org.junit.Assert.assertTrue;
1519

1620
public class FlexQueryTest extends AbstractQueryTest {
1721

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+
1890
private TestEntity createFlexMapEntity(String s, boolean b, long l, float f, double d) {
1991
TestEntity entity = new TestEntity();
2092
Map<String, Object> map = new HashMap<>();
@@ -63,7 +135,7 @@ public void contains_stringObjectMap() {
63135
TestEntity_.stringObjectMap.containsKeyValue("", "").alias("contains")
64136
).build();
65137
assertEquals(0, setParamQuery.find().size());
66-
138+
67139
setParamQuery.setParameters(TestEntity_.stringObjectMap, "banana-string", "banana");
68140
List<TestEntity> setParamResults = setParamQuery.find();
69141
assertEquals(1, setParamResults.size());

0 commit comments

Comments
 (0)