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 + -
显示快捷键?