From 2da6088d0c8167fe7e23b5653b685d8471b3a4f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Fri, 31 Dec 2021 01:03:11 +0100 Subject: [PATCH] Improve test directly using transform_iterator and several containers --- test/boost_iterator_comp_test.cpp | 60 ++++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 8 deletions(-) diff --git a/test/boost_iterator_comp_test.cpp b/test/boost_iterator_comp_test.cpp index 105ab60..385d4bb 100644 --- a/test/boost_iterator_comp_test.cpp +++ b/test/boost_iterator_comp_test.cpp @@ -1,12 +1,56 @@ -#include -#include +#include +#include +#include +#include +#include + +using namespace boost::container; + +struct func +{ + typedef int result_type; + int operator()(const int i) const + { return i*2; } +}; int main() { - using String = boost::container::string; - using Iterator = boost::archive::iterators::binary_from_base64; + const std::size_t N = 10u; + func f; + slists(N); + listl(N); + vectorv(N); + + vectorv2; + v2.insert(v2.end(), boost::make_transform_iterator(s.begin(), f), boost::make_transform_iterator(s.end(), f)); + v2.insert(v2.end(), boost::make_transform_iterator(l.begin(), f), boost::make_transform_iterator(l.end(), f)); + v2.insert(v2.end(), boost::make_transform_iterator(v.begin(), f), boost::make_transform_iterator(v.end(), f)); + + v2.assign(boost::make_transform_iterator(s.begin(), f), boost::make_transform_iterator(s.end(), f)); + v2.assign(boost::make_transform_iterator(l.begin(), f), boost::make_transform_iterator(l.end(), f)); + v2.assign(boost::make_transform_iterator(v.begin(), f), boost::make_transform_iterator(v.end(), f)); + + { + //slist + boost::transform_iterator::iterator> + ti(s.begin()), ti2(s.end()), ti3(ti); + boost::intrusive::iterator_uadvance(ti3, v.size()); + BOOST_TEST(ti3 == ti2); + } + { + //list + boost::transform_iterator::iterator> + ti(l.begin()), ti2(l.end()), ti3(ti); + boost::intrusive::iterator_uadvance(ti3, v.size()); + BOOST_TEST(ti3 == ti2); + } + { + //vector + boost::transform_iterator::iterator> + ti(v.begin()), ti2(v.end()), ti3(ti); + boost::intrusive::iterator_uadvance(ti3, v.size()); + BOOST_TEST(ti3 == ti2); + } + return boost::report_errors(); +} - String s; - s.assign(Iterator{s.begin()},Iterator{s.end()}); - return 0; -} \ No newline at end of file