Skip to content

Commit baf3f7b

Browse files
committed
tests: add test for property.nearest_neighbor() objectbox#24
1 parent a05ee06 commit baf3f7b

File tree

2 files changed

+36
-22
lines changed

2 files changed

+36
-22
lines changed

objectbox/condition.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from enum import Enum
22
from typing import *
3+
import numpy as np
34

45

56
class _QueryConditionOp(Enum):
@@ -67,7 +68,7 @@ def _apply_contains(self, qb: 'QueryBuilder'):
6768
if isinstance(value, str):
6869
qb.contains_string(self._property_id, value, case_sensitive)
6970
else:
70-
raise Exception(f"Unsupported type for 'CONTAINS': {type(self_value)}")
71+
raise Exception(f"Unsupported type for 'CONTAINS': {type(value)}")
7172

7273
def _apply_starts_with(self, qb: 'QueryBuilder'):
7374
value = self._args['value']
@@ -133,7 +134,7 @@ def _apply_between(self, qb: 'QueryBuilder'):
133134
else:
134135
raise Exception(f"Unsupported type for 'BETWEEN': {type(a)}")
135136

136-
def _apply_nearest_neighbor(self, qb: 'QueryCondition'):
137+
def _apply_nearest_neighbor(self, qb: 'QueryBuilder'):
137138
query_vector = self._args['query_vector']
138139
element_count = self._args['element_count']
139140

tests/test_query.py

+33-20
Original file line numberDiff line numberDiff line change
@@ -9,88 +9,101 @@
99

1010

1111
def test_basics():
12-
ob = load_empty_test_objectbox()
12+
ob = create_test_objectbox()
1313

14-
box = objectbox.Box(ob, TestEntity)
15-
box.put(TestEntity(str="foo", int64=123))
16-
box.put(TestEntity(str="bar", int64=456))
14+
box_test_entity = objectbox.Box(ob, TestEntity)
15+
box_test_entity.put(TestEntity(str="foo", int64=123))
16+
box_test_entity.put(TestEntity(str="bar", int64=456))
17+
18+
box_vector_entity = objectbox.Box(ob, VectorEntity)
19+
box_vector_entity.put(VectorEntity(name="Object 1", vector=[1, 1]))
20+
box_vector_entity.put(VectorEntity(name="Object 2", vector=[2, 2]))
21+
box_vector_entity.put(VectorEntity(name="Object 3", vector=[3, 3]))
1722

1823
# String query
1924
str_prop: Property = TestEntity.get_property("str")
2025

21-
query = box.query(str_prop.equals("bar", case_sensitive=True)).build()
26+
query = box_test_entity.query(str_prop.equals("bar", case_sensitive=True)).build()
2227
assert query.count() == 1
2328
assert query.find()[0].str == "bar"
2429

25-
query = box.query(str_prop.not_equals("bar", case_sensitive=True)).build()
30+
query = box_test_entity.query(str_prop.not_equals("bar", case_sensitive=True)).build()
2631
assert query.count() == 1
2732
assert query.find()[0].str == "foo"
2833

29-
query = box.query(str_prop.contains("ba", case_sensitive=True)).build()
34+
query = box_test_entity.query(str_prop.contains("ba", case_sensitive=True)).build()
3035
assert query.count() == 1
3136
assert query.find()[0].str == "bar"
3237

33-
query = box.query(str_prop.starts_with("f", case_sensitive=True)).build()
38+
query = box_test_entity.query(str_prop.starts_with("f", case_sensitive=True)).build()
3439
assert query.count() == 1
3540
assert query.find()[0].str == "foo"
3641

37-
query = box.query(str_prop.ends_with("o", case_sensitive=True)).build()
42+
query = box_test_entity.query(str_prop.ends_with("o", case_sensitive=True)).build()
3843
assert query.count() == 1
3944
assert query.find()[0].str == "foo"
4045

41-
query = box.query(str_prop.greater_than("bar", case_sensitive=True)).build()
46+
query = box_test_entity.query(str_prop.greater_than("bar", case_sensitive=True)).build()
4247
assert query.count() == 1
4348
assert query.find()[0].str == "foo"
4449

45-
query = box.query(str_prop.greater_or_equal("bar", case_sensitive=True)).build()
50+
query = box_test_entity.query(str_prop.greater_or_equal("bar", case_sensitive=True)).build()
4651
assert query.count() == 2
4752
assert query.find()[0].str == "foo"
4853
assert query.find()[1].str == "bar"
4954

50-
query = box.query(str_prop.less_than("foo", case_sensitive=True)).build()
55+
query = box_test_entity.query(str_prop.less_than("foo", case_sensitive=True)).build()
5156
assert query.count() == 1
5257
assert query.find()[0].str == "bar"
5358

54-
query = box.query(str_prop.less_or_equal("foo", case_sensitive=True)).build()
59+
query = box_test_entity.query(str_prop.less_or_equal("foo", case_sensitive=True)).build()
5560
assert query.count() == 2
5661
assert query.find()[0].str == "foo"
5762
assert query.find()[1].str == "bar"
5863

5964
# Int queries
6065
int_prop: Property = TestEntity.get_property("int64")
6166

62-
query = box.query(int_prop.equals(123)).build()
67+
query = box_test_entity.query(int_prop.equals(123)).build()
6368
assert query.count() == 1
6469
assert query.find()[0].int64 == 123
6570

66-
query = box.query(int_prop.not_equals(123)).build()
71+
query = box_test_entity.query(int_prop.not_equals(123)).build()
6772
assert query.count() == 1
6873
assert query.find()[0].int64 == 456
6974

70-
query = box.query(int_prop.greater_than(123)).build()
75+
query = box_test_entity.query(int_prop.greater_than(123)).build()
7176
assert query.count() == 1
7277
assert query.find()[0].int64 == 456
7378

74-
query = box.query(int_prop.greater_or_equal(123)).build()
79+
query = box_test_entity.query(int_prop.greater_or_equal(123)).build()
7580
assert query.count() == 2
7681
assert query.find()[0].int64 == 123
7782
assert query.find()[1].int64 == 456
7883

79-
query = box.query(int_prop.less_than(456)).build()
84+
query = box_test_entity.query(int_prop.less_than(456)).build()
8085
assert query.count() == 1
8186
assert query.find()[0].int64 == 123
8287

83-
query = box.query(int_prop.less_or_equal(456)).build()
88+
query = box_test_entity.query(int_prop.less_or_equal(456)).build()
8489
assert query.count() == 2
8590
assert query.find()[0].int64 == 123
8691
assert query.find()[1].int64 == 456
8792

88-
query = box.query(int_prop.between(100, 200)).build()
93+
query = box_test_entity.query(int_prop.between(100, 200)).build()
8994
assert query.count() == 1
9095
assert query.find()[0].int64 == 123
9196

97+
#
9298
assert query.remove() == 1
9399

100+
# NN query
101+
vector_prop: Property = VectorEntity.get_property("vector")
102+
103+
query = box_vector_entity.query(vector_prop.nearest_neighbor([2.1, 2.1], 2)).build()
104+
assert query.count() == 2
105+
assert query.find_ids() == [2, 3]
106+
94107
ob.close()
95108

96109

0 commit comments

Comments
 (0)