|
1 | 1 | #include "aggregators.hpp" |
| 2 | +#include "doctest/doctest.h" |
2 | 3 | #include "generator.hpp" |
3 | 4 | #include "manipulators.hpp" |
4 | 5 | #include "sources.hpp" |
5 | | -#include "gmock/gmock.h" |
6 | | -#include "gtest/gtest.h" |
7 | 6 |
|
8 | 7 | #include <map> |
9 | 8 | #include <sstream> |
@@ -46,165 +45,159 @@ size_t sum_ref(size_t &old, size_t in) { |
46 | 45 | return old; |
47 | 46 | } |
48 | 47 |
|
49 | | -TEST(aggregate, empty) { |
| 48 | +TEST_CASE("Aggregate empty generator") { |
50 | 49 | auto gen = a_empty(); |
51 | | - // gen(); |
52 | 50 | std::vector<size_t> res; |
53 | | - EXPECT_EQ(0, fpgen::aggregate_to(gen, res).size()); |
| 51 | + CHECK(0 == fpgen::aggregate_to(gen, res).size()); |
54 | 52 | } |
55 | 53 |
|
56 | | -TEST(aggregate, vector) { |
| 54 | +TEST_CASE("Aggregate to std::vector") { |
57 | 55 | auto gen = values(); |
58 | 56 | std::vector<size_t> res; |
59 | 57 | fpgen::aggregate_to(gen, res); |
60 | 58 |
|
61 | | - EXPECT_EQ(0, res[0]); |
62 | | - EXPECT_EQ(1, res[1]); |
63 | | - EXPECT_EQ(1, res[2]); |
64 | | - EXPECT_EQ(2, res[3]); |
65 | | - EXPECT_EQ(3, res[4]); |
66 | | - EXPECT_EQ(5, res[5]); |
67 | | - EXPECT_EQ(8, res[6]); |
68 | | - EXPECT_EQ(13, res[7]); |
69 | | - EXPECT_EQ(21, res[8]); |
70 | | - EXPECT_EQ(34, res[9]); |
71 | | - EXPECT_EQ(res.size(), 10); |
| 59 | + CHECK(0 == res[0]); |
| 60 | + CHECK(1 == res[1]); |
| 61 | + CHECK(1 == res[2]); |
| 62 | + CHECK(2 == res[3]); |
| 63 | + CHECK(3 == res[4]); |
| 64 | + CHECK(5 == res[5]); |
| 65 | + CHECK(8 == res[6]); |
| 66 | + CHECK(13 == res[7]); |
| 67 | + CHECK(21 == res[8]); |
| 68 | + CHECK(34 == res[9]); |
| 69 | + CHECK(res.size() == 10); |
72 | 70 | } |
73 | 71 |
|
74 | | -TEST(aggregate, vec_to_vec) { |
| 72 | +TEST_CASE("Aggregate: std::vector to generator to std::vector") { |
75 | 73 | std::vector<size_t> in = {0, 1, 2, 3, 4, 5, 6}; |
76 | 74 | std::vector<size_t> out = {}; |
77 | 75 | auto gen = fpgen::from(in); |
78 | 76 | out = fpgen::aggregate_to(gen, out); |
79 | | - EXPECT_EQ(in, out); |
| 77 | + CHECK(in == out); |
80 | 78 | } |
81 | 79 |
|
82 | | -TEST(aggregate, map) { |
| 80 | +TEST_CASE("Aggregate to std::map") { |
83 | 81 | fpgen::generator<size_t> sources[2] = {values(), values()}; |
84 | 82 | auto gen = fpgen::zip(sources[0], sources[1]); |
85 | 83 | std::map<size_t, size_t> res; |
86 | 84 | fpgen::tup_aggregate_to(gen, res); |
87 | 85 |
|
88 | | - EXPECT_EQ(0, res[0]); |
89 | | - EXPECT_EQ(1, res[1]); |
90 | | - EXPECT_EQ(2, res[2]); |
91 | | - EXPECT_EQ(3, res[3]); |
92 | | - EXPECT_EQ(5, res[5]); |
93 | | - EXPECT_EQ(8, res[8]); |
94 | | - EXPECT_EQ(13, res[13]); |
95 | | - EXPECT_EQ(21, res[21]); |
96 | | - EXPECT_EQ(34, res[34]); |
97 | | - EXPECT_EQ(res.size(), 9); |
| 86 | + CHECK(0 == res[0]); |
| 87 | + CHECK(1 == res[1]); |
| 88 | + CHECK(2 == res[2]); |
| 89 | + CHECK(3 == res[3]); |
| 90 | + CHECK(5 == res[5]); |
| 91 | + CHECK(8 == res[8]); |
| 92 | + CHECK(13 == res[13]); |
| 93 | + CHECK(21 == res[21]); |
| 94 | + CHECK(34 == res[34]); |
| 95 | + CHECK(res.size() == 9); |
98 | 96 | } |
99 | 97 |
|
100 | | -TEST(aggregate, count_empty) { |
| 98 | +TEST_CASE("Count empty generator") { |
101 | 99 | auto gen = a_empty(); |
102 | | - // gen(); |
103 | | - EXPECT_EQ(0, fpgen::count(gen)); |
| 100 | + CHECK(0 == fpgen::count(gen)); |
104 | 101 | } |
105 | 102 |
|
106 | | -TEST(aggregate, count) { |
| 103 | +TEST_CASE("Count generator") { |
107 | 104 | auto gen = values(); |
108 | | - EXPECT_EQ(10, fpgen::count(gen)); |
| 105 | + CHECK(10 == fpgen::count(gen)); |
109 | 106 | } |
110 | 107 |
|
111 | | -TEST(fold, fold_noin_empty) { |
| 108 | +TEST_CASE("Fold [using no-input, empty generator]") { |
112 | 109 | auto gen = a_empty(); |
113 | | - // gen(); |
114 | | - EXPECT_EQ(0, fpgen::fold<size_t>(gen, sum)); |
| 110 | + CHECK(0 == fpgen::fold<size_t>(gen, sum)); |
115 | 111 | } |
116 | 112 |
|
117 | | -TEST(fold, fold_noin) { |
| 113 | +TEST_CASE("Fold [using no-input, non-empty generator]") { |
118 | 114 | auto gen = values(); |
119 | | - EXPECT_EQ(calc_sum(), fpgen::fold<size_t>(gen, sum)); |
| 115 | + CHECK(calc_sum() == fpgen::fold<size_t>(gen, sum)); |
120 | 116 | } |
121 | 117 |
|
122 | | -TEST(fold, fold_in_noref_empty) { |
| 118 | +TEST_CASE("Fold [using input, empty generator]") { |
123 | 119 | auto gen = a_empty(); |
124 | | - // gen(); |
125 | | - EXPECT_EQ(7, fpgen::fold<size_t>(gen, sum, 7)); |
| 120 | + CHECK(7 == fpgen::fold<size_t>(gen, sum, 7)); |
126 | 121 | } |
127 | 122 |
|
128 | | -TEST(fold, fold_in_noref) { |
| 123 | +TEST_CASE("Fold [using input, non-empty generator]") { |
129 | 124 | auto gen = values(); |
130 | | - EXPECT_EQ(calc_sum() + 7, fpgen::fold<size_t>(gen, sum, 7)); |
| 125 | + CHECK(calc_sum() + 7 == fpgen::fold<size_t>(gen, sum, 7)); |
131 | 126 | } |
132 | 127 |
|
133 | | -TEST(fold, fold_in_ref_empty) { |
| 128 | +TEST_CASE("Fold [using ref input, empty generator]") { |
134 | 129 | auto gen = a_empty(); |
135 | | - // gen(); |
136 | 130 | size_t res = 7; |
137 | | - EXPECT_EQ(7, fpgen::fold_ref<size_t>(gen, sum, res)); |
138 | | - EXPECT_EQ(7, res); |
| 131 | + CHECK(7 == fpgen::fold_ref<size_t>(gen, sum, res)); |
| 132 | + CHECK(7 == res); |
139 | 133 | } |
140 | 134 |
|
141 | | -TEST(fold, fold_in_ref) { |
| 135 | +TEST_CASE("Fold [using ref input, non-epty generator]") { |
142 | 136 | auto gen = values(); |
143 | 137 | size_t res = 7; |
144 | | - EXPECT_EQ(calc_sum() + 7, fpgen::fold_ref<size_t>(gen, sum, res)); |
145 | | - EXPECT_EQ(calc_sum() + 7, res); |
| 138 | + CHECK(calc_sum() + 7 == fpgen::fold_ref<size_t>(gen, sum, res)); |
| 139 | + CHECK(calc_sum() + 7 == res); |
146 | 140 | } |
147 | 141 |
|
148 | | -TEST(sum, empty) { |
| 142 | +TEST_CASE("Sum empty generator") { |
149 | 143 | auto gen = a_empty(); |
150 | | - // gen(); |
151 | | - EXPECT_EQ(0, fpgen::sum(gen)); |
| 144 | + CHECK(0 == fpgen::sum(gen)); |
152 | 145 | } |
153 | 146 |
|
154 | | -TEST(sum, normal) { |
| 147 | +TEST_CASE("Sum over generator") { |
155 | 148 | auto gen = values(); |
156 | | - EXPECT_EQ(calc_sum(), fpgen::sum(gen)); |
| 149 | + CHECK(calc_sum() == fpgen::sum(gen)); |
157 | 150 | } |
158 | 151 |
|
159 | | -TEST(foreach, empty) { |
| 152 | +TEST_CASE("Foreach over empty generator") { |
160 | 153 | auto gen = a_empty(); |
161 | 154 | // gen(); |
162 | 155 | size_t res = 0; |
163 | 156 | fpgen::foreach (gen, [&res](size_t val) { res += val; }); |
164 | | - EXPECT_EQ(res, 0); |
| 157 | + CHECK(res == 0); |
165 | 158 | } |
166 | 159 |
|
167 | | -TEST(foreach, normal) { |
| 160 | +TEST_CASE("Foreach over non-empty generator") { |
168 | 161 | auto gen = values(); |
169 | 162 | auto gen2 = values(); |
170 | 163 | size_t res = 0; |
171 | 164 | fpgen::foreach (gen, [&res](size_t val) { res += val; }); |
172 | | - EXPECT_EQ(res, fpgen::sum(gen2)); |
| 165 | + CHECK(res == fpgen::sum(gen2)); |
173 | 166 | } |
174 | 167 |
|
175 | | -TEST(stream, nosep) { |
| 168 | +TEST_CASE("Output to stream, no separator") { |
176 | 169 | std::vector<int> vals = {1, 2, 3, 4, 5, 6}; |
177 | 170 | auto gen = fpgen::from(vals); |
178 | 171 | std::stringstream strm; |
179 | 172 | fpgen::to_stream(gen, strm); |
180 | | - EXPECT_EQ(strm.str(), "123456"); |
| 173 | + CHECK(strm.str() == "123456"); |
181 | 174 | } |
182 | 175 |
|
183 | | -TEST(stream, sep) { |
| 176 | +TEST_CASE("Output to stream, with separator") { |
184 | 177 | std::vector<int> vals = {1, 2, 3, 4, 5, 6, 7}; |
185 | 178 | auto gen = fpgen::from(vals); |
186 | 179 | std::stringstream strm; |
187 | 180 | fpgen::to_stream(gen, strm, " "); |
188 | | - EXPECT_EQ(strm.str(), "1 2 3 4 5 6 7"); |
| 181 | + CHECK(strm.str() == "1 2 3 4 5 6 7"); |
189 | 182 | } |
190 | 183 |
|
191 | | -TEST(stream, lines_trail) { |
| 184 | +TEST_CASE("Output to stream (by lines), with trailing line") { |
192 | 185 | std::vector<int> vals = {1, 2, 3, 4}; |
193 | 186 | auto gen = fpgen::from(vals); |
194 | 187 | std::stringstream strm; |
195 | 188 | std::stringstream expect; |
196 | 189 | for (auto v : vals) |
197 | 190 | expect << v << std::endl; |
198 | 191 | fpgen::to_lines(gen, strm); |
199 | | - EXPECT_EQ(strm.str(), expect.str()); |
| 192 | + CHECK(strm.str() == expect.str()); |
200 | 193 | } |
201 | 194 |
|
202 | | -TEST(stream, lines_no_trail) { |
| 195 | +TEST_CASE("Output to stream (by lines), without trailing line") { |
203 | 196 | std::vector<int> vals = {1, 2, 3, 4}; |
204 | 197 | auto gen = fpgen::from(vals); |
205 | 198 | std::stringstream strm; |
206 | 199 | std::stringstream expect; |
207 | 200 | expect << 1 << std::endl << 2 << std::endl << 3 << std::endl << 4; |
208 | 201 | fpgen::to_lines_no_trail(gen, strm); |
209 | | - EXPECT_EQ(strm.str(), expect.str()); |
| 202 | + CHECK(strm.str() == expect.str()); |
210 | 203 | } |
0 commit comments