//
// buffers_iterator.cpp
// ~~~~~~~~~~~~~~~~~~~~
//
// Copyright (c) 2003-2010 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 <boost/asio/buffers_iterator.hpp>

#include <boost/array.hpp>
#include <boost/asio/buffer.hpp>
#include "unit_test.hpp"

//------------------------------------------------------------------------------

// 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 {

using boost::array;
using std::vector;
using namespace boost::asio;

void test()
{
  try
  {
    char data1[16], data2[16];
    const char cdata1[16] = "", cdata2[16] = "";
    mutable_buffers_1 mb1 = buffer(data1);
    array<mutable_buffer, 2> mb2 = {{ buffer(data1), buffer(data2) }};
    std::vector<mutable_buffer> mb3;
    mb3.push_back(buffer(data1));
    const_buffers_1 cb1 = buffer(cdata1);
    array<const_buffer, 2> cb2 = {{ buffer(cdata1), buffer(cdata2) }};
    vector<const_buffer> cb3;
    cb3.push_back(buffer(cdata1));


    // buffers_iterator constructors.

    buffers_iterator<mutable_buffers_1, char> bi1;
    buffers_iterator<mutable_buffers_1, const char> bi2;
    buffers_iterator<array<mutable_buffer, 2>, char> bi3;
    buffers_iterator<array<mutable_buffer, 2>, const char> bi4;
    buffers_iterator<vector<mutable_buffer>, char> bi5;
    buffers_iterator<vector<mutable_buffer>, const char> bi6;
    buffers_iterator<const_buffers_1, char> bi7;
    buffers_iterator<const_buffers_1, const char> bi8;
    buffers_iterator<array<const_buffer, 2>, char> bi9;
    buffers_iterator<array<const_buffer, 2>, const char> bi10;
    buffers_iterator<vector<const_buffer>, char> bi11;
    buffers_iterator<vector<const_buffer>, const char> bi12;

    buffers_iterator<mutable_buffers_1, char> bi13(
        buffers_iterator<mutable_buffers_1, char>::begin(mb1));
    buffers_iterator<mutable_buffers_1, const char> bi14(
        buffers_iterator<mutable_buffers_1, const char>::begin(mb1));
    buffers_iterator<array<mutable_buffer, 2>, char> bi15(
        buffers_iterator<array<mutable_buffer, 2>, char>::begin(mb2));
    buffers_iterator<array<mutable_buffer, 2>, const char> bi16(
        buffers_iterator<array<mutable_buffer, 2>, const char>::begin(mb2));
    buffers_iterator<vector<mutable_buffer>, char> bi17(
        buffers_iterator<vector<mutable_buffer>, char>::begin(mb3));
    buffers_iterator<vector<mutable_buffer>, const char> bi18(
        buffers_iterator<vector<mutable_buffer>, const char>::begin(mb3));
    buffers_iterator<const_buffers_1, char> bi19(
        buffers_iterator<const_buffers_1, char>::begin(cb1));
    buffers_iterator<const_buffers_1, const char> bi20(
        buffers_iterator<const_buffers_1, const char>::begin(cb1));
    buffers_iterator<array<const_buffer, 2>, char> bi21(
        buffers_iterator<array<const_buffer, 2>, char>::begin(cb2));
    buffers_iterator<array<const_buffer, 2>, const char> bi22(
        buffers_iterator<array<const_buffer, 2>, const char>::begin(cb2));
    buffers_iterator<vector<const_buffer>, char> bi23(
        buffers_iterator<vector<const_buffer>, char>::begin(cb3));
    buffers_iterator<vector<const_buffer>, const char> bi24(
        buffers_iterator<vector<const_buffer>, const char>::begin(cb3));

    // buffers_iterator member functions.

    bi1 = buffers_iterator<mutable_buffers_1, char>::begin(mb1);
    bi2 = buffers_iterator<mutable_buffers_1, const char>::begin(mb1);
    bi3 = buffers_iterator<array<mutable_buffer, 2>, char>::begin(mb2);
    bi4 = buffers_iterator<array<mutable_buffer, 2>, const char>::begin(mb2);
    bi5 = buffers_iterator<vector<mutable_buffer>, char>::begin(mb3);
    bi6 = buffers_iterator<vector<mutable_buffer>, const char>::begin(mb3);
    bi7 = buffers_iterator<const_buffers_1, char>::begin(cb1);
    bi8 = buffers_iterator<const_buffers_1, const char>::begin(cb1);
    bi9 = buffers_iterator<array<const_buffer, 2>, char>::begin(cb2);
    bi10 = buffers_iterator<array<const_buffer, 2>, const char>::begin(cb2);
    bi11 = buffers_iterator<vector<const_buffer>, char>::begin(cb3);
    bi12 = buffers_iterator<vector<const_buffer>, const char>::begin(cb3);

    bi1 = buffers_iterator<mutable_buffers_1, char>::end(mb1);
    bi2 = buffers_iterator<mutable_buffers_1, const char>::end(mb1);
    bi3 = buffers_iterator<array<mutable_buffer, 2>, char>::end(mb2);
    bi4 = buffers_iterator<array<mutable_buffer, 2>, const char>::end(mb2);
    bi5 = buffers_iterator<vector<mutable_buffer>, char>::end(mb3);
    bi6 = buffers_iterator<vector<mutable_buffer>, const char>::end(mb3);
    bi7 = buffers_iterator<const_buffers_1, char>::end(cb1);
    bi8 = buffers_iterator<const_buffers_1, const char>::end(cb1);
    bi9 = buffers_iterator<array<const_buffer, 2>, char>::end(cb2);
    bi10 = buffers_iterator<array<const_buffer, 2>, const char>::end(cb2);
    bi11 = buffers_iterator<vector<const_buffer>, char>::end(cb3);
    bi12 = buffers_iterator<vector<const_buffer>, 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<std::ptrdiff_t>(bi13 - bi1);
    (void)static_cast<std::ptrdiff_t>(bi14 - bi2);
    (void)static_cast<std::ptrdiff_t>(bi15 - bi3);
    (void)static_cast<std::ptrdiff_t>(bi16 - bi4);
    (void)static_cast<std::ptrdiff_t>(bi17 - bi5);
    (void)static_cast<std::ptrdiff_t>(bi18 - bi6);
    (void)static_cast<std::ptrdiff_t>(bi19 - bi7);
    (void)static_cast<std::ptrdiff_t>(bi20 - bi8);
    (void)static_cast<std::ptrdiff_t>(bi21 - bi9);
    (void)static_cast<std::ptrdiff_t>(bi22 - bi10);
    (void)static_cast<std::ptrdiff_t>(bi23 - bi11);
    (void)static_cast<std::ptrdiff_t>(bi24 - bi12);
  }
  catch (std::exception&)
  {
  }
}

} // namespace buffers_iterator_compile

//------------------------------------------------------------------------------

test_suite* init_unit_test_suite(int, char*[])
{
  test_suite* test = BOOST_TEST_SUITE("buffers_iterator");
  test->add(BOOST_TEST_CASE(&buffers_iterator_compile::test));
  return test;
}
