⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config_file_iterator_test.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
字号:
//  (C) Copyright Gennadiy Rozental 2001-2008.//  Distributed under the Boost Software License, Version 1.0.//  (See accompanying file LICENSE_1_0.txt or copy at //  http://www.boost.org/LICENSE_1_0.txt)//  See http://www.boost.org/libs/test for the library home page.////  File        : $RCSfile$////  Version     : $Revision: 49313 $////  Description : basic_cstring unit test// *****************************************************************************// Boost.Test#define BOOST_TEST_MAIN#include <boost/test/unit_test.hpp>namespace utf = boost::unit_test;// Boost.Runtime.Parameter#include <boost/test/utils/runtime/file/config_file_iterator.hpp>#include <boost/test/utils/runtime/env/variable.hpp>namespace rt  = boost::runtime;namespace file = boost::runtime::file;namespace env = boost::runtime::environment;//____________________________________________________________________________//BOOST_AUTO_TEST_CASE( test_constructor ){    {    file::config_file_iterator cfi( NULL );    BOOST_CHECK( cfi == file::config_file_iterator() );    }    {    file::config_file_iterator cfi( "" );    BOOST_CHECK( cfi == file::config_file_iterator() );    }    {    rt::cstring cs( "" );    file::config_file_iterator cfi( cs );    BOOST_CHECK( cfi == file::config_file_iterator() );    }    {    std::string ds;    file::config_file_iterator cfi( ds );    BOOST_CHECK( cfi == file::config_file_iterator() );    }    {    BOOST_CHECK_THROW( file::config_file_iterator( "!@#%#$%#$^#$^" ), rt::logic_error );    }    {    file::config_file_iterator cfi( "test_files/test_constructor.cfg" );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "{ abc d }" );    cfi = cfi;    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "{ abc d }" );    file::config_file_iterator cfi1( cfi );    BOOST_CHECK( cfi == file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi1, "{ abc d }" );    ++cfi1;    BOOST_CHECK_EQUAL( *cfi1, "{ d" );    cfi = cfi1;    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "{ d" );    ++cfi;    BOOST_CHECK( *cfi == " dsfg" );    }}//____________________________________________________________________________//BOOST_AUTO_TEST_CASE( test_comments_and_blanks ){    file::config_file_iterator cfi( "test_files/test_comments_and_blanks.cfg" );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "1" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "2" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "4" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "3" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );}//____________________________________________________________________________//BOOST_AUTO_TEST_CASE( test_broken_line ){    BOOST_CHECK_THROW( file::config_file_iterator( "test_files/test_incomplete_broken_line.cfg" ), rt::logic_error );    {    file::config_file_iterator cfi( "test_files/test_broken_line.cfg" );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "qwerty" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "123 \\11" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "   23" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "xcv \\ dfgsd" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "qwe" ); ++cfi;    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "1 \t23" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "34 34" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "a b c d e f" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "as sa" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "aswe" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );    }    {    file::config_file_iterator cfi( "test_files/test_broken_line.cfg", file::trim_leading_spaces );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "qwerty" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "123 \\11" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "23" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "xcv \\ dfgsd" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "qwe" ); ++cfi;    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "1 \t23" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "34 34" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "a b c d e f" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "as sa" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "aswe" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );    }    {    file::config_file_iterator cfi( "test_files/test_broken_line.cfg", (!file::trim_leading_spaces,!file::trim_trailing_spaces));    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "qwerty" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "123 \\11" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "   23" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "xcv \\ dfgsd" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "qwe" ); ++cfi;    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "1  " ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "\t23" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "34 \\  " ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "34" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "a b c d e f " ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "as \\ " ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "sa" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "aswe" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );    }    {    file::config_file_iterator cfi( "test_files/test_broken_line.cfg", !file::skip_empty_lines );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "qwerty" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "123 \\11" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "   23" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "xcv \\ dfgsd" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "qwe" ); ++cfi;    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "1 " ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "\t23" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "34 34" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "a b c d e f" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "as " ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "sa" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "as" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "we" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );    }}//____________________________________________________________________________//BOOST_AUTO_TEST_CASE( test_include ){    {    file::config_file_iterator cfi( "test_files/test_include1.cfg" );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "a" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "c" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "b" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );    }    {    file::config_file_iterator cfi( "test_files/test_include2.cfg" );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "1" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "a" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "c" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "b" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "2" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );    }    {    file::config_file_iterator cfi( "test_files/test_include3.cfg" );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "c" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "c" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );    }}//____________________________________________________________________________//env::variable<> TEST_MACRO( "TEST_MACRO", env::default_value = "test_value" );BOOST_AUTO_TEST_CASE( test_define ){    {        file::config_file_iterator cfi( "test_files/test_define.cfg" );        BOOST_CHECK( cfi != file::config_file_iterator() );        BOOST_CHECK_EQUAL( *cfi, "a123123" ); ++cfi;        BOOST_CHECK_EQUAL( *cfi, "11232" ); ++cfi;        BOOST_CHECK_EQUAL( *cfi, "a test_value=11" ); ++cfi;        BOOST_CHECK_EQUAL( *cfi, "1abc2" ); ++cfi;        BOOST_CHECK( cfi == file::config_file_iterator() );    }}//____________________________________________________________________________//BOOST_AUTO_TEST_CASE( test_macro_subst ){    BOOST_CHECK_THROW( file::config_file_iterator( "test_files/test_macro_subst1.cfg" ), rt::logic_error );    BOOST_CHECK_THROW( file::config_file_iterator( "test_files/test_macro_subst3.cfg" ), rt::logic_error );    {    file::config_file_iterator cfi( "test_files/test_macro_subst1.cfg", !file::detect_missing_macro );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "a" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );    }    {    file::config_file_iterator cfi( "test_files/test_macro_subst2.cfg" );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "atest_value" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );    }    {    file::config_file_iterator cfi( "test_files/test_macro_subst4.cfg" );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "abb" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );    }}//____________________________________________________________________________//BOOST_AUTO_TEST_CASE( test_undef ){    {    file::config_file_iterator cfi( "test_files/test_undef.cfg", !file::detect_missing_macro );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "1123" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "1" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );    }}//____________________________________________________________________________//BOOST_AUTO_TEST_CASE( test_ifdef ){    {    file::config_file_iterator cfi( "test_files/test_ifdef.cfg" );    BOOST_CHECK( cfi != file::config_file_iterator() );    BOOST_CHECK_EQUAL( *cfi, "1" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "2" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "1" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "1abc" ); ++cfi;    BOOST_CHECK_EQUAL( *cfi, "a" ); ++cfi;    BOOST_CHECK( cfi == file::config_file_iterator() );    }    BOOST_CHECK_THROW( file::config_file_iterator( "test_files/test_ifdef1.cfg" ), rt::logic_error );    BOOST_CHECK_THROW( file::config_file_iterator( "test_files/test_ifdef2.cfg" ), rt::logic_error );    BOOST_CHECK_THROW( file::config_file_iterator( "test_files/test_ifdef3.cfg" ), rt::logic_error );    BOOST_CHECK_THROW( file::config_file_iterator( "test_files/test_ifdef4.cfg" ), rt::logic_error );}//____________________________________________________________________________//// EOF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -