read_until.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 849 行 · 第 1/2 页
CPP
849 行
boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 26); s.reset(read_data, sizeof(read_data)); s.next_read_length(1); ec = boost::system::error_code(); length = 0; called = false; sb1.consume(sb1.size()); boost::asio::async_read_until(s, sb1, 'Z', boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 26); s.reset(read_data, sizeof(read_data)); s.next_read_length(10); ec = boost::system::error_code(); length = 0; called = false; sb1.consume(sb1.size()); boost::asio::async_read_until(s, sb1, 'Z', boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 26); s.reset(read_data, sizeof(read_data)); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, 'Z', boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(ec == boost::asio::error::not_found); BOOST_CHECK(length == 0); s.reset(read_data, sizeof(read_data)); s.next_read_length(1); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, 'Z', boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(ec == boost::asio::error::not_found); BOOST_CHECK(length == 0); s.reset(read_data, sizeof(read_data)); s.next_read_length(10); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, 'Z', boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(ec == boost::asio::error::not_found); BOOST_CHECK(length == 0); s.reset(read_data, sizeof(read_data)); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, 'Y', boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 25); s.reset(read_data, sizeof(read_data)); s.next_read_length(1); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, 'Y', boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 25); s.reset(read_data, sizeof(read_data)); s.next_read_length(10); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, 'Y', boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 25);}void test_string_async_read_until(){ boost::asio::io_service ios; test_stream s(ios); boost::asio::streambuf sb1; boost::asio::streambuf sb2(25); boost::system::error_code ec; std::size_t length; bool called; s.reset(read_data, sizeof(read_data)); ec = boost::system::error_code(); length = 0; called = false; sb1.consume(sb1.size()); boost::asio::async_read_until(s, sb1, "XYZ", boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 26); s.reset(read_data, sizeof(read_data)); s.next_read_length(1); ec = boost::system::error_code(); length = 0; called = false; sb1.consume(sb1.size()); boost::asio::async_read_until(s, sb1, "XYZ", boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 26); s.reset(read_data, sizeof(read_data)); s.next_read_length(10); ec = boost::system::error_code(); length = 0; called = false; sb1.consume(sb1.size()); boost::asio::async_read_until(s, sb1, "XYZ", boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 26); s.reset(read_data, sizeof(read_data)); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, "XYZ", boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(ec == boost::asio::error::not_found); BOOST_CHECK(length == 0); s.reset(read_data, sizeof(read_data)); s.next_read_length(1); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, "XYZ", boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(ec == boost::asio::error::not_found); BOOST_CHECK(length == 0); s.reset(read_data, sizeof(read_data)); s.next_read_length(10); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, "XYZ", boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(ec == boost::asio::error::not_found); BOOST_CHECK(length == 0); s.reset(read_data, sizeof(read_data)); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, "WXY", boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 25); s.reset(read_data, sizeof(read_data)); s.next_read_length(1); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, "WXY", boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 25); s.reset(read_data, sizeof(read_data)); s.next_read_length(10); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, "WXY", boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 25);}void test_match_condition_async_read_until(){ boost::asio::io_service ios; test_stream s(ios); boost::asio::streambuf sb1; boost::asio::streambuf sb2(25); boost::system::error_code ec; std::size_t length; bool called; s.reset(read_data, sizeof(read_data)); ec = boost::system::error_code(); length = 0; called = false; sb1.consume(sb1.size()); boost::asio::async_read_until(s, sb1, match_char('Z'), boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 26); s.reset(read_data, sizeof(read_data)); s.next_read_length(1); ec = boost::system::error_code(); length = 0; called = false; sb1.consume(sb1.size()); boost::asio::async_read_until(s, sb1, match_char('Z'), boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 26); s.reset(read_data, sizeof(read_data)); s.next_read_length(10); ec = boost::system::error_code(); length = 0; called = false; sb1.consume(sb1.size()); boost::asio::async_read_until(s, sb1, match_char('Z'), boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 26); s.reset(read_data, sizeof(read_data)); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, match_char('Z'), boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(ec == boost::asio::error::not_found); BOOST_CHECK(length == 0); s.reset(read_data, sizeof(read_data)); s.next_read_length(1); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, match_char('Z'), boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(ec == boost::asio::error::not_found); BOOST_CHECK(length == 0); s.reset(read_data, sizeof(read_data)); s.next_read_length(10); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, match_char('Z'), boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(ec == boost::asio::error::not_found); BOOST_CHECK(length == 0); s.reset(read_data, sizeof(read_data)); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, match_char('Y'), boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 25); s.reset(read_data, sizeof(read_data)); s.next_read_length(1); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, match_char('Y'), boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 25); s.reset(read_data, sizeof(read_data)); s.next_read_length(10); ec = boost::system::error_code(); length = 0; called = false; sb2.consume(sb2.size()); boost::asio::async_read_until(s, sb2, match_char('Y'), boost::bind(async_read_handler, boost::asio::placeholders::error, &ec, boost::asio::placeholders::bytes_transferred, &length, &called)); ios.reset(); ios.run(); BOOST_CHECK(called); BOOST_CHECK(!ec); BOOST_CHECK(length == 25);}test_suite* init_unit_test_suite(int, char*[]){ test_suite* test = BOOST_TEST_SUITE("read_until"); test->add(BOOST_TEST_CASE(&test_char_read_until)); test->add(BOOST_TEST_CASE(&test_string_read_until)); test->add(BOOST_TEST_CASE(&test_match_condition_read_until)); test->add(BOOST_TEST_CASE(&test_char_async_read_until)); test->add(BOOST_TEST_CASE(&test_string_async_read_until)); test->add(BOOST_TEST_CASE(&test_match_condition_async_read_until)); return test;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?