summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2019-06-05 10:40:17 +0200
committerTor Egge <Tor.Egge@broadpark.no>2019-06-05 10:42:07 +0200
commit0790470c3b7801160272af7ef1327a522c71eade (patch)
tree758db24f36ced82af6f0acdc31b2a0c7d7857bd6 /searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp
parent0eedae03b7ea0558596bf8b77b04cb947d0f9793 (diff)
Test that field inverter uses field length calculator.
Diffstat (limited to 'searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp')
-rw-r--r--searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp31
1 files changed, 28 insertions, 3 deletions
diff --git a/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp b/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp
index c3b5b39b8d0..f741d902d3e 100644
--- a/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp
+++ b/searchlib/src/tests/memoryindex/field_inverter/field_inverter_test.cpp
@@ -120,7 +120,7 @@ struct Fixture
WordStore _word_store;
FieldIndexRemover _remover;
test::OrderedFieldIndexInserter _inserter;
- FieldLengthCalculator _calculator;
+ std::vector<std::unique_ptr<FieldLengthCalculator>> _calculators;
std::vector<std::unique_ptr<FieldInverter> > _inverters;
static Schema
@@ -140,16 +140,17 @@ struct Fixture
_word_store(),
_remover(_word_store),
_inserter(),
- _calculator(),
+ _calculators(),
_inverters()
{
for (uint32_t fieldId = 0; fieldId < _schema.getNumIndexFields();
++fieldId) {
+ _calculators.emplace_back(std::make_unique<FieldLengthCalculator>());
_inverters.push_back(std::make_unique<FieldInverter>(_schema,
fieldId,
_remover,
_inserter,
- _calculator));
+ *_calculators.back()));
}
}
@@ -182,6 +183,14 @@ struct Fixture
inverter->removeDocument(docId);
}
}
+
+ void assert_calculator(uint32_t field_id, double exp_avg, uint32_t exp_samples) {
+ double epsilon = 0.000000001;
+ const auto &calc = *_calculators[field_id];
+ EXPECT_APPROX(exp_avg, calc.get_average_field_length(), epsilon);
+ EXPECT_EQUAL(exp_samples, calc.get_num_samples());
+ }
+
};
@@ -363,6 +372,22 @@ TEST_F("require that cheap features are calculated", Fixture)
f._inserter.toStr());
}
+TEST_F("require that average field length is calculated", Fixture)
+{
+ f.invertDocument(10, *makeDoc10(f._b));
+ f.pushDocuments();
+ TEST_DO(f.assert_calculator(0, 4.0, 1));
+ TEST_DO(f.assert_calculator(1, 0.0, 0));
+ f.invertDocument(11, *makeDoc11(f._b));
+ f.pushDocuments();
+ TEST_DO(f.assert_calculator(0, (4.0 + 4.0)/2, 2));
+ TEST_DO(f.assert_calculator(1, 2.0, 1));
+ f.invertDocument(12, *makeDoc12(f._b));
+ f.pushDocuments();
+ TEST_DO(f.assert_calculator(0, (4.0 + 4.0 + 2.0)/3, 3));
+ TEST_DO(f.assert_calculator(1, 2.0, 1));
+}
+
} // namespace memoryindex
} // namespace search