newline_test.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 459 行 · 第 1/2 页
CPP
459 行
in.push(string_source(::dos)); try { io::copy(in, io::null_sink()); } catch (io::newline_error&) { BOOST_CHECK_MESSAGE( false, "failed checking for dos line endings" ); } checker = BOOST_IOSTREAMS_COMPONENT(in, 0, io::newline_checker); BOOST_CHECK(!checker->is_posix()); BOOST_CHECK(checker->is_dos()); BOOST_CHECK(!checker->is_mac()); BOOST_CHECK(!checker->is_mixed()); BOOST_CHECK(checker->has_final_newline()); in.pop(); // pop checker. // Verify properties of ::mac. in.push(io::newline_checker(io::newline::mac)); in.push(string_source(::mac)); BOOST_CHECK_NO_THROW(io::copy(in, io::null_sink())); checker = BOOST_IOSTREAMS_COMPONENT(in, 0, io::newline_checker); BOOST_CHECK(!checker->is_posix()); BOOST_CHECK(!checker->is_dos()); BOOST_CHECK(checker->is_mac()); BOOST_CHECK(!checker->is_mixed()); BOOST_CHECK(checker->has_final_newline()); in.pop(); // pop checker. // Verify properties of no_final_newline. in.push(io::newline_checker(io::newline::posix)); in.push(string_source(::no_final_newline)); BOOST_CHECK_NO_THROW(io::copy(in, io::null_sink())); checker = BOOST_IOSTREAMS_COMPONENT(in, 0, io::newline_checker); BOOST_CHECK(checker->is_posix()); BOOST_CHECK(!checker->is_dos()); BOOST_CHECK(!checker->is_mac()); BOOST_CHECK(!checker->is_mixed()); BOOST_CHECK(!checker->has_final_newline()); in.pop(); // pop checker. // Verify properties of mixed. in.push(io::newline_checker()); in.push(string_source(::mixed)); BOOST_CHECK_NO_THROW(io::copy(in, io::null_sink())); checker = BOOST_IOSTREAMS_COMPONENT(in, 0, io::newline_checker); BOOST_CHECK(!checker->is_posix()); BOOST_CHECK(!checker->is_dos()); BOOST_CHECK(!checker->is_mac()); BOOST_CHECK(checker->is_mixed_posix()); BOOST_CHECK(checker->is_mixed_dos()); BOOST_CHECK(checker->is_mixed_mac()); BOOST_CHECK(checker->is_mixed()); BOOST_CHECK(checker->has_final_newline()); in.pop(); // pop checker. // Verify exceptions when input does not satisfy target conditions. BOOST_CHECK_THROW( test_input_against_flags(io::newline::dos, ::posix, true), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::mac, ::posix, true), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::posix, ::dos, true), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::mac, ::dos, true), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::posix, ::mac, true), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::dos, ::mac, true), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::final_newline, ::no_final_newline, true), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::posix, ::mixed, true), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::dos, ::mixed, true), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::mac, ::mixed, true), io::newline_error )}void write_newline_checker(){ io::filtering_ostream out; io::newline_checker* checker = 0; // Verify properties of ::posix. out.push(io::newline_checker(io::newline::posix)); out.push(io::null_sink()); BOOST_CHECK_NO_THROW(io::copy(string_source(::posix), out)) checker = BOOST_IOSTREAMS_COMPONENT(out, 0, io::newline_checker); BOOST_CHECK(checker->is_posix()); BOOST_CHECK(!checker->is_dos()); BOOST_CHECK(!checker->is_mac()); BOOST_CHECK(!checker->is_mixed()); BOOST_CHECK(checker->has_final_newline()); out.pop(); // pop checker. // Verify properties of ::dos. out.push(io::newline_checker(io::newline::dos)); out.push(io::null_sink()); BOOST_CHECK_NO_THROW(io::copy(string_source(::dos), out)) checker = BOOST_IOSTREAMS_COMPONENT(out, 0, io::newline_checker); BOOST_CHECK(!checker->is_posix()); BOOST_CHECK(checker->is_dos()); BOOST_CHECK(!checker->is_mac()); BOOST_CHECK(!checker->is_mixed()); BOOST_CHECK(checker->has_final_newline()); out.pop(); // pop checker. // Verify properties of ::mac. out.push(io::newline_checker(io::newline::mac)); out.push(io::null_sink()); BOOST_CHECK_NO_THROW(io::copy(string_source(::mac), out)) checker = BOOST_IOSTREAMS_COMPONENT(out, 0, io::newline_checker); BOOST_CHECK(!checker->is_posix()); BOOST_CHECK(!checker->is_dos()); BOOST_CHECK(checker->is_mac()); BOOST_CHECK(!checker->is_mixed()); BOOST_CHECK(checker->has_final_newline()); out.pop(); // pop checker. // Verify properties of no_final_newline. out.push(io::newline_checker(io::newline::posix)); out.push(io::null_sink()); BOOST_CHECK_NO_THROW(io::copy(string_source(::no_final_newline), out)) checker = BOOST_IOSTREAMS_COMPONENT(out, 0, io::newline_checker); BOOST_CHECK(checker->is_posix()); BOOST_CHECK(!checker->is_dos()); BOOST_CHECK(!checker->is_mac()); BOOST_CHECK(!checker->is_mixed()); BOOST_CHECK(!checker->has_final_newline()); out.pop(); // pop checker. // Verify properties of mixed. out.push(io::newline_checker()); out.push(io::null_sink()); BOOST_CHECK_NO_THROW(io::copy(string_source(::mixed), out)) checker = BOOST_IOSTREAMS_COMPONENT(out, 0, io::newline_checker); BOOST_CHECK(!checker->is_posix()); BOOST_CHECK(!checker->is_dos()); BOOST_CHECK(!checker->is_mac()); BOOST_CHECK(checker->is_mixed_posix()); BOOST_CHECK(checker->is_mixed_dos()); BOOST_CHECK(checker->is_mixed_mac()); BOOST_CHECK(checker->is_mixed()); BOOST_CHECK(checker->has_final_newline()); out.pop(); // pop checker. // Verify exceptions when input does not satisfy target conditions. BOOST_CHECK_THROW( test_input_against_flags(io::newline::dos, ::posix, false), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::mac, ::posix, false), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::posix, ::dos, false), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::mac, ::dos, false), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::posix, ::mac, false), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::dos, ::mac, false), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::final_newline, ::no_final_newline, false), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::posix, ::mixed, false), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::dos, ::mixed, false), io::newline_error ) BOOST_CHECK_THROW( test_input_against_flags(io::newline::mac, ::mixed, false), io::newline_error )}test_suite* init_unit_test_suite(int, char* []){ test_suite* test = BOOST_TEST_SUITE("newline_filter test"); test->add(BOOST_TEST_CASE(&read_newline_filter)); test->add(BOOST_TEST_CASE(&write_newline_filter)); test->add(BOOST_TEST_CASE(&read_newline_checker)); test->add(BOOST_TEST_CASE(&write_newline_checker)); return test;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?