streambuf.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // streambuf.cpp
  3. // ~~~~~~~~~~~~~
  4. //
  5. // Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff dot com)
  6. //
  7. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  8. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  9. //
  10. // Disable autolinking for unit tests.
  11. #if !defined(BOOST_ALL_NO_LIB)
  12. #define BOOST_ALL_NO_LIB 1
  13. #endif // !defined(BOOST_ALL_NO_LIB)
  14. // Test that header file is self-contained.
  15. #include <boost/asio/streambuf.hpp>
  16. #include <boost/asio/buffer.hpp>
  17. #include "unit_test.hpp"
  18. void streambuf_test()
  19. {
  20. boost::asio::streambuf sb;
  21. sb.sputn("abcd", 4);
  22. BOOST_ASIO_CHECK(sb.size() == 4);
  23. for (int i = 0; i < 100; ++i)
  24. {
  25. sb.consume(3);
  26. BOOST_ASIO_CHECK(sb.size() == 1);
  27. char buf[1];
  28. sb.sgetn(buf, 1);
  29. BOOST_ASIO_CHECK(sb.size() == 0);
  30. sb.sputn("ab", 2);
  31. BOOST_ASIO_CHECK(sb.size() == 2);
  32. boost::asio::buffer_copy(sb.prepare(10), boost::asio::buffer("cd", 2));
  33. sb.commit(2);
  34. BOOST_ASIO_CHECK(sb.size() == 4);
  35. }
  36. BOOST_ASIO_CHECK(sb.size() == 4);
  37. sb.consume(4);
  38. BOOST_ASIO_CHECK(sb.size() == 0);
  39. }
  40. BOOST_ASIO_TEST_SUITE
  41. (
  42. "streambuf",
  43. BOOST_ASIO_TEST_CASE(streambuf_test)
  44. )