mirror of https://github.com/kiwix/libkiwix.git
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:
parent
d134ad417f
commit
db3e0d7f72
|
@ -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"
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue