15 #include <gmock/gmock.h>
16 #include <gtest/gtest.h>
20 #include <range/v3/range/conversion.hpp>
21 #include <range/v3/view/iota.hpp>
27 TEST(TakeEvenlyView, NoElementsTakeZero) {
28 const auto input = std::vector<int>{};
30 ASSERT_EQ(output.size(), 0);
33 TEST(TakeEvenlyView, NoElements) {
34 const auto input = std::vector<int>{};
36 ASSERT_EQ(output.size(), 0);
39 TEST(TakeEvenlyView, TakeZero) {
40 const auto input = std::vector<int>{1, 2, 3, 4};
42 ASSERT_EQ(output.size(), 0);
45 TEST(TakeEvenlyView, TakeOne) {
46 const auto input = std::vector<int>{1, 2, 3, 4};
48 ASSERT_THAT(output, testing::ElementsAre(1));
51 TEST(TakeEvenlyView, TakeAll) {
52 const auto input = std::vector<int>{1, 2, 3, 4};
54 ASSERT_THAT(output, testing::ElementsAre(1, 2, 3, 4));
57 TEST(TakeEvenlyView, TakeTwoFromFour) {
58 const auto input = std::vector<int>{1, 2, 3, 4};
60 ASSERT_THAT(output, testing::ElementsAre(1, 4));
63 TEST(TakeEvenlyView, TakeThreeFromFive) {
64 const auto input = std::vector<int>{1, 2, 3, 4, 5};
66 ASSERT_THAT(output, testing::ElementsAre(1, 3, 5));
69 TEST(TakeEvenlyView, TakeThreeFromSix) {
70 const auto input = std::vector<int>{1, 2, 3, 4, 5, 6};
72 ASSERT_THAT(output, testing::ElementsAre(1, 4, 6));
75 TEST(TakeEvenlyView, TakeThreeFromNine) {
76 const auto input = std::vector<int>{1, 2, 3, 4, 5, 6, 7, 8, 9};
78 ASSERT_THAT(output, testing::ElementsAre(1, 5, 9));
81 TEST(TakeEvenlyView, TakeThreeFromFour) {
82 const auto input = std::vector<int>{1, 2, 3, 4};
84 ASSERT_THAT(output, testing::ElementsAre(1, 3, 4));
87 TEST(TakeEvenlyView, TakeSixFromTen) {
88 const auto input = std::vector<int>{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
90 ASSERT_THAT(output, testing::ElementsAre(1, 3, 5, 7, 9, 10));
93 TEST(TakeEvenlyView, TakeFromGenerator) {
95 ASSERT_THAT(output, testing::ElementsAre(1, 3, 5));