14 #define BOOST_TEST_MODULE ( CollectionView_test )
15 #include <boost/test/unit_test.hpp>
20 #include <forward_list>
31 std::vector<int> c{ 3, 4, 5 };
32 auto const cbegin = c.cbegin();
33 auto const cend = c.cend();
37 BOOST_TEST(cv.empty() == c.empty());
38 BOOST_TEST(cv.size() == c.size());
43 BOOST_TEST((cv.cbegin() == c.cbegin()));
44 BOOST_TEST((cv.cend() == c.cend()));
45 BOOST_TEST((cv.crbegin() == c.crbegin()));
46 BOOST_TEST((cv.crend() == c.crend()));
51 BOOST_TEST(&(cv.front()) == &(c.front()));
52 BOOST_TEST(cv.front() == c.front());
53 BOOST_TEST(&(cv.back()) == &(c.back()));
54 BOOST_TEST(cv.back() == c.back());
59 BOOST_TEST(cv.data() == c.data());
66 for (
auto const& d: cv) {
68 BOOST_TEST(cv[i] == d);
69 BOOST_TEST(&(cv[i]) == &(c[i]));
70 BOOST_TEST(cv.at(i) == d);
71 BOOST_TEST(&(cv.at(i)) == &(c.at(i)));
76 BOOST_TEST((ic ==
cend));
86 std::deque<int> c{ 3, 4, 5 };
87 auto const cbegin = c.cbegin();
88 auto const cend = c.cend();
92 BOOST_TEST(cv.empty() == c.empty());
93 BOOST_TEST(cv.size() == c.size());
98 BOOST_TEST((cv.cbegin() == c.cbegin()));
99 BOOST_TEST((cv.cend() == c.cend()));
100 BOOST_TEST((cv.crbegin() == c.crbegin()));
101 BOOST_TEST((cv.crend() == c.crend()));
106 BOOST_TEST(&(cv.front()) == &(c.front()));
107 BOOST_TEST(cv.front() == c.front());
108 BOOST_TEST(&(cv.back()) == &(c.back()));
109 BOOST_TEST(cv.back() == c.back());
116 for (
auto const& d: cv) {
117 BOOST_TEST(d == *ic);
118 BOOST_TEST(cv[i] == d);
119 BOOST_TEST(&(cv[i]) == &(c[i]));
120 BOOST_TEST(cv.at(i) == d);
121 BOOST_TEST(&(cv.at(i)) == &(c.at(i)));
126 BOOST_TEST((ic ==
cend));
136 std::list<int> c{ 3, 4, 5 };
137 auto const cbegin = c.cbegin();
138 auto const cend = c.cend();
142 BOOST_TEST(cv.empty() == c.empty());
143 BOOST_TEST(cv.size() == c.size());
148 BOOST_TEST((cv.cbegin() == c.cbegin()));
149 BOOST_TEST((cv.cend() == c.cend()));
150 BOOST_TEST((cv.crbegin() == c.crbegin()));
151 BOOST_TEST((cv.crend() == c.crend()));
156 BOOST_TEST(&(cv.front()) == &(c.front()));
157 BOOST_TEST(cv.front() == c.front());
158 BOOST_TEST(&(cv.back()) == &(c.back()));
159 BOOST_TEST(cv.back() == c.back());
165 for (
auto const& d: cv) {
166 BOOST_TEST(d == *ic);
170 BOOST_TEST((ic ==
cend));
180 std::forward_list<int> c{ 3, 4, 5 };
181 auto const cbegin = c.cbegin();
182 auto const cend = c.cend();
186 BOOST_TEST(cv.empty() == c.empty());
191 BOOST_TEST((cv.cbegin() == c.cbegin()));
192 BOOST_TEST((cv.cend() == c.cend()));
197 BOOST_TEST(&(cv.front()) == &(c.front()));
198 BOOST_TEST(cv.front() == c.front());
204 for (
auto const& d: cv) {
205 BOOST_TEST(d == *ic);
209 BOOST_TEST((ic ==
cend));
217 std::ostringstream out;
234 std::vector<int> range(5);
235 std::iota(range.begin(), range.end(), 1);
242 BOOST_TEST(out.str() ==
"1 2 3 4 5 ");
257 BOOST_TEST(out.str() ==
"1 2 3 4 5 ");
273 BOOST_TEST(out.str() ==
"1 2 3 4 5 ");
289 std::vector<int> v(10);
290 std::iota(v.begin(), v.end(), 0);
297 BOOST_TEST(out.str() ==
"4 5 6 ");
323 std::vector<int> v_data(10);
324 std::iota(v_data.begin(), v_data.end(), 0);
327 using vector_t = std::vector<int>;
332 IntVector(vector_t&& data): data(std::move(data)) {}
334 auto begin()
const -> decltype(
auto) {
return data.cbegin(); }
335 auto end()
const -> decltype(
auto) {
return data.cend(); }
341 struct MyCollection:
public IntViewBase_t {
342 MyCollection(std::vector<int>&& data) : IntViewBase_t(std::move(data)) {}
345 MyCollection v(std::move(v_data));
352 BOOST_TEST(out.str() ==
"0 1 2 3 4 5 6 7 8 9 ");
Provides features of a collections, from begin and end iterators.
auto cbegin(FixedBins< T, C > const &) noexcept
std::vector< int > IntVector
auto cend(FixedBins< T, C > const &) noexcept
auto end(FixedBins< T, C > const &) noexcept
Provides the features of a collections, from begin and end iterators.
auto makeCollectionView(BeginIter const &b, EndIter const &e)
Creates a CollectionView from the specified iterators.
auto begin(FixedBins< T, C > const &) noexcept
CollectionView< Range > const & wrapCollectionIntoView(Range const &c)
Returns the specified container, wrapped in the view.
BEGIN_PROLOG could also be cout