| 2814 | } |
| 2815 | |
| 2816 | void test_3_arg_streambuf_async_read() |
| 2817 | { |
| 2818 | #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1) |
| 2819 | namespace bindns = std; |
| 2820 | using bindns::placeholders::_1; |
| 2821 | using bindns::placeholders::_2; |
| 2822 | |
| 2823 | boost::asio::io_context ioc; |
| 2824 | test_stream s(ioc); |
| 2825 | boost::asio::streambuf sb(sizeof(read_data)); |
| 2826 | |
| 2827 | s.reset(read_data, sizeof(read_data)); |
| 2828 | sb.consume(sb.size()); |
| 2829 | bool called = false; |
| 2830 | boost::asio::async_read(s, sb, |
| 2831 | bindns::bind(async_read_handler, |
| 2832 | _1, _2, sizeof(read_data), &called)); |
| 2833 | ioc.restart(); |
| 2834 | ioc.run(); |
| 2835 | BOOST_ASIO_CHECK(called); |
| 2836 | BOOST_ASIO_CHECK(sb.size() == sizeof(read_data)); |
| 2837 | BOOST_ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data))); |
| 2838 | |
| 2839 | s.reset(read_data, sizeof(read_data)); |
| 2840 | s.next_read_length(1); |
| 2841 | sb.consume(sb.size()); |
| 2842 | called = false; |
| 2843 | boost::asio::async_read(s, sb, |
| 2844 | bindns::bind(async_read_handler, |
| 2845 | _1, _2, sizeof(read_data), &called)); |
| 2846 | ioc.restart(); |
| 2847 | ioc.run(); |
| 2848 | BOOST_ASIO_CHECK(called); |
| 2849 | BOOST_ASIO_CHECK(sb.size() == sizeof(read_data)); |
| 2850 | BOOST_ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data))); |
| 2851 | |
| 2852 | s.reset(read_data, sizeof(read_data)); |
| 2853 | s.next_read_length(10); |
| 2854 | sb.consume(sb.size()); |
| 2855 | called = false; |
| 2856 | boost::asio::async_read(s, sb, |
| 2857 | bindns::bind(async_read_handler, |
| 2858 | _1, _2, sizeof(read_data), &called)); |
| 2859 | ioc.restart(); |
| 2860 | ioc.run(); |
| 2861 | BOOST_ASIO_CHECK(called); |
| 2862 | BOOST_ASIO_CHECK(sb.size() == sizeof(read_data)); |
| 2863 | BOOST_ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data))); |
| 2864 | |
| 2865 | s.reset(read_data, sizeof(read_data)); |
| 2866 | sb.consume(sb.size()); |
| 2867 | int i = boost::asio::async_read(s, sb, archetypes::lazy_handler()); |
| 2868 | BOOST_ASIO_CHECK(i == 42); |
| 2869 | ioc.restart(); |
| 2870 | ioc.run(); |
| 2871 | BOOST_ASIO_CHECK(sb.size() == sizeof(read_data)); |
| 2872 | BOOST_ASIO_CHECK(s.check_buffers(sb.data(), sizeof(read_data))); |
| 2873 |
nothing calls this directly
no test coverage detected