diff options
author | tau3 <smr.oznob@gmail.com> | 2021-04-15 16:15:19 +0400 |
---|---|---|
committer | tau3 <smr.oznob@gmail.com> | 2021-04-15 16:15:19 +0400 |
commit | 5f3913f8e693f0cb5130c3714bed852b963fbfce (patch) | |
tree | c2468160559a920957cd47ecb95bb26d56f6d05e /test/feedcontainer.cpp | |
parent | 81fc4b353e8d148338cc8357ffe73e6dcb8fb294 (diff) |
add test for sorting by title
Diffstat (limited to 'test/feedcontainer.cpp')
-rw-r--r-- | test/feedcontainer.cpp | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/test/feedcontainer.cpp b/test/feedcontainer.cpp index 83bdaf91..215e7a54 100644 --- a/test/feedcontainer.cpp +++ b/test/feedcontainer.cpp @@ -545,7 +545,7 @@ TEST_CASE("sort_feeds() and keep in-group order when sorting by articles", } } -TEST_CASE("sort_feeds() and keep in-group order when sorting by lsat updated item", +TEST_CASE("sort_feeds() and keep in-group order when sorting by last updated item", "[FeedContainer]") { ConfigContainer cfg; @@ -600,6 +600,58 @@ TEST_CASE("sort_feeds() and keep in-group order when sorting by lsat updated ite } } +TEST_CASE("sort_feeds() and keep in-group order when sorting by title", + "[FeedContainer]") +{ + ConfigContainer cfg; + Cache rsscache(":memory:", &cfg); + + const std::map<std::string, std::string> url_to_title = { + {"1", "c"}, {"2", "b"}, {"3", "a"}, {"4", "a"}, {"5", "a"} + }; + + std::vector<std::shared_ptr<RssFeed>> feeds; + for (const auto& entry : url_to_title) { + const auto feed = std::make_shared<RssFeed>(&rsscache, entry.first); + feed->set_title(entry.second); + feeds.push_back(feed); + } + FeedContainer feedcontainer; + feedcontainer.set_feeds(feeds); + + FeedSortStrategy strategy; + strategy.sm = FeedSortMethod::TITLE; + SECTION("descending order") { + strategy.sd = SortDirection::DESC; + feedcontainer.sort_feeds(strategy); + const auto sorted_feeds = feedcontainer.get_all_feeds(); + + std::vector<std::string> actual; + for (const auto& feed : sorted_feeds) { + auto url = feed->rssurl(); + actual.push_back(url); + } + + const std::vector<std::string> expected = {"3", "4", "5", "2", "1"}; + REQUIRE(expected == actual); + } + + SECTION("acsending order") { + strategy.sd = SortDirection::ASC; + feedcontainer.sort_feeds(strategy); + const auto sorted_feeds = feedcontainer.get_all_feeds(); + + std::vector<std::string> actual; + for (const auto& feed : sorted_feeds) { + auto url = feed->rssurl(); + actual.push_back(url); + } + + const std::vector<std::string> expected = {"1", "2", "3", "4", "5"} ; + REQUIRE(expected == actual); + } +} + TEST_CASE("sort_feeds() sorts by number of unread articles if `feed-sort-order` " "is \"unreadarticlecount\"", "[FeedContainer]") |