mirror of https://github.com/kiwix/libkiwix.git
Searcher::add_reader() rejects duplicate readers
A O(N) linear search was added to `Searcher::add_reader()` deliberately. This doesn't seem to be an operation that may lead to performance problems.
This commit is contained in:
parent
ff050dc811
commit
0be00b791f
|
@ -94,6 +94,12 @@ bool Searcher::add_reader(Reader* reader)
|
|||
if (!reader->hasFulltextIndex()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for ( const Reader* const existing_reader : readers ) {
|
||||
if ( existing_reader->getZimFilePath() == reader->getZimFilePath() )
|
||||
return false;
|
||||
}
|
||||
|
||||
this->readers.push_back(reader);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,20 @@
|
|||
namespace kiwix
|
||||
{
|
||||
|
||||
TEST(Searcher, add_reader) {
|
||||
Reader reader1("./test/example.zim");
|
||||
Reader reader2("./test/example.zim");
|
||||
Reader reader3("./test/../test/example.zim");
|
||||
|
||||
Searcher searcher;
|
||||
ASSERT_TRUE (searcher.add_reader(&reader1));
|
||||
ASSERT_FALSE(searcher.add_reader(&reader1));
|
||||
ASSERT_FALSE(searcher.add_reader(&reader2));
|
||||
|
||||
// equivalence of resolved paths is not checked by Searcher::add_reader
|
||||
ASSERT_TRUE(searcher.add_reader(&reader3));
|
||||
}
|
||||
|
||||
TEST(Searcher, search) {
|
||||
Reader reader("./test/example.zim");
|
||||
|
||||
|
@ -64,4 +78,4 @@ TEST(Searcher, incrementalRange) {
|
|||
ASSERT_EQ(suggCount, 50);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue