Skip to content

Commit 8d39ec1

Browse files
committed
tests: integer/float scalar property query conditions #29
1 parent 85ea076 commit 8d39ec1

2 files changed

Lines changed: 111 additions & 3 deletions

File tree

objectbox/model/properties.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,8 +317,6 @@ def contains_key_value(self, key: str, value: str, case_sensitive: bool = True)
317317
args = {'key': key, 'value': value, 'case_sensitive': case_sensitive}
318318
return PropertyQueryCondition(self._id, PropertyQueryConditionOp.CONTAINS_KEY_VALUE, args)
319319

320-
321-
322320
class _VectorProperty(Property):
323321
def __init__(self, py_type : Type, **kwargs):
324322
super(_VectorProperty, self).__init__(py_type, **kwargs)

tests/test_query.py

Lines changed: 111 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def test_basics():
2323
# String query
2424
str_prop: Property = TestEntity.get_property("str")
2525

26+
# Case Sensitive = True
2627
query = box_test_entity.query(str_prop.equals("bar", case_sensitive=True)).build()
2728
assert query.count() == 1
2829
assert query.find()[0].str == "bar"
@@ -61,6 +62,46 @@ def test_basics():
6162
assert query.find()[0].str == "foo"
6263
assert query.find()[1].str == "bar"
6364

65+
# Case Sensitive = False
66+
67+
query = box_test_entity.query(str_prop.equals("Bar", case_sensitive=False)).build()
68+
assert query.count() == 1
69+
assert query.find()[0].str == "bar"
70+
71+
query = box_test_entity.query(str_prop.not_equals("Bar", case_sensitive=False)).build()
72+
assert query.count() == 1
73+
assert query.find()[0].str == "foo"
74+
75+
query = box_test_entity.query(str_prop.contains("Ba", case_sensitive=False)).build()
76+
assert query.count() == 1
77+
assert query.find()[0].str == "bar"
78+
79+
query = box_test_entity.query(str_prop.starts_with("F", case_sensitive=False)).build()
80+
assert query.count() == 1
81+
assert query.find()[0].str == "foo"
82+
83+
query = box_test_entity.query(str_prop.ends_with("O", case_sensitive=False)).build()
84+
assert query.count() == 1
85+
assert query.find()[0].str == "foo"
86+
87+
query = box_test_entity.query(str_prop.greater_than("BAR", case_sensitive=False)).build()
88+
assert query.count() == 1
89+
assert query.find()[0].str == "foo"
90+
91+
query = box_test_entity.query(str_prop.greater_or_equal("BAR", case_sensitive=False)).build()
92+
assert query.count() == 2
93+
assert query.find()[0].str == "foo"
94+
assert query.find()[1].str == "bar"
95+
96+
query = box_test_entity.query(str_prop.less_than("FOo", case_sensitive=False)).build()
97+
assert query.count() == 1
98+
assert query.find()[0].str == "bar"
99+
100+
query = box_test_entity.query(str_prop.less_or_equal("FoO", case_sensitive=False)).build()
101+
assert query.count() == 2
102+
assert query.find()[0].str == "foo"
103+
assert query.find()[1].str == "bar"
104+
64105
# Int queries
65106
int_prop: Property = TestEntity.get_property("int64")
66107

@@ -93,7 +134,7 @@ def test_basics():
93134
query = box_test_entity.query(int_prop.between(100, 200)).build()
94135
assert query.count() == 1
95136
assert query.find()[0].int64 == 123
96-
137+
97138
#
98139
assert query.remove() == 1
99140

@@ -106,6 +147,75 @@ def test_basics():
106147

107148
store.close()
108149

150+
def test_integer_scalars():
151+
store = create_test_store()
152+
153+
box_test_entity = store.box(TestEntity)
154+
id1 = box_test_entity.put(TestEntity(int8=12, int16=12, int32=12, int64=12))
155+
id2 = box_test_entity.put(TestEntity(int8=45, int16=45, int32=45, int64=45))
156+
157+
props = [ "int8", "int16", "int32", "int64"]
158+
for p in props:
159+
prop = TestEntity.get_property(p)
160+
161+
query = box_test_entity.query(prop.equals(12)).build()
162+
assert query.count() == 1
163+
assert query.find()[0].id == id1
164+
165+
query = box_test_entity.query(prop.equals(45)).build()
166+
assert query.count() == 1
167+
assert query.find()[0].id == id2
168+
169+
query = box_test_entity.query(prop.not_equals(12)).build()
170+
assert query.count() == 1
171+
assert query.find()[0].id == id2
172+
173+
query = box_test_entity.query(prop.greater_than(12)).build()
174+
assert query.count() == 1
175+
assert query.find()[0].id == id2
176+
177+
query = box_test_entity.query(prop.greater_or_equal(12)).build()
178+
assert query.count() == 2
179+
assert query.find()[0].id == id1
180+
assert query.find()[1].id == id2
181+
182+
query = box_test_entity.query(prop.less_than(45)).build()
183+
assert query.count() == 1
184+
assert query.find()[0].id == id1
185+
186+
query = box_test_entity.query(prop.less_or_equal(45)).build()
187+
assert query.count() == 2
188+
assert query.find()[0].id == id1
189+
assert query.find()[1].id == id2
190+
191+
def test_float_scalars():
192+
store = create_test_store()
193+
194+
box_test_entity = store.box(TestEntity)
195+
id1 = box_test_entity.put(TestEntity(float32=12, float64=12))
196+
id2 = box_test_entity.put(TestEntity(float32=45, float64=45))
197+
198+
props = [ "float32", "float64" ]
199+
for p in props:
200+
prop = TestEntity.get_property(p)
201+
query = box_test_entity.query(prop.greater_or_equal(11)).build()
202+
assert query.count() == 2
203+
assert query.find()[0].id == id1
204+
assert query.find()[1].id == id2
205+
query = box_test_entity.query(prop.greater_than(12)).build()
206+
assert query.count() == 1
207+
assert query.find()[0].id == id2
208+
query = box_test_entity.query(prop.less_than(45)).build()
209+
assert query.count() == 1
210+
assert query.find()[0].id == id1
211+
query = box_test_entity.query(prop.less_or_equal(45)).build()
212+
assert query.count() == 2
213+
assert query.find()[0].id == id1
214+
assert query.find()[1].id == id2
215+
query = box_test_entity.query(prop.between(10,50)).build()
216+
assert query.count() == 2
217+
assert query.find()[0].id == id1
218+
assert query.find()[1].id == id2
109219

110220
def test_flex_contains_key_value():
111221
store = create_test_store()

0 commit comments

Comments
 (0)