| 2740 | } |
| 2741 | |
| 2742 | void test_3_arg_dynamic_string_async_read() |
| 2743 | { |
| 2744 | namespace bindns = std; |
| 2745 | using bindns::placeholders::_1; |
| 2746 | using bindns::placeholders::_2; |
| 2747 | |
| 2748 | boost::asio::io_context ioc; |
| 2749 | test_stream s(ioc); |
| 2750 | std::string data; |
| 2751 | boost::asio::dynamic_string_buffer<char, std::string::traits_type, |
| 2752 | std::string::allocator_type> sb |
| 2753 | = boost::asio::dynamic_buffer(data, sizeof(read_data)); |
| 2754 | |
| 2755 | s.reset(read_data, sizeof(read_data)); |
| 2756 | sb.consume(sb.size()); |
| 2757 | bool called = false; |
| 2758 | boost::asio::async_read(s, sb, |
| 2759 | bindns::bind(async_read_handler, |
| 2760 | _1, _2, sizeof(read_data), &called)); |
| 2761 | ioc.restart(); |
| 2762 | ioc.run(); |
| 2763 | BOOST_ASIO_CHECK(called); |
| 2764 | BOOST_ASIO_CHECK(sb.size() == sizeof(read_data)); |
| 2765 | BOOST_ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data))); |
| 2766 | |
| 2767 | s.reset(read_data, sizeof(read_data)); |
| 2768 | s.next_read_length(1); |
| 2769 | sb.consume(sb.size()); |
| 2770 | called = false; |
| 2771 | boost::asio::async_read(s, sb, |
| 2772 | bindns::bind(async_read_handler, |
| 2773 | _1, _2, sizeof(read_data), &called)); |
| 2774 | ioc.restart(); |
| 2775 | ioc.run(); |
| 2776 | BOOST_ASIO_CHECK(called); |
| 2777 | BOOST_ASIO_CHECK(sb.size() == sizeof(read_data)); |
| 2778 | BOOST_ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data))); |
| 2779 | |
| 2780 | s.reset(read_data, sizeof(read_data)); |
| 2781 | s.next_read_length(10); |
| 2782 | sb.consume(sb.size()); |
| 2783 | called = false; |
| 2784 | boost::asio::async_read(s, sb, |
| 2785 | bindns::bind(async_read_handler, |
| 2786 | _1, _2, sizeof(read_data), &called)); |
| 2787 | ioc.restart(); |
| 2788 | ioc.run(); |
| 2789 | BOOST_ASIO_CHECK(called); |
| 2790 | BOOST_ASIO_CHECK(sb.size() == sizeof(read_data)); |
| 2791 | BOOST_ASIO_CHECK(s.check_buffers(sb.data(0, sb.size()), sizeof(read_data))); |
| 2792 | |
| 2793 | s.reset(read_data, sizeof(read_data)); |
| 2794 | sb.consume(sb.size()); |
| 2795 | int i = boost::asio::async_read(s, sb, archetypes::lazy_handler()); |
| 2796 | BOOST_ASIO_CHECK(i == 42); |
| 2797 | ioc.restart(); |
| 2798 | ioc.run(); |
| 2799 | BOOST_ASIO_CHECK(sb.size() == sizeof(read_data)); |
nothing calls this directly
no test coverage detected