Enhanced the LibraryTest.filterCheck unit-test

Now the LibraryTest.filterCheck unit-test validates the actual entries
returned by `Library::filter` (previously only the count of the results
was checked).
This commit is contained in:
Veloman Yunkan 2021-04-09 23:20:18 +04:00
parent d134ad417f
commit db3e0d7f72
1 changed files with 66 additions and 8 deletions

View File

@ -190,6 +190,9 @@ namespace
class LibraryTest : public ::testing::Test { class LibraryTest : public ::testing::Test {
protected: protected:
typedef kiwix::Library::BookIdCollection BookIdCollection;
typedef std::vector<std::string> TitleCollection;
void SetUp() override { void SetUp() override {
kiwix::Manager manager(&lib); kiwix::Manager manager(&lib);
manager.readOpds(sampleOpdsStream, "foo.urlHost"); manager.readOpds(sampleOpdsStream, "foo.urlHost");
@ -201,6 +204,15 @@ class LibraryTest : public ::testing::Test {
return bookmark; return bookmark;
}; };
TitleCollection ids2Titles(const BookIdCollection& ids) {
TitleCollection titles;
for ( const auto& bookId : ids ) {
titles.push_back(lib.getBookById(bookId).getTitle());
}
std::sort(titles.begin(), titles.end());
return titles;
}
kiwix::Library lib; kiwix::Library lib;
}; };
@ -246,28 +258,74 @@ TEST_F(LibraryTest, filterCheck)
EXPECT_EQ(bookIds, lib.getBooksIds()); EXPECT_EQ(bookIds, lib.getBooksIds());
bookIds = lib.filter(kiwix::Filter().lang("eng")); bookIds = lib.filter(kiwix::Filter().lang("eng"));
EXPECT_EQ(bookIds.size(), 5U); EXPECT_EQ(ids2Titles(bookIds),
TitleCollection({
"Granblue Fantasy Wiki",
"Islam Stack Exchange",
"Movies & TV Stack Exchange",
"Mythology & Folklore Stack Exchange",
"TED talks - Business"
})
);
bookIds = lib.filter(kiwix::Filter().acceptTags({"stackexchange"})); bookIds = lib.filter(kiwix::Filter().acceptTags({"stackexchange"}));
EXPECT_EQ(bookIds.size(), 3U); EXPECT_EQ(ids2Titles(bookIds),
TitleCollection({
"Islam Stack Exchange",
"Movies & TV Stack Exchange",
"Mythology & Folklore Stack Exchange"
})
);
bookIds = lib.filter(kiwix::Filter().acceptTags({"wikipedia"})); bookIds = lib.filter(kiwix::Filter().acceptTags({"wikipedia"}));
EXPECT_EQ(bookIds.size(), 3U); EXPECT_EQ(ids2Titles(bookIds),
TitleCollection({
"Encyclopédie de la Tunisie",
"Géographie par Wikipédia",
"Mathématiques"
})
);
bookIds = lib.filter(kiwix::Filter().acceptTags({"wikipedia", "nopic"})); bookIds = lib.filter(kiwix::Filter().acceptTags({"wikipedia", "nopic"}));
EXPECT_EQ(bookIds.size(), 2U); EXPECT_EQ(ids2Titles(bookIds),
TitleCollection({
"Géographie par Wikipédia",
"Mathématiques"
})
);
bookIds = lib.filter(kiwix::Filter().acceptTags({"wikipedia"}).rejectTags({"nopic"})); bookIds = lib.filter(kiwix::Filter().acceptTags({"wikipedia"}).rejectTags({"nopic"}));
EXPECT_EQ(bookIds.size(), 1U); EXPECT_EQ(ids2Titles(bookIds),
TitleCollection({
"Encyclopédie de la Tunisie"
})
);
bookIds = lib.filter(kiwix::Filter().query("folklore")); bookIds = lib.filter(kiwix::Filter().query("folklore"));
EXPECT_EQ(bookIds.size(), 1U); EXPECT_EQ(ids2Titles(bookIds),
TitleCollection({
"Mythology & Folklore Stack Exchange"
})
);
bookIds = lib.filter(kiwix::Filter().query("Wiki")); bookIds = lib.filter(kiwix::Filter().query("Wiki"));
EXPECT_EQ(bookIds.size(), 4U); EXPECT_EQ(ids2Titles(bookIds),
TitleCollection({
"Encyclopédie de la Tunisie",
"Granblue Fantasy Wiki",
"Géographie par Wikipédia",
"Wikiquote"
})
);
bookIds = lib.filter(kiwix::Filter().query("Wiki").creator("Wiki")); bookIds = lib.filter(kiwix::Filter().query("Wiki").creator("Wiki"));
EXPECT_EQ(bookIds.size(), 1U); EXPECT_EQ(ids2Titles(bookIds),
TitleCollection({
"Granblue Fantasy Wiki"
})
);
} }