Skip to content

Commit

Permalink
Add unit tests for Searcher and Reader
Browse files Browse the repository at this point in the history
Even though we will be removing the wrappers soon, the test coverage
should be complete and we could simply remove these files later.
  • Loading branch information
maneeshpm committed Jul 3, 2021
1 parent b851ceb commit c469a7f
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 0 deletions.
2 changes: 2 additions & 0 deletions test/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ tests = [
'book',
'manager',
'opds_catalog',
'reader',
'searcher'
]

if build_machine.system() != 'windows'
Expand Down
62 changes: 62 additions & 0 deletions test/reader.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@

#include "gtest/gtest.h"
#include "../include/reader.h"
#include "zim/archive.h"

namespace kiwix
{
/**
* This test file is written primarily to demonstrate how Reader is simply a
* wrapper over an archive. We will be dropping this wrapper soon.
**/
TEST (Reader, archiveWrapper) {
Reader reader("./test/zimfile.zim");
zim::Archive archive = *reader.getZimArchive();

std::ostringstream s;
s << archive.getUuid();

ASSERT_EQ(reader.getId(), s.str());
ASSERT_EQ(reader.getGlobalCount(), archive.getEntryCount());
ASSERT_EQ(reader.getMainPage().getTitle(), archive.getMainEntry().getTitle());
ASSERT_EQ(reader.hasFulltextIndex(), archive.hasFulltextIndex());
ASSERT_NO_THROW(reader.getRandomPage());
}

TEST (Reader, getFunctions) {
zim::Archive archive("./test/zimfile.zim");
Reader reader("./test/zimfile.zim");

auto archiveEntry = archive.getRandomEntry();
ASSERT_TRUE(reader.pathExists(archiveEntry.getPath()));
auto readerEntry = reader.getEntryFromPath(archiveEntry.getPath());
ASSERT_EQ(readerEntry.getTitle(), archiveEntry.getTitle());

ASSERT_FALSE(reader.pathExists("invalidEntryPath"));
ASSERT_THROW(reader.getEntryFromPath("invalidEntryPath"), NoEntry);

readerEntry = reader.getEntryFromTitle(archiveEntry.getTitle());
ASSERT_EQ(readerEntry.getTitle(), archiveEntry.getTitle());
}

TEST (Reader, suggestions) {
Reader reader("./test/zimfile.zim");
SuggestionsList_t suggestions;
reader.searchSuggestionsSmart("The Genius", 4, suggestions);

std::vector<std::string> suggestionResult, expectedResult;
std::string suggestionTitle;
for (auto it = suggestions.begin(); it != suggestions.end(); it++) {
suggestionResult.push_back(it->getTitle());
}

expectedResult = {
"The Genius After Hours",
"The Genius Hits the Road",
"The Genius Sings the Blues",
"The Genius of Ray Charles"
};

ASSERT_EQ(suggestionResult, expectedResult);
}
}
25 changes: 25 additions & 0 deletions test/searcher.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#include "gtest/gtest.h"
#include "../include/searcher.h"
#include "../include/reader.h"

namespace kiwix
{

TEST(Searcher, search) {
Reader reader("./test/example.zim");

Searcher searcher;
searcher.add_reader(&reader);
ASSERT_EQ(searcher.get_reader(0)->getTitle(), reader.getTitle());

searcher.search("wiki", 0, 2);
searcher.restart_search();
ASSERT_EQ(searcher.getEstimatedResultCount(), (unsigned int)2);

auto result = searcher.getNextResult();
ASSERT_EQ(result->get_title(), "FreedomBox for Communities/Offline Wikipedia - Wikibooks, open books for an open world");
result = searcher.getNextResult();
ASSERT_EQ(result->get_title(), "Wikibooks");
}

}

0 comments on commit c469a7f

Please sign in to comment.