// // buffers_iterator.cpp // ~~~~~~~~~~~~~~~~~~~~ // // Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // // Disable autolinking for unit tests. #if !defined(BOOST_ALL_NO_LIB) #define BOOST_ALL_NO_LIB 1 #endif // !defined(BOOST_ALL_NO_LIB) // Test that header file is self-contained. #include #include #include "unit_test.hpp" #if defined(BOOST_ASIO_HAS_BOOST_ARRAY) # include #endif // defined(BOOST_ASIO_HAS_BOOST_ARRAY) #if defined(BOOST_ASIO_HAS_STD_ARRAY) # include #endif // defined(BOOST_ASIO_HAS_STD_ARRAY) //------------------------------------------------------------------------------ // buffers_iterator_compile test // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // The following test checks that all operations on the buffers_iterator compile // and link correctly. Runtime failures are ignored. namespace buffers_iterator_compile { #if defined(BOOST_ASIO_HAS_BOOST_ARRAY) using boost::array; #elif defined(BOOST_ASIO_HAS_STD_ARRAY) using std::array; #endif // defined(BOOST_ASIO_HAS_BOOST_ARRAY) using std::vector; using namespace boost::asio; void test() { try { char data1[16], data2[16]; const char cdata1[16] = "", cdata2[16] = ""; mutable_buffer mb1 = buffer(data1); array mb2 = {{ buffer(data1), buffer(data2) }}; std::vector mb3; mb3.push_back(buffer(data1)); const_buffer cb1 = buffer(cdata1); array cb2 = {{ buffer(cdata1), buffer(cdata2) }}; vector cb3; cb3.push_back(buffer(cdata1)); // buffers_iterator constructors. buffers_iterator bi1; buffers_iterator bi2; buffers_iterator, char> bi3; buffers_iterator, const char> bi4; buffers_iterator, char> bi5; buffers_iterator, const char> bi6; buffers_iterator bi7; buffers_iterator bi8; buffers_iterator, char> bi9; buffers_iterator, const char> bi10; buffers_iterator, char> bi11; buffers_iterator, const char> bi12; buffers_iterator bi13( buffers_iterator::begin(mb1)); buffers_iterator bi14( buffers_iterator::begin(mb1)); buffers_iterator, char> bi15( buffers_iterator, char>::begin(mb2)); buffers_iterator, const char> bi16( buffers_iterator, const char>::begin(mb2)); buffers_iterator, char> bi17( buffers_iterator, char>::begin(mb3)); buffers_iterator, const char> bi18( buffers_iterator, const char>::begin(mb3)); buffers_iterator bi19( buffers_iterator::begin(cb1)); buffers_iterator bi20( buffers_iterator::begin(cb1)); buffers_iterator, char> bi21( buffers_iterator, char>::begin(cb2)); buffers_iterator, const char> bi22( buffers_iterator, const char>::begin(cb2)); buffers_iterator, char> bi23( buffers_iterator, char>::begin(cb3)); buffers_iterator, const char> bi24( buffers_iterator, const char>::begin(cb3)); // buffers_iterator member functions. bi1 = buffers_iterator::begin(mb1); bi2 = buffers_iterator::begin(mb1); bi3 = buffers_iterator, char>::begin(mb2); bi4 = buffers_iterator, const char>::begin(mb2); bi5 = buffers_iterator, char>::begin(mb3); bi6 = buffers_iterator, const char>::begin(mb3); bi7 = buffers_iterator::begin(cb1); bi8 = buffers_iterator::begin(cb1); bi9 = buffers_iterator, char>::begin(cb2); bi10 = buffers_iterator, const char>::begin(cb2); bi11 = buffers_iterator, char>::begin(cb3); bi12 = buffers_iterator, const char>::begin(cb3); bi1 = buffers_iterator::end(mb1); bi2 = buffers_iterator::end(mb1); bi3 = buffers_iterator, char>::end(mb2); bi4 = buffers_iterator, const char>::end(mb2); bi5 = buffers_iterator, char>::end(mb3); bi6 = buffers_iterator, const char>::end(mb3); bi7 = buffers_iterator::end(cb1); bi8 = buffers_iterator::end(cb1); bi9 = buffers_iterator, char>::end(cb2); bi10 = buffers_iterator, const char>::end(cb2); bi11 = buffers_iterator, char>::end(cb3); bi12 = buffers_iterator, const char>::end(cb3); // buffers_iterator related functions. bi1 = buffers_begin(mb1); bi3 = buffers_begin(mb2); bi5 = buffers_begin(mb3); bi7 = buffers_begin(cb1); bi9 = buffers_begin(cb2); bi11 = buffers_begin(cb3); bi1 = buffers_end(mb1); bi3 = buffers_end(mb2); bi5 = buffers_end(mb3); bi7 = buffers_end(cb1); bi9 = buffers_end(cb2); bi11 = buffers_end(cb3); // RandomAccessIterator operations. --bi1; --bi2; --bi3; --bi4; --bi5; --bi6; --bi7; --bi8; --bi9; --bi10; --bi11; --bi12; ++bi1; ++bi2; ++bi3; ++bi4; ++bi5; ++bi6; ++bi7; ++bi8; ++bi9; ++bi10; ++bi11; ++bi12; bi1--; bi2--; bi3--; bi4--; bi5--; bi6--; bi7--; bi8--; bi9--; bi10--; bi11--; bi12--; bi1++; bi2++; bi3++; bi4++; bi5++; bi6++; bi7++; bi8++; bi9++; bi10++; bi11++; bi12++; bi1 -= 1; bi2 -= 1; bi3 -= 1; bi4 -= 1; bi5 -= 1; bi6 -= 1; bi7 -= 1; bi8 -= 1; bi9 -= 1; bi10 -= 1; bi11 -= 1; bi12 -= 1; bi1 += 1; bi2 += 1; bi3 += 1; bi4 += 1; bi5 += 1; bi6 += 1; bi7 += 1; bi8 += 1; bi9 += 1; bi10 += 1; bi11 += 1; bi12 += 1; bi1 = bi1 - 1; bi2 = bi2 - 1; bi3 = bi3 - 1; bi4 = bi4 - 1; bi5 = bi5 - 1; bi6 = bi6 - 1; bi7 = bi7 - 1; bi8 = bi8 - 1; bi9 = bi9 - 1; bi10 = bi10 - 1; bi11 = bi11 - 1; bi12 = bi12 - 1; bi1 = bi1 + 1; bi2 = bi2 + 1; bi3 = bi3 + 1; bi4 = bi4 + 1; bi5 = bi5 + 1; bi6 = bi6 + 1; bi7 = bi7 + 1; bi8 = bi8 + 1; bi9 = bi9 + 1; bi10 = bi10 + 1; bi11 = bi11 + 1; bi12 = bi12 + 1; bi1 = (-1) + bi1; bi2 = (-1) + bi2; bi3 = (-1) + bi3; bi4 = (-1) + bi4; bi5 = (-1) + bi5; bi6 = (-1) + bi6; bi7 = (-1) + bi7; bi8 = (-1) + bi8; bi9 = (-1) + bi9; bi10 = (-1) + bi10; bi11 = (-1) + bi11; bi12 = (-1) + bi12; (void)static_cast(bi13 - bi1); (void)static_cast(bi14 - bi2); (void)static_cast(bi15 - bi3); (void)static_cast(bi16 - bi4); (void)static_cast(bi17 - bi5); (void)static_cast(bi18 - bi6); (void)static_cast(bi19 - bi7); (void)static_cast(bi20 - bi8); (void)static_cast(bi21 - bi9); (void)static_cast(bi22 - bi10); (void)static_cast(bi23 - bi11); (void)static_cast(bi24 - bi12); } catch (std::exception&) { } } } // namespace buffers_iterator_compile //------------------------------------------------------------------------------ BOOST_ASIO_TEST_SUITE ( "buffers_iterator", BOOST_ASIO_TEST_CASE(buffers_iterator_compile::test) )