mirror of
https://github.com/typesense/typesense.git
synced 2025-05-21 06:02:26 +08:00
Add filter_result_iterator_t::init_status()
.
This commit is contained in:
parent
3e2a814b0f
commit
9ef9be516b
@ -529,101 +529,5 @@ TEST_F(FilterTest, FilterTreeIterator) {
|
||||
ASSERT_TRUE(iter_add_phrase_ids_test->is_valid);
|
||||
ASSERT_EQ(6, iter_add_phrase_ids_test->seq_id);
|
||||
|
||||
delete filter_tree_root;
|
||||
filter_tree_root = nullptr;
|
||||
filter_op = filter::parse_filter_query("name: jeremy && tags: fine platinum", coll->get_schema(), store, doc_id_prefix,
|
||||
filter_tree_root);
|
||||
ASSERT_TRUE(filter_op.ok());
|
||||
|
||||
auto iter_and_test = filter_result_iterator_t(coll->get_name(), coll->_get_index(), filter_tree_root, iter_op);
|
||||
|
||||
ASSERT_TRUE(iter_and_test.valid());
|
||||
ASSERT_EQ(1, iter_and_test.doc);
|
||||
iter_and_test.next();
|
||||
|
||||
ASSERT_FALSE(iter_and_test.valid());
|
||||
ASSERT_TRUE(iter_op.ok());
|
||||
|
||||
delete filter_tree_root;
|
||||
filter_tree_root = nullptr;
|
||||
filter_op = filter::parse_filter_query("name: James || tags: bronze", coll->get_schema(), store, doc_id_prefix,
|
||||
filter_tree_root);
|
||||
ASSERT_TRUE(filter_op.ok());
|
||||
|
||||
auto doc =
|
||||
R"({
|
||||
"name": "James Rowdy",
|
||||
"age": 36,
|
||||
"years": [2005, 2022],
|
||||
"rating": 6.03,
|
||||
"tags": ["copper"]
|
||||
})"_json;
|
||||
auto add_op = coll->add(doc.dump());
|
||||
ASSERT_TRUE(add_op.ok());
|
||||
|
||||
auto iter_or_test = filter_result_iterator_t(coll->get_name(), coll->_get_index(), filter_tree_root, iter_op);
|
||||
|
||||
expected = {2, 4, 5};
|
||||
for (auto const& i : expected) {
|
||||
ASSERT_TRUE(iter_or_test.valid());
|
||||
ASSERT_EQ(i, iter_or_test.doc);
|
||||
iter_or_test.next();
|
||||
}
|
||||
|
||||
ASSERT_FALSE(iter_or_test.valid());
|
||||
ASSERT_TRUE(iter_op.ok());
|
||||
|
||||
delete filter_tree_root;
|
||||
filter_tree_root = nullptr;
|
||||
filter_op = filter::parse_filter_query("name: James || (tags: gold && tags: silver)", coll->get_schema(), store, doc_id_prefix,
|
||||
filter_tree_root);
|
||||
ASSERT_TRUE(filter_op.ok());
|
||||
|
||||
auto iter_skip_complex_filter_test = filter_result_iterator_t(coll->get_name(), coll->_get_index(), filter_tree_root, iter_op);
|
||||
|
||||
ASSERT_TRUE(iter_skip_complex_filter_test.valid());
|
||||
iter_skip_complex_filter_test.skip_to(4);
|
||||
|
||||
expected = {4, 5};
|
||||
for (auto const& i : expected) {
|
||||
ASSERT_TRUE(iter_skip_complex_filter_test.valid());
|
||||
ASSERT_EQ(i, iter_skip_complex_filter_test.doc);
|
||||
iter_skip_complex_filter_test.next();
|
||||
}
|
||||
|
||||
ASSERT_FALSE(iter_skip_complex_filter_test.valid());
|
||||
ASSERT_TRUE(iter_op.ok());
|
||||
|
||||
delete filter_tree_root;
|
||||
filter_tree_root = nullptr;
|
||||
filter_op = filter::parse_filter_query("name: James || (tags: gold && tags: [silver, bronze])", coll->get_schema(), store, doc_id_prefix,
|
||||
filter_tree_root);
|
||||
ASSERT_TRUE(filter_op.ok());
|
||||
|
||||
auto iter_validate_ids_test = filter_result_iterator_t(coll->get_name(), coll->_get_index(), filter_tree_root, iter_op);
|
||||
|
||||
expected = {0, 2, 4, 5};
|
||||
for (auto const& i : expected) {
|
||||
ASSERT_TRUE(iter_validate_ids_test.valid(i));
|
||||
}
|
||||
|
||||
ASSERT_TRUE(iter_op.ok());
|
||||
|
||||
delete filter_tree_root;
|
||||
filter_tree_root = nullptr;
|
||||
filter_op = filter::parse_filter_query("name: James || tags: != gold", coll->get_schema(), store, doc_id_prefix,
|
||||
filter_tree_root);
|
||||
ASSERT_TRUE(filter_op.ok());
|
||||
|
||||
auto iter_validate_ids_not_equals_filter_test = filter_result_iterator_t(coll->get_name(), coll->_get_index(),
|
||||
filter_tree_root, iter_op);
|
||||
|
||||
expected = {1, 3, 5};
|
||||
for (auto const& i : expected) {
|
||||
ASSERT_TRUE(iter_validate_ids_not_equals_filter_test.valid(i));
|
||||
}
|
||||
|
||||
ASSERT_TRUE(iter_op.ok());
|
||||
|
||||
delete filter_tree_root;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user