mirror of https://github.com/kiwix/libkiwix.git
Enter EXPECT_FILTER_RESULTS()
This diff is easier to view if whitespace change is ignored.
This commit is contained in:
parent
0f277ffa34
commit
22b8625033
171
test/library.cpp
171
test/library.cpp
|
@ -258,74 +258,63 @@ TEST_F(LibraryTest, emptyFilter)
|
||||||
EXPECT_EQ(bookIds, lib.getBooksIds());
|
EXPECT_EQ(bookIds, lib.getBooksIds());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define EXPECT_FILTER_RESULTS(f, ...) \
|
||||||
|
EXPECT_EQ( \
|
||||||
|
ids2Titles(lib.filter(f)), \
|
||||||
|
TitleCollection({ __VA_ARGS__ }) \
|
||||||
|
)
|
||||||
|
|
||||||
TEST_F(LibraryTest, filterByLanguage)
|
TEST_F(LibraryTest, filterByLanguage)
|
||||||
{
|
{
|
||||||
const auto bookIds = lib.filter(kiwix::Filter().lang("eng"));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().lang("eng"),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Granblue Fantasy Wiki",
|
||||||
TitleCollection({
|
"Islam Stack Exchange",
|
||||||
"Granblue Fantasy Wiki",
|
"Movies & TV Stack Exchange",
|
||||||
"Islam Stack Exchange",
|
"Mythology & Folklore Stack Exchange",
|
||||||
"Movies & TV Stack Exchange",
|
"TED talks - Business"
|
||||||
"Mythology & Folklore Stack Exchange",
|
|
||||||
"TED talks - Business"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(LibraryTest, filterByTags)
|
TEST_F(LibraryTest, filterByTags)
|
||||||
{
|
{
|
||||||
auto bookIds = lib.filter(kiwix::Filter().acceptTags({"stackexchange"}));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().acceptTags({"stackexchange"}),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Islam Stack Exchange",
|
||||||
TitleCollection({
|
"Movies & TV Stack Exchange",
|
||||||
"Islam Stack Exchange",
|
"Mythology & Folklore Stack Exchange"
|
||||||
"Movies & TV Stack Exchange",
|
|
||||||
"Mythology & Folklore Stack Exchange"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// filtering by tags is case sensitive
|
// filtering by tags is case sensitive
|
||||||
bookIds = lib.filter(kiwix::Filter().acceptTags({"stackEXChange"}));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().acceptTags({"stackEXChange"}),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
/* no results */
|
||||||
TitleCollection({})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// filtering by tags requires full match of the search term
|
// filtering by tags requires full match of the search term
|
||||||
bookIds = lib.filter(kiwix::Filter().acceptTags({"stackexch"}));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().acceptTags({"stackexch"}),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
/* no results */
|
||||||
TitleCollection({})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// in tags with values (tag:value form) the value is an inseparable
|
// in tags with values (tag:value form) the value is an inseparable
|
||||||
// part of the tag
|
// part of the tag
|
||||||
EXPECT_EQ(ids2Titles(lib.filter(kiwix::Filter().acceptTags({"_category"}))),
|
EXPECT_FILTER_RESULTS(kiwix::Filter().acceptTags({"_category"}),
|
||||||
TitleCollection({})
|
/* no results */
|
||||||
);
|
);
|
||||||
EXPECT_EQ(ids2Titles(lib.filter(kiwix::Filter().acceptTags({"_category:category_defined_via_tags_only"}))),
|
EXPECT_FILTER_RESULTS(kiwix::Filter().acceptTags({"_category:category_defined_via_tags_only"}),
|
||||||
TitleCollection({"Tania Louis"})
|
"Tania Louis"
|
||||||
);
|
);
|
||||||
|
|
||||||
bookIds = lib.filter(kiwix::Filter().acceptTags({"wikipedia"}));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().acceptTags({"wikipedia"}),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Encyclopédie de la Tunisie",
|
||||||
TitleCollection({
|
"Géographie par Wikipédia",
|
||||||
"Encyclopédie de la Tunisie",
|
"Mathématiques"
|
||||||
"Géographie par Wikipédia",
|
|
||||||
"Mathématiques"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
bookIds = lib.filter(kiwix::Filter().acceptTags({"wikipedia", "nopic"}));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().acceptTags({"wikipedia", "nopic"}),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Géographie par Wikipédia",
|
||||||
TitleCollection({
|
"Mathématiques"
|
||||||
"Géographie par Wikipédia",
|
|
||||||
"Mathématiques"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
bookIds = lib.filter(kiwix::Filter().acceptTags({"wikipedia"}).rejectTags({"nopic"}));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().acceptTags({"wikipedia"}).rejectTags({"nopic"}),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Encyclopédie de la Tunisie"
|
||||||
TitleCollection({
|
|
||||||
"Encyclopédie de la Tunisie"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -333,102 +322,78 @@ TEST_F(LibraryTest, filterByTags)
|
||||||
TEST_F(LibraryTest, filterByQuery)
|
TEST_F(LibraryTest, filterByQuery)
|
||||||
{
|
{
|
||||||
// filtering by query checks the title
|
// filtering by query checks the title
|
||||||
auto bookIds = lib.filter(kiwix::Filter().query("Exchange"));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().query("Exchange"),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Islam Stack Exchange",
|
||||||
TitleCollection({
|
"Movies & TV Stack Exchange",
|
||||||
"Islam Stack Exchange",
|
"Mythology & Folklore Stack Exchange"
|
||||||
"Movies & TV Stack Exchange",
|
|
||||||
"Mythology & Folklore Stack Exchange"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// filtering by query checks the description/summary
|
// filtering by query checks the description/summary
|
||||||
bookIds = lib.filter(kiwix::Filter().query("enthusiasts"));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().query("enthusiasts"),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Movies & TV Stack Exchange",
|
||||||
TitleCollection({
|
"Mythology & Folklore Stack Exchange"
|
||||||
"Movies & TV Stack Exchange",
|
|
||||||
"Mythology & Folklore Stack Exchange"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// filtering by query is case insensitive on titles
|
// filtering by query is case insensitive on titles
|
||||||
bookIds = lib.filter(kiwix::Filter().query("ExcHANge"));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().query("ExcHANge"),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Islam Stack Exchange",
|
||||||
TitleCollection({
|
"Movies & TV Stack Exchange",
|
||||||
"Islam Stack Exchange",
|
"Mythology & Folklore Stack Exchange"
|
||||||
"Movies & TV Stack Exchange",
|
|
||||||
"Mythology & Folklore Stack Exchange"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// filtering by query is case insensitive on description/summary
|
// filtering by query is case insensitive on description/summary
|
||||||
bookIds = lib.filter(kiwix::Filter().query("enTHUSiaSTS"));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().query("enTHUSiaSTS"),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Movies & TV Stack Exchange",
|
||||||
TitleCollection({
|
"Mythology & Folklore Stack Exchange"
|
||||||
"Movies & TV Stack Exchange",
|
|
||||||
"Mythology & Folklore Stack Exchange"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// by default, filtering by query assumes partial query
|
// by default, filtering by query assumes partial query
|
||||||
bookIds = lib.filter(kiwix::Filter().query("Wiki"));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().query("Wiki"),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Encyclopédie de la Tunisie",
|
||||||
TitleCollection({
|
"Granblue Fantasy Wiki",
|
||||||
"Encyclopédie de la Tunisie",
|
"Géographie par Wikipédia",
|
||||||
"Granblue Fantasy Wiki",
|
"Wikiquote"
|
||||||
"Géographie par Wikipédia",
|
|
||||||
"Wikiquote"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// partial query can be disabled
|
// partial query can be disabled
|
||||||
bookIds = lib.filter(kiwix::Filter().query("Wiki", false));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().query("Wiki", false),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Granblue Fantasy Wiki"
|
||||||
TitleCollection({
|
|
||||||
"Granblue Fantasy Wiki"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(LibraryTest, filterByCreator)
|
TEST_F(LibraryTest, filterByCreator)
|
||||||
{
|
{
|
||||||
auto bookIds = lib.filter(kiwix::Filter().creator("Wikipedia"));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().creator("Wikipedia"),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Encyclopédie de la Tunisie",
|
||||||
TitleCollection({
|
"Géographie par Wikipédia",
|
||||||
"Encyclopédie de la Tunisie",
|
"Mathématiques"
|
||||||
"Géographie par Wikipédia",
|
|
||||||
"Mathématiques"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// filtering by creator requires full match of the search term
|
// filtering by creator requires full match of the search term
|
||||||
EXPECT_EQ(ids2Titles(lib.filter(kiwix::Filter().creator("Wiki"))),
|
EXPECT_FILTER_RESULTS(kiwix::Filter().creator("Wiki"),
|
||||||
TitleCollection({"Granblue Fantasy Wiki"})
|
"Granblue Fantasy Wiki"
|
||||||
);
|
);
|
||||||
|
|
||||||
// filtering by creator is case sensitive
|
// filtering by creator is case sensitive
|
||||||
EXPECT_EQ(ids2Titles(lib.filter(kiwix::Filter().creator("wiki"))),
|
EXPECT_FILTER_RESULTS(kiwix::Filter().creator("wiki"),
|
||||||
TitleCollection({})
|
/* no results */
|
||||||
);
|
);
|
||||||
|
|
||||||
// filtering by creator requires full match of the full author/creator name
|
// filtering by creator requires full match of the full author/creator name
|
||||||
EXPECT_EQ(ids2Titles(lib.filter(kiwix::Filter().creator("Stack"))),
|
EXPECT_FILTER_RESULTS(kiwix::Filter().creator("Stack"),
|
||||||
TitleCollection({})
|
/* no results */
|
||||||
);
|
);
|
||||||
EXPECT_EQ(ids2Titles(lib.filter(kiwix::Filter().creator("Movies & TV Stack Exchange"))),
|
EXPECT_FILTER_RESULTS(kiwix::Filter().creator("Movies & TV Stack Exchange"),
|
||||||
TitleCollection({"Movies & TV Stack Exchange"})
|
"Movies & TV Stack Exchange"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_F(LibraryTest, filterByMultipleCriteria)
|
TEST_F(LibraryTest, filterByMultipleCriteria)
|
||||||
{
|
{
|
||||||
auto bookIds = lib.filter(kiwix::Filter().query("Wiki").creator("Wiki"));
|
EXPECT_FILTER_RESULTS(kiwix::Filter().query("Wiki").creator("Wiki"),
|
||||||
EXPECT_EQ(ids2Titles(bookIds),
|
"Granblue Fantasy Wiki"
|
||||||
TitleCollection({
|
|
||||||
"Granblue Fantasy Wiki"
|
|
||||||
})
|
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue