Fix PR comments

This commit is contained in:
many 2021-06-17 15:19:03 +02:00
parent f496cd320d
commit 6cb1102bdb
No known key found for this signature in database
GPG Key ID: 2CEF23B75189EACA
4 changed files with 121 additions and 107 deletions

View File

@ -21,9 +21,9 @@ macro_rules! test_distinct {
builder.execute(|_, _| ()).unwrap(); builder.execute(|_, _| ()).unwrap();
wtxn.commit().unwrap(); wtxn.commit().unwrap();
let mut rtxn = index.read_txn().unwrap(); let rtxn = index.read_txn().unwrap();
let mut search = Search::new(&mut rtxn, &index); let mut search = Search::new(&rtxn, &index);
search.query(search::TEST_QUERY); search.query(search::TEST_QUERY);
search.limit(EXTERNAL_DOCUMENTS_IDS.len()); search.limit(EXTERNAL_DOCUMENTS_IDS.len());
search.authorize_typos(true); search.authorize_typos(true);
@ -50,27 +50,23 @@ macro_rules! test_distinct {
}; };
} }
#[rustfmt::skip] test_distinct!(
test_distinct!(distinct_string_default_criteria, tag, vec![Words, Typo, Proximity, Attribute, Exactness]); distinct_string_default_criteria,
#[rustfmt::skip] tag,
test_distinct!(distinct_number_default_criteria, asc_desc_rank, vec![Words, Typo, Proximity, Attribute, Exactness]); vec![Words, Typo, Proximity, Attribute, Exactness]
#[rustfmt::skip] );
test_distinct!(distinct_string_criterion_words, tag, vec![Words]); test_distinct!(
#[rustfmt::skip] distinct_number_default_criteria,
test_distinct!(distinct_number_criterion_words, asc_desc_rank, vec![Words]); asc_desc_rank,
#[rustfmt::skip] vec![Words, Typo, Proximity, Attribute, Exactness]
test_distinct!(distinct_string_criterion_words_typo, tag, vec![Words, Typo]); );
#[rustfmt::skip] test_distinct!(distinct_string_criterion_words, tag, vec![Words]);
test_distinct!(distinct_number_criterion_words_typo, asc_desc_rank, vec![Words, Typo]); test_distinct!(distinct_number_criterion_words, asc_desc_rank, vec![Words]);
#[rustfmt::skip] test_distinct!(distinct_string_criterion_words_typo, tag, vec![Words, Typo]);
test_distinct!(distinct_string_criterion_words_proximity, tag, vec![Words, Proximity]); test_distinct!(distinct_number_criterion_words_typo, asc_desc_rank, vec![Words, Typo]);
#[rustfmt::skip] test_distinct!(distinct_string_criterion_words_proximity, tag, vec![Words, Proximity]);
test_distinct!(distinct_number_criterion_words_proximity, asc_desc_rank, vec![Words, Proximity]); test_distinct!(distinct_number_criterion_words_proximity, asc_desc_rank, vec![Words, Proximity]);
#[rustfmt::skip] test_distinct!(distinct_string_criterion_words_attribute, tag, vec![Words, Attribute]);
test_distinct!(distinct_string_criterion_words_attribute, tag, vec![Words, Attribute]);
#[rustfmt::skip]
test_distinct!(distinct_number_criterion_words_attribute, asc_desc_rank, vec![Words, Attribute]); test_distinct!(distinct_number_criterion_words_attribute, asc_desc_rank, vec![Words, Attribute]);
#[rustfmt::skip] test_distinct!(distinct_string_criterion_words_exactness, tag, vec![Words, Exactness]);
test_distinct!(distinct_string_criterion_words_exactness, tag, vec![Words, Exactness]);
#[rustfmt::skip]
test_distinct!(distinct_number_criterion_words_exactness, asc_desc_rank, vec![Words, Exactness]); test_distinct!(distinct_number_criterion_words_exactness, asc_desc_rank, vec![Words, Exactness]);

View File

@ -10,7 +10,7 @@ macro_rules! test_filter {
fn $func() { fn $func() {
let criteria = vec![Words, Typo, Proximity, Attribute, Exactness]; let criteria = vec![Words, Typo, Proximity, Attribute, Exactness];
let index = search::setup_search_index_with_criteria(&criteria); let index = search::setup_search_index_with_criteria(&criteria);
let mut rtxn = index.read_txn().unwrap(); let rtxn = index.read_txn().unwrap();
let filter_conditions = let filter_conditions =
FilterCondition::from_array::<Vec<Either<Vec<&str>, &str>>, _, _, _>( FilterCondition::from_array::<Vec<Either<Vec<&str>, &str>>, _, _, _>(
@ -19,7 +19,7 @@ macro_rules! test_filter {
.unwrap() .unwrap()
.unwrap(); .unwrap();
let mut search = Search::new(&mut rtxn, &index); let mut search = Search::new(&rtxn, &index);
search.query(search::TEST_QUERY); search.query(search::TEST_QUERY);
search.limit(EXTERNAL_DOCUMENTS_IDS.len()); search.limit(EXTERNAL_DOCUMENTS_IDS.len());
search.authorize_typos(true); search.authorize_typos(true);
@ -40,45 +40,39 @@ macro_rules! test_filter {
}; };
} }
#[rustfmt::skip] test_filter!(eq_simple_string_filter, vec![Right("tag=red")]);
test_filter!(eq_simple_string_filter, vec![Right("tag=red")]); test_filter!(eq_simple_number_filter, vec![Right("asc_desc_rank=1")]);
#[rustfmt::skip]
test_filter!(eq_simple_number_filter, vec![Right("asc_desc_rank=1")]);
#[rustfmt::skip]
test_filter!(eq_string_and_filter_return_empty, vec![Right("tag=red"), Right("tag=green")]); test_filter!(eq_string_and_filter_return_empty, vec![Right("tag=red"), Right("tag=green")]);
#[rustfmt::skip] test_filter!(eq_mix_and_filter, vec![Right("tag=red"), Right("asc_desc_rank=1")]);
test_filter!(eq_mix_and_filter, vec![Right("tag=red"), Right("asc_desc_rank=1")]); test_filter!(eq_string_or_filter, vec![Left(vec!["tag=red", "tag=green"])]);
#[rustfmt::skip] test_filter!(eq_mix_or_filter, vec![Left(vec!["tag=red", "asc_desc_rank=1"])]);
test_filter!(eq_string_or_filter, vec![Left(vec!["tag=red", "tag=green"])]); test_filter!(eq_number_or_filter, vec![Left(vec!["asc_desc_rank=3", "asc_desc_rank=1"])]);
#[rustfmt::skip] test_filter!(eq_complex_filter, vec![Left(vec!["tag=red", "tag=green"]), Right("asc_desc_rank=3")]);
test_filter!(eq_mix_or_filter, vec![Left(vec!["tag=red", "asc_desc_rank=1"])]); test_filter!(
#[rustfmt::skip] eq_complex_filter_2,
test_filter!(eq_number_or_filter, vec![Left(vec!["asc_desc_rank=3", "asc_desc_rank=1"])]); vec![Left(vec!["tag=red", "tag=green"]), Left(vec!["asc_desc_rank=3", "asc_desc_rank=1"])]
#[rustfmt::skip] );
test_filter!(eq_complex_filter, vec![Left(vec!["tag=red", "tag=green"]), Right("asc_desc_rank=3")]); test_filter!(greater_simple_number_filter, vec![Right("asc_desc_rank>1")]);
#[rustfmt::skip] test_filter!(greater_mix_and_filter, vec![Right("tag=red"), Right("asc_desc_rank>1")]);
test_filter!(eq_complex_filter_2, vec![Left(vec!["tag=red", "tag=green"]), Left(vec!["asc_desc_rank=3", "asc_desc_rank=1"])]); test_filter!(greater_mix_or_filter, vec![Left(vec!["tag=red", "asc_desc_rank>1"])]);
#[rustfmt::skip] test_filter!(greater_number_or_filter, vec![Left(vec!["asc_desc_rank>3", "asc_desc_rank>1"])]);
test_filter!(greater_simple_number_filter, vec![Right("asc_desc_rank>1")]); test_filter!(
#[rustfmt::skip] greater_complex_filter,
test_filter!(greater_mix_and_filter, vec![Right("tag=red"), Right("asc_desc_rank>1")]); vec![Left(vec!["tag=red", "tag=green"]), Right("asc_desc_rank>3")]
#[rustfmt::skip] );
test_filter!(greater_mix_or_filter, vec![Left(vec!["tag=red", "asc_desc_rank>1"])]); test_filter!(
#[rustfmt::skip] greater_complex_filter_2,
test_filter!(greater_number_or_filter, vec![Left(vec!["asc_desc_rank>3", "asc_desc_rank>1"])]); vec![Left(vec!["tag=red", "tag=green"]), Left(vec!["asc_desc_rank>3", "asc_desc_rank>1"])]
#[rustfmt::skip] );
test_filter!(greater_complex_filter, vec![Left(vec!["tag=red", "tag=green"]), Right("asc_desc_rank>3")]); test_filter!(lower_simple_number_filter, vec![Right("asc_desc_rank<1")]);
#[rustfmt::skip] test_filter!(lower_mix_and_filter, vec![Right("tag=red"), Right("asc_desc_rank<1")]);
test_filter!(greater_complex_filter_2, vec![Left(vec!["tag=red", "tag=green"]), Left(vec!["asc_desc_rank>3", "asc_desc_rank>1"])]); test_filter!(lower_mix_or_filter, vec![Left(vec!["tag=red", "asc_desc_rank<1"])]);
#[rustfmt::skip] test_filter!(lower_number_or_filter, vec![Left(vec!["asc_desc_rank<3", "asc_desc_rank<1"])]);
test_filter!(lower_simple_number_filter, vec![Right("asc_desc_rank<1")]); test_filter!(
#[rustfmt::skip] lower_complex_filter,
test_filter!(lower_mix_and_filter, vec![Right("tag=red"), Right("asc_desc_rank<1")]); vec![Left(vec!["tag=red", "tag=green"]), Right("asc_desc_rank<3")]
#[rustfmt::skip] );
test_filter!(lower_mix_or_filter, vec![Left(vec!["tag=red", "asc_desc_rank<1"])]); test_filter!(
#[rustfmt::skip] lower_complex_filter_2,
test_filter!(lower_number_or_filter, vec![Left(vec!["asc_desc_rank<3", "asc_desc_rank<1"])]); vec![Left(vec!["tag=red", "tag=green"]), Left(vec!["asc_desc_rank<3", "asc_desc_rank<1"])]
#[rustfmt::skip] );
test_filter!(lower_complex_filter, vec![Left(vec!["tag=red", "tag=green"]), Right("asc_desc_rank<3")]);
#[rustfmt::skip]
test_filter!(lower_complex_filter_2, vec![Left(vec!["tag=red", "tag=green"]), Left(vec!["asc_desc_rank<3", "asc_desc_rank<1"])]);

View File

@ -128,7 +128,6 @@ pub fn expected_order(
fn execute_filter(filter: &str, document: &TestDocument) -> Option<String> { fn execute_filter(filter: &str, document: &TestDocument) -> Option<String> {
let mut id = None; let mut id = None;
if let Some((field, filter)) = filter.split_once("=") { if let Some((field, filter)) = filter.split_once("=") {
println!("eq on field {} with filter {}", field, filter);
if field == "tag" && document.tag == filter { if field == "tag" && document.tag == filter {
id = Some(document.id.clone()) id = Some(document.id.clone())
} else if field == "asc_desc_rank" } else if field == "asc_desc_rank"
@ -137,12 +136,10 @@ fn execute_filter(filter: &str, document: &TestDocument) -> Option<String> {
id = Some(document.id.clone()) id = Some(document.id.clone())
} }
} else if let Some(("asc_desc_rank", filter)) = filter.split_once("<") { } else if let Some(("asc_desc_rank", filter)) = filter.split_once("<") {
println!("lower on field asc_desc_rank with filter {}", filter);
if document.asc_desc_rank < filter.parse().unwrap() { if document.asc_desc_rank < filter.parse().unwrap() {
id = Some(document.id.clone()) id = Some(document.id.clone())
} }
} else if let Some(("asc_desc_rank", filter)) = filter.split_once(">") { } else if let Some(("asc_desc_rank", filter)) = filter.split_once(">") {
println!("higher on field asc_desc_rank with filter {}", filter);
if document.asc_desc_rank > filter.parse().unwrap() { if document.asc_desc_rank > filter.parse().unwrap() {
id = Some(document.id.clone()) id = Some(document.id.clone())
} }

View File

@ -16,9 +16,9 @@ macro_rules! test_criterion {
fn $func() { fn $func() {
let criteria = $criteria; let criteria = $criteria;
let index = search::setup_search_index_with_criteria(&criteria); let index = search::setup_search_index_with_criteria(&criteria);
let mut rtxn = index.read_txn().unwrap(); let rtxn = index.read_txn().unwrap();
let mut search = Search::new(&mut rtxn, &index); let mut search = Search::new(&rtxn, &index);
search.query(search::TEST_QUERY); search.query(search::TEST_QUERY);
search.limit(EXTERNAL_DOCUMENTS_IDS.len()); search.limit(EXTERNAL_DOCUMENTS_IDS.len());
search.authorize_typos($authorize_typos); search.authorize_typos($authorize_typos);
@ -37,42 +37,69 @@ macro_rules! test_criterion {
}; };
} }
#[rustfmt::skip] test_criterion!(none_allow_typo, ALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![]);
test_criterion!(none_allow_typo, ALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![]); test_criterion!(none_disallow_typo, DISALLOW_OPTIONAL_WORDS, DISALLOW_TYPOS, vec![]);
#[rustfmt::skip] test_criterion!(words_allow_typo, ALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Words]);
test_criterion!(none_disallow_typo, DISALLOW_OPTIONAL_WORDS, DISALLOW_TYPOS, vec![]); test_criterion!(attribute_allow_typo, DISALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Attribute]);
#[rustfmt::skip] test_criterion!(attribute_disallow_typo, DISALLOW_OPTIONAL_WORDS, DISALLOW_TYPOS, vec![Attribute]);
test_criterion!(words_allow_typo, ALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Words]); test_criterion!(exactness_allow_typo, DISALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Exactness]);
#[rustfmt::skip] test_criterion!(exactness_disallow_typo, DISALLOW_OPTIONAL_WORDS, DISALLOW_TYPOS, vec![Exactness]);
test_criterion!(attribute_allow_typo, DISALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Attribute]); test_criterion!(proximity_allow_typo, DISALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Proximity]);
#[rustfmt::skip] test_criterion!(proximity_disallow_typo, DISALLOW_OPTIONAL_WORDS, DISALLOW_TYPOS, vec![Proximity]);
test_criterion!(attribute_disallow_typo, DISALLOW_OPTIONAL_WORDS, DISALLOW_TYPOS, vec![Attribute]); test_criterion!(
#[rustfmt::skip] asc_allow_typo,
test_criterion!(exactness_allow_typo, DISALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Exactness]); DISALLOW_OPTIONAL_WORDS,
#[rustfmt::skip] ALLOW_TYPOS,
test_criterion!(exactness_disallow_typo, DISALLOW_OPTIONAL_WORDS, DISALLOW_TYPOS, vec![Exactness]); vec![Asc(S("asc_desc_rank"))]
#[rustfmt::skip] );
test_criterion!(proximity_allow_typo, DISALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Proximity]); test_criterion!(
#[rustfmt::skip] asc_disallow_typo,
test_criterion!(proximity_disallow_typo, DISALLOW_OPTIONAL_WORDS, DISALLOW_TYPOS, vec![Proximity]); DISALLOW_OPTIONAL_WORDS,
#[rustfmt::skip] DISALLOW_TYPOS,
test_criterion!(asc_allow_typo, DISALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Asc(S("asc_desc_rank"))]); vec![Asc(S("asc_desc_rank"))]
#[rustfmt::skip] );
test_criterion!(asc_disallow_typo, DISALLOW_OPTIONAL_WORDS, DISALLOW_TYPOS, vec![Asc(S("asc_desc_rank"))]); test_criterion!(
#[rustfmt::skip] desc_allow_typo,
test_criterion!(desc_allow_typo, DISALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Desc(S("asc_desc_rank"))]); DISALLOW_OPTIONAL_WORDS,
#[rustfmt::skip] ALLOW_TYPOS,
test_criterion!(desc_disallow_typo, DISALLOW_OPTIONAL_WORDS, DISALLOW_TYPOS, vec![Desc(S("asc_desc_rank"))]); vec![Desc(S("asc_desc_rank"))]
#[rustfmt::skip] );
test_criterion!(asc_unexisting_field_allow_typo, DISALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Asc(S("unexisting_field"))]); test_criterion!(
#[rustfmt::skip] desc_disallow_typo,
test_criterion!(asc_unexisting_field_disallow_typo, DISALLOW_OPTIONAL_WORDS, DISALLOW_TYPOS, vec![Asc(S("unexisting_field"))]); DISALLOW_OPTIONAL_WORDS,
#[rustfmt::skip] DISALLOW_TYPOS,
test_criterion!(desc_unexisting_field_allow_typo, DISALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Desc(S("unexisting_field"))]); vec![Desc(S("asc_desc_rank"))]
#[rustfmt::skip] );
test_criterion!(desc_unexisting_field_disallow_typo, DISALLOW_OPTIONAL_WORDS, DISALLOW_TYPOS, vec![Desc(S("unexisting_field"))]); test_criterion!(
#[rustfmt::skip] asc_unexisting_field_allow_typo,
test_criterion!(default_criteria_order, ALLOW_OPTIONAL_WORDS, ALLOW_TYPOS, vec![Words, Typo, Proximity, Attribute, Exactness]); DISALLOW_OPTIONAL_WORDS,
ALLOW_TYPOS,
vec![Asc(S("unexisting_field"))]
);
test_criterion!(
asc_unexisting_field_disallow_typo,
DISALLOW_OPTIONAL_WORDS,
DISALLOW_TYPOS,
vec![Asc(S("unexisting_field"))]
);
test_criterion!(
desc_unexisting_field_allow_typo,
DISALLOW_OPTIONAL_WORDS,
ALLOW_TYPOS,
vec![Desc(S("unexisting_field"))]
);
test_criterion!(
desc_unexisting_field_disallow_typo,
DISALLOW_OPTIONAL_WORDS,
DISALLOW_TYPOS,
vec![Desc(S("unexisting_field"))]
);
test_criterion!(
default_criteria_order,
ALLOW_OPTIONAL_WORDS,
ALLOW_TYPOS,
vec![Words, Typo, Proximity, Attribute, Exactness]
);
#[test] #[test]
fn criteria_mixup() { fn criteria_mixup() {