From 6998ab9eb0f4c062b29d299294b83f2cf0777f7e Mon Sep 17 00:00:00 2001 From: Gennadiy Rozental Date: Tue, 12 Apr 2005 06:19:24 +0000 Subject: [PATCH] runtime.param tests added [SVN r28152] --- test/Jamfile | 16 +- test/config_file_iterator_test.cpp | 309 ++++++++++++++++++ test/config_file_test.cpp | 251 ++++++++++++++ test/foreach_test.cpp | 112 +++++++ test/test_files/cfg_file_tst1.cfg | 5 + test/test_files/cfg_file_tst2.cfg | 1 + test/test_files/cfg_file_tst3.cfg | 1 + test/test_files/cfg_file_tst4.cfg | 1 + test/test_files/cfg_file_tst5.cfg | 1 + test/test_files/cfg_file_tst6.cfg | 1 + test/test_files/cfg_file_tst7.cfg | 1 + test/test_files/par_alias1.cfg | 9 + test/test_files/par_alias2.cfg | 4 + test/test_files/par_alias3.cfg | 4 + test/test_files/test_broken_line.cfg | 33 ++ test/test_files/test_comments_and_blanks.cfg | 29 ++ test/test_files/test_constructor.cfg | 4 + test/test_files/test_define.cfg | 13 + test/test_files/test_ifdef.cfg | 37 +++ test/test_files/test_ifdef1.cfg | 1 + test/test_files/test_ifdef2.cfg | 2 + test/test_files/test_ifdef3.cfg | 3 + test/test_files/test_ifdef4.cfg | 2 + test/test_files/test_include1.cfg | 4 + test/test_files/test_include1_include1.cfg | 1 + test/test_files/test_include2.cfg | 4 + test/test_files/test_include3.cfg | 3 + .../test_incomplete_broken_line.cfg | 1 + test/test_files/test_macro_def1.cfg | 9 + test/test_files/test_macro_subst1.cfg | 1 + test/test_files/test_macro_subst2.cfg | 1 + test/test_files/test_macro_subst3.cfg | 1 + test/test_files/test_macro_subst4.cfg | 2 + test/test_files/test_multipart_value1.cfg | 1 + test/test_files/test_multipart_value10.cfg | 1 + test/test_files/test_multipart_value11.cfg | 1 + test/test_files/test_multipart_value12.cfg | 1 + test/test_files/test_multipart_value13.cfg | 1 + test/test_files/test_multipart_value2.cfg | 1 + test/test_files/test_multipart_value3.cfg | 1 + test/test_files/test_multipart_value4.cfg | 1 + test/test_files/test_multipart_value5.cfg | 1 + test/test_files/test_multipart_value6.cfg | 1 + test/test_files/test_multipart_value7.cfg | 1 + test/test_files/test_multipart_value8.cfg | 1 + test/test_files/test_multipart_value9.cfg | 3 + test/test_files/test_undef.cfg | 9 + 47 files changed, 887 insertions(+), 4 deletions(-) create mode 100755 test/config_file_iterator_test.cpp create mode 100755 test/config_file_test.cpp create mode 100755 test/foreach_test.cpp create mode 100755 test/test_files/cfg_file_tst1.cfg create mode 100755 test/test_files/cfg_file_tst2.cfg create mode 100755 test/test_files/cfg_file_tst3.cfg create mode 100755 test/test_files/cfg_file_tst4.cfg create mode 100755 test/test_files/cfg_file_tst5.cfg create mode 100755 test/test_files/cfg_file_tst6.cfg create mode 100755 test/test_files/cfg_file_tst7.cfg create mode 100755 test/test_files/par_alias1.cfg create mode 100755 test/test_files/par_alias2.cfg create mode 100755 test/test_files/par_alias3.cfg create mode 100755 test/test_files/test_broken_line.cfg create mode 100755 test/test_files/test_comments_and_blanks.cfg create mode 100755 test/test_files/test_constructor.cfg create mode 100755 test/test_files/test_define.cfg create mode 100755 test/test_files/test_ifdef.cfg create mode 100755 test/test_files/test_ifdef1.cfg create mode 100755 test/test_files/test_ifdef2.cfg create mode 100755 test/test_files/test_ifdef3.cfg create mode 100755 test/test_files/test_ifdef4.cfg create mode 100755 test/test_files/test_include1.cfg create mode 100755 test/test_files/test_include1_include1.cfg create mode 100755 test/test_files/test_include2.cfg create mode 100755 test/test_files/test_include3.cfg create mode 100755 test/test_files/test_incomplete_broken_line.cfg create mode 100755 test/test_files/test_macro_def1.cfg create mode 100755 test/test_files/test_macro_subst1.cfg create mode 100755 test/test_files/test_macro_subst2.cfg create mode 100755 test/test_files/test_macro_subst3.cfg create mode 100755 test/test_files/test_macro_subst4.cfg create mode 100755 test/test_files/test_multipart_value1.cfg create mode 100755 test/test_files/test_multipart_value10.cfg create mode 100755 test/test_files/test_multipart_value11.cfg create mode 100755 test/test_files/test_multipart_value12.cfg create mode 100755 test/test_files/test_multipart_value13.cfg create mode 100755 test/test_files/test_multipart_value2.cfg create mode 100755 test/test_files/test_multipart_value3.cfg create mode 100755 test/test_files/test_multipart_value4.cfg create mode 100755 test/test_files/test_multipart_value5.cfg create mode 100755 test/test_files/test_multipart_value6.cfg create mode 100755 test/test_files/test_multipart_value7.cfg create mode 100755 test/test_files/test_multipart_value8.cfg create mode 100755 test/test_files/test_multipart_value9.cfg create mode 100755 test/test_files/test_undef.cfg diff --git a/test/Jamfile b/test/Jamfile index 9d548078..cc32f862 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -49,16 +49,15 @@ test-suite "test_exec_monitor_test" ; test-suite "unit_test_framework_test" - : - - [ test-btl-lib run : errors_handling_test : boost_test_exec_monitor : $(test-dir)/test_files/errors_handling_test.pattern ] + : [ test-btl-lib run : errors_handling_test : boost_test_exec_monitor : $(test-dir)/test_files/errors_handling_test.pattern ] [ test-btl-lib run : online_test ] [ test-btl-lib run-fail : minimal_test ] + [ test-btl-lib run : foreach_test ] [ test-btl-lib run : output_test_stream_test : boost_unit_test_framework ] [ test-btl-lib run : result_report_test : boost_test_exec_monitor : $(test-dir)test_files/result_report_test.pattern ] [ test-btl-lib run : parameterized_test_test : boost_test_exec_monitor ] [ test-btl-lib run : test_fp_comparisons : boost_unit_test_framework ] - [ test-btl-lib run : test_tools_test : boost_unit_test_framework ] + [ test-btl-lib run : test_tools_test : boost_unit_test_framework : $(test-dir)test_files/test_tools_test.pattern ] [ test-btl-lib run : auto_unit_test_test : boost_unit_test_framework ] [ test-btl-lib run : auto_unit_test_test_mult : boost_unit_test_framework : : auto_unit_test_test_mult1.cpp auto_unit_test_test_mult2.cpp ] [ test-btl-lib run : test_case_template_test : boost_test_exec_monitor ] @@ -68,4 +67,13 @@ test-suite "unit_test_framework_test" [ test-btl-lib run : algorithms_test : boost_unit_test_framework ] [ test-btl-lib run : token_iterator_test : boost_unit_test_framework ] [ test-btl-lib run : boost_check_equal_str : boost_test_exec_monitor ] + [ test-btl-lib run : config_file_iterator_test : boost_unit_test_framework ] + [ test-btl-lib run : config_file_test : boost_unit_test_framework ] + ; + +# test-suite "runtime_param_test" +# : [ test-btl-lib run : config_file_iterator_test : boost_unit_test_framework ] +# [ test-btl-lib run : config_file_test : boost_unit_test_framework ] +# +# ; diff --git a/test/config_file_iterator_test.cpp b/test/config_file_iterator_test.cpp new file mode 100755 index 00000000..b16c1966 --- /dev/null +++ b/test/config_file_iterator_test.cpp @@ -0,0 +1,309 @@ +// Boost.Test +#define BOOST_AUTO_TEST_MAIN +#include +namespace utf = boost::unit_test; + +// Boost.Runtime.Parameter +#include +#include + +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 ); +} + +//____________________________________________________________________________// + +// ***************************************************************************** +// History : +// +// $Log$ +// Revision 1.1 2005/04/12 06:19:23 rogeeff +// runtime.param tests added +// +// ***************************************************************************** + +// EOF diff --git a/test/config_file_test.cpp b/test/config_file_test.cpp new file mode 100755 index 00000000..85e6fe04 --- /dev/null +++ b/test/config_file_test.cpp @@ -0,0 +1,251 @@ +// Boost.Test +#define BOOST_AUTO_TEST_MAIN +#include +namespace utf = boost::unit_test; + +// Boost.Runtime.Parameter +#include + +namespace rt = boost::runtime; +namespace rtf = boost::runtime::file; + +//____________________________________________________________________________// + +BOOST_AUTO_TEST_CASE( basic_load_test ) +{ + rtf::config_file cf( "test_files/cfg_file_tst1.cfg" ); + + BOOST_CHECK_EQUAL( rtf::get_requ_param_value( cf, "par1" ), "ABC " ); + + BOOST_CHECK_EQUAL( rtf::get_requ_param_value( cf, "NS1", "par1" ), "12" ); + BOOST_CHECK_EQUAL( rtf::get_requ_param_value( cf, "NS2", "NS3", "par1" ), "OFF" ); + BOOST_CHECK_EQUAL( rtf::get_requ_param_value( cf, "NS2", "NS4", "par1" ), "ON" ); + BOOST_CHECK_EQUAL( rtf::get_requ_param_value( cf, "NS2", "NS4", "NS5", "par1" ), "1 2 3" ); + + BOOST_CHECK( !rtf::get_param_value( cf, "par1 " ) ); + BOOST_CHECK( !rtf::get_param_value( cf, "par2" ) ); + BOOST_CHECK( !rtf::get_param_value( cf, "NS2", "par1" ) ); + + BOOST_CHECK_THROW( rtf::get_requ_param_value( cf, "par1 " ), rt::logic_error ); + BOOST_CHECK_THROW( rtf::get_requ_param_value( cf, "par2" ), rt::logic_error ); + BOOST_CHECK_THROW( rtf::get_requ_param_value( cf, "NS2", "par1" ), rt::logic_error ); +} + +//____________________________________________________________________________// + +BOOST_AUTO_TEST_CASE( multiple_load ) +{ + rtf::config_file cf; + + cf.load( "test_files/cfg_file_tst3.cfg" ); + cf.load( "test_files/cfg_file_tst4.cfg" ); + + BOOST_CHECK_EQUAL( rtf::get_requ_param_value( cf, "par1" ), "1" ); + BOOST_CHECK_EQUAL( rtf::get_requ_param_value( cf, "NS", "par2" ), "1 2" ); +} + +//____________________________________________________________________________// + +BOOST_AUTO_TEST_CASE( custom_value_marker ) +{ + rtf::config_file cf; + + cf.load( "test_files/cfg_file_tst2.cfg", rtf::value_marker = "|" ); + + BOOST_CHECK_EQUAL( rtf::get_requ_param_value( cf, "par1" ), "\"Simple text \"" ); +} + +//____________________________________________________________________________// + +BOOST_AUTO_TEST_CASE( custom_value_delimeter ) +{ + rtf::config_file cf; + + cf.load( "test_files/cfg_file_tst5.cfg", rtf::value_delimeter = "=> " ); + cf.load( "test_files/cfg_file_tst6.cfg", rtf::value_delimeter = " " ); + + BOOST_CHECK_EQUAL( rtf::get_requ_param_value( cf, "par1" ), "1" ); + BOOST_CHECK_EQUAL( rtf::get_requ_param_value( cf, "NS", "par2" ), "2" ); +} + +//____________________________________________________________________________// + +BOOST_AUTO_TEST_CASE( custom_ns_delimeter ) +{ + rtf::config_file cf; + + cf.load( "test_files/cfg_file_tst7.cfg", (rtf::namespace_delimeter = "/",rtf::value_delimeter = " ") ); + + BOOST_CHECK_EQUAL( rtf::get_requ_param_value( cf, "NS1", "NS2", "par" ), "1" ); +} + +//____________________________________________________________________________// + +#if 0 + +void test_aliases() +{ + global_param_namespace.clear(); + + config_file_iterator cfi1( "test_files/par_hdl_tst1.cfg" ); + BOOST_CHECK( global_param_namespace.load_parameters( cfi1 ) ); + + config_file_iterator cfi2( "test_files/par_alias1.cfg" ); + BOOST_CHECK( global_param_namespace.load_aliases( cfi2 ) ); + + BOOST_CHECK_EQUAL( rtf::get_param_value( "par1" ), "ABC" ); + BOOST_CHECK_EQUAL( rtf::get_param_value( "par2" ), "12" ); + BOOST_CHECK_EQUAL( rtf::get_param_value( "par3" ), "OFF" ); + BOOST_CHECK_EQUAL( rtf::get_param_value( "par4" ), "ON" ); + BOOST_CHECK_EQUAL( rtf::get_param_value( "par5" ), "OFF" ); +} + +//____________________________________________________________________________// + +void test_validations() +{ + BOOST_CHECK_THROW( global_param_namespace.insert_param( "PAR-AM" ), fnd_runtime_exception ); + BOOST_CHECK_THROW( global_param_namespace.insert_param( "p^" ), fnd_runtime_exception ); + BOOST_CHECK_THROW( global_param_namespace.insert_namespace( "ns#1" ), fnd_runtime_exception ); + BOOST_CHECK_THROW( global_param_namespace.insert_namespace( "ns 1" ), fnd_runtime_exception ); + BOOST_CHECK_THROW( global_param_namespace.insert_namespace( "ns-1" ), fnd_runtime_exception ); + + config_file_iterator cfi1( "test_files/par_hdl_tst2.cfg" ); + BOOST_CHECK( !global_param_namespace.load_parameters( cfi1 ) ); + + config_file_iterator cfi2( "test_files/par_alias2.cfg" ); + BOOST_CHECK( !global_param_namespace.load_aliases( cfi2 ) ); + + config_file_iterator cfi3( "test_files/par_alias3.cfg" ); + BOOST_CHECK( !global_param_namespace.load_aliases( cfi3 ) ); +} + +//____________________________________________________________________________// + +#define QUOTE_N_END( string ) "\"" string "\"\n" +void test_io() +{ + global_param_namespace.clear(); + + config_file_iterator cfi1( "test_files/par_hdl_tst1.cfg" ); + BOOST_CHECK( global_param_namespace.load_parameters( cfi1 ) ); + + config_file_iterator cfi2( "test_files/par_alias1.cfg" ); + BOOST_CHECK( global_param_namespace.load_aliases( cfi2 ) ); + + output_test_stream ots; + + ots << global_param_namespace; + + BOOST_CHECK( ots.is_equal( + "par1 " QUOTE_N_END( "ABC" ) + "par2 " QUOTE_N_END( "12" ) + "par3 " QUOTE_N_END( "OFF" ) + "par5 " QUOTE_N_END( "OFF" ) + "par4 " QUOTE_N_END( "ON" ) + "NS1::par1 " QUOTE_N_END( "12" ) + "NS2::NS3::par1 " QUOTE_N_END( "OFF" ) + "NS2::NS4::par1 " QUOTE_N_END( "ON" ) + "NS2::NS4::NS5::par1 " QUOTE_N_END( "1 2 3" ) + + ) ); +} + +//____________________________________________________________________________// + +void +test_multipart_value() +{ + { + param_namespace pn( "", NULL ); + BOOST_CHECK( !pn.load_parameters( "test_files/test_multipart_value1.cfg" ) ); + } + + { + param_namespace pn( "", NULL ); + BOOST_CHECK( pn.load_parameters( "test_files/test_multipart_value2.cfg" ) ); + + BOOST_CHECK_EQUAL( rtf::get_param_value( "a", pn ), "" ); + } + + + { + param_namespace pn( "", NULL ); + BOOST_CHECK( !pn.load_parameters( "test_files/test_multipart_value3.cfg" ) ); + } + + { + param_namespace pn( "", NULL ); + BOOST_CHECK( pn.load_parameters( "test_files/test_multipart_value4.cfg" ) ); + + BOOST_CHECK_EQUAL( rtf::get_param_value( "a", pn ), "\"" ); + } + + { + param_namespace pn( "", NULL ); + BOOST_CHECK( !pn.load_parameters( "test_files/test_multipart_value5.cfg" ) ); + } + + { + param_namespace pn( "", NULL ); + BOOST_CHECK( !pn.load_parameters( "test_files/test_multipart_value6.cfg" ) ); + } + + + { + param_namespace pn( "", NULL ); + BOOST_CHECK( !pn.load_parameters( "test_files/test_multipart_value7.cfg" ) ); + } + + { + param_namespace pn( "", NULL ); + BOOST_CHECK( pn.load_parameters( "test_files/test_multipart_value8.cfg" ) ); + + BOOST_CHECK_EQUAL( rtf::get_param_value( "a", pn ), "abcdef" ); + } + + { + param_namespace pn( "", NULL ); + BOOST_CHECK( pn.load_parameters( "test_files/test_multipart_value9.cfg" ) ); + + BOOST_CHECK_EQUAL( rtf::get_param_value( "a", pn ), "abcdef123" ); + } + + { + param_namespace pn( "", NULL ); + BOOST_CHECK( !pn.load_parameters( "test_files/test_multipart_value10.cfg" ) ); + } + + { + param_namespace pn( "", NULL ); + BOOST_CHECK( !pn.load_parameters( "test_files/test_multipart_value11.cfg" ) ); + } + + { + param_namespace pn( "", NULL ); + BOOST_CHECK( !pn.load_parameters( "test_files/test_multipart_value12.cfg" ) ); + } + + { + param_namespace pn( "", NULL ); + BOOST_CHECK( pn.load_parameters( "test_files/test_multipart_value13.cfg" ) ); + + const_string pattern( "\"abc\"" ); + BOOST_CHECK_EQUAL( rtf::get_param_value( "a", pn ), pattern ); + } +} + +//____________________________________________________________________________// + +#endif + +// ***************************************************************************** +// History : +// +// $Log$ +// Revision 1.1 2005/04/12 06:19:23 rogeeff +// runtime.param tests added +// +// ***************************************************************************** + +// EOF diff --git a/test/foreach_test.cpp b/test/foreach_test.cpp new file mode 100755 index 00000000..8c4d1ab6 --- /dev/null +++ b/test/foreach_test.cpp @@ -0,0 +1,112 @@ +// (C) Copyright Gennadiy Rozental 2001-2005. +// 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$ +// +// Description : BOOST_TEST_FOREACH compile only test +// ***************************************************************************** + +// STL +#include +#include +#include +#include + +#include + +template +void baz( std::listconst& list_of_T ) +{ + // an example of using BOOST_TEST_FOREACH with dependent types + BOOST_TEST_FOREACH( T const&, t, list_of_T ) + { + std::cout << t << std::endl; + } +} + +int main() +{ + std::list int_list; + int_list.push_back( 1 ); + int_list.push_back( 2 ); + int_list.push_back( 3 ); + + // use BOOST_TEST_FOREACH with a STL container, and a reference as the loop variable. + BOOST_TEST_FOREACH( int&, i, int_list ) + { + ++i; + std::cout << i << std::endl; + } + + std::cout << std::endl; + + // use BOOST_TEST_FOREACH with a std::vector + std::vector int_vec; + int_vec.push_back( 1 ); + int_vec.push_back( 2 ); + int_vec.push_back( 3 ); + int_vec.push_back( 3 ); + int_vec.push_back( 3 ); + + BOOST_TEST_FOREACH( int const&, i, int_vec ) + { + std::cout << i << std::endl; + if( i == 3 ) + break; + } + + std::cout << std::endl; + + // use BOOST_TEST_FOREACH with dependent types + baz( int_list ); + std::cout << std::endl; + + // iterate over characters in a std::string + std::string str( "hello" ); + + BOOST_TEST_FOREACH( char&, ch, str ) + { + std::cout << ch; + // mutate the string + ++ch; + } + std::cout << std::endl; + std::cout << std::endl; + + BOOST_TEST_FOREACH( char, ch, str ) + { + // break work as you would expect + std::cout << ch; + break; + } + std::cout << std::endl; + std::cout << std::endl; + + BOOST_TEST_FOREACH( char, ch, str ) + { + // continue work as you would expect + if( ch == 'm' ) + continue; + + std::cout << ch; + } + std::cout << std::endl; + std::cout << std::endl; + + // use BOOST_TEST_FOREACH with const reference. + std::vector const& int_vec_const_ref = int_vec; + + BOOST_TEST_FOREACH( int const&, i, int_vec_const_ref ) + { + std::cout << (i+1) << std::endl; + } + std::cout << std::endl; + + return 0; +} diff --git a/test/test_files/cfg_file_tst1.cfg b/test/test_files/cfg_file_tst1.cfg new file mode 100755 index 00000000..1e97c293 --- /dev/null +++ b/test/test_files/cfg_file_tst1.cfg @@ -0,0 +1,5 @@ +par1 = "ABC " +NS1::par1 = 12 +NS2::NS3::par1 = OFF +NS2::NS4::par1 = ON +NS2::NS4::NS5::par1 = 1 2 3 diff --git a/test/test_files/cfg_file_tst2.cfg b/test/test_files/cfg_file_tst2.cfg new file mode 100755 index 00000000..530eff22 --- /dev/null +++ b/test/test_files/cfg_file_tst2.cfg @@ -0,0 +1 @@ +par1 = |"Simple text "| diff --git a/test/test_files/cfg_file_tst3.cfg b/test/test_files/cfg_file_tst3.cfg new file mode 100755 index 00000000..d526d26f --- /dev/null +++ b/test/test_files/cfg_file_tst3.cfg @@ -0,0 +1 @@ +par1 = 1 diff --git a/test/test_files/cfg_file_tst4.cfg b/test/test_files/cfg_file_tst4.cfg new file mode 100755 index 00000000..ee182937 --- /dev/null +++ b/test/test_files/cfg_file_tst4.cfg @@ -0,0 +1 @@ +NS::par2 = 1 2 diff --git a/test/test_files/cfg_file_tst5.cfg b/test/test_files/cfg_file_tst5.cfg new file mode 100755 index 00000000..31ae1072 --- /dev/null +++ b/test/test_files/cfg_file_tst5.cfg @@ -0,0 +1 @@ +NS::par2 => 2 diff --git a/test/test_files/cfg_file_tst6.cfg b/test/test_files/cfg_file_tst6.cfg new file mode 100755 index 00000000..cbfea511 --- /dev/null +++ b/test/test_files/cfg_file_tst6.cfg @@ -0,0 +1 @@ +par1 1 diff --git a/test/test_files/cfg_file_tst7.cfg b/test/test_files/cfg_file_tst7.cfg new file mode 100755 index 00000000..5d39393c --- /dev/null +++ b/test/test_files/cfg_file_tst7.cfg @@ -0,0 +1 @@ +NS1/NS2/par 1 diff --git a/test/test_files/par_alias1.cfg b/test/test_files/par_alias1.cfg new file mode 100755 index 00000000..47fb489b --- /dev/null +++ b/test/test_files/par_alias1.cfg @@ -0,0 +1,9 @@ + +par2 NS1::par1 +par3 NS2::NS3::par1 + +par5 NS2::NS3::par1 + +par4 NS2::NS4::par1 + + diff --git a/test/test_files/par_alias2.cfg b/test/test_files/par_alias2.cfg new file mode 100755 index 00000000..abd024b9 --- /dev/null +++ b/test/test_files/par_alias2.cfg @@ -0,0 +1,4 @@ +#not exitent parameter +par1 BLA::bla + + diff --git a/test/test_files/par_alias3.cfg b/test/test_files/par_alias3.cfg new file mode 100755 index 00000000..bb318192 --- /dev/null +++ b/test/test_files/par_alias3.cfg @@ -0,0 +1,4 @@ +# unexpected token +par1 NS1::par1 par2 + + diff --git a/test/test_files/test_broken_line.cfg b/test/test_files/test_broken_line.cfg new file mode 100755 index 00000000..16ae1eaf --- /dev/null +++ b/test/test_files/test_broken_line.cfg @@ -0,0 +1,33 @@ +qwer\ +ty + +123 \\ +11 + +# ery \ + 23 + +xcv \ dfgsd +qwe + +1 \ + + 23 + +34 \ +34 + +a \ +b \ +c \ +d \ +e \ +f + +as \ +# test +sa + +as\ + +we diff --git a/test/test_files/test_comments_and_blanks.cfg b/test/test_files/test_comments_and_blanks.cfg new file mode 100755 index 00000000..f4caa7cb --- /dev/null +++ b/test/test_files/test_comments_and_blanks.cfg @@ -0,0 +1,29 @@ + + + + + # 000 +1 +2 # 2 +# 1111 +# 234 +#rtyet +#erty\ +4 +3 + + + + + + + + +##################### ######################### 4444 + + + + + + + diff --git a/test/test_files/test_constructor.cfg b/test/test_files/test_constructor.cfg new file mode 100755 index 00000000..ce33489b --- /dev/null +++ b/test/test_files/test_constructor.cfg @@ -0,0 +1,4 @@ +{ abc d } +{ d + dsfg +} diff --git a/test/test_files/test_define.cfg b/test/test_files/test_define.cfg new file mode 100755 index 00000000..5bc14654 --- /dev/null +++ b/test/test_files/test_define.cfg @@ -0,0 +1,13 @@ +$define AAA 123 +$define BBB $AAA$$AAA$ + +a$BBB$ +1$AAA$2 + +$define V $TEST_\ +MACRO$=11 +a $V$ + +$define AAA abc + +1$AAA$2 \ No newline at end of file diff --git a/test/test_files/test_ifdef.cfg b/test/test_files/test_ifdef.cfg new file mode 100755 index 00000000..0e1f520f --- /dev/null +++ b/test/test_files/test_ifdef.cfg @@ -0,0 +1,37 @@ +$define a aa +$ifdef a +1 +$else +2 +$endif + +$ifdef A +1 +$else +2 +$endif + +$ifndef A +1 +$else +2 +$endif + +$ifdef a +$define V abc +$else +$define V cba +$endif + +1$V$ + +$ifdef a +$ifdef V +a +$else +b +$endif +$else +c +$endif + diff --git a/test/test_files/test_ifdef1.cfg b/test/test_files/test_ifdef1.cfg new file mode 100755 index 00000000..c8871a3f --- /dev/null +++ b/test/test_files/test_ifdef1.cfg @@ -0,0 +1 @@ +$ifdef \ No newline at end of file diff --git a/test/test_files/test_ifdef2.cfg b/test/test_files/test_ifdef2.cfg new file mode 100755 index 00000000..699aed53 --- /dev/null +++ b/test/test_files/test_ifdef2.cfg @@ -0,0 +1,2 @@ +$ifdef +$else diff --git a/test/test_files/test_ifdef3.cfg b/test/test_files/test_ifdef3.cfg new file mode 100755 index 00000000..f5e780f9 --- /dev/null +++ b/test/test_files/test_ifdef3.cfg @@ -0,0 +1,3 @@ +$else +$endif + diff --git a/test/test_files/test_ifdef4.cfg b/test/test_files/test_ifdef4.cfg new file mode 100755 index 00000000..79fe513d --- /dev/null +++ b/test/test_files/test_ifdef4.cfg @@ -0,0 +1,2 @@ +$endif + diff --git a/test/test_files/test_include1.cfg b/test/test_files/test_include1.cfg new file mode 100755 index 00000000..a3a86d9e --- /dev/null +++ b/test/test_files/test_include1.cfg @@ -0,0 +1,4 @@ +a +$include test_include1_include1.cfg + +b \ No newline at end of file diff --git a/test/test_files/test_include1_include1.cfg b/test/test_files/test_include1_include1.cfg new file mode 100755 index 00000000..f2ad6c76 --- /dev/null +++ b/test/test_files/test_include1_include1.cfg @@ -0,0 +1 @@ +c diff --git a/test/test_files/test_include2.cfg b/test/test_files/test_include2.cfg new file mode 100755 index 00000000..f0637498 --- /dev/null +++ b/test/test_files/test_include2.cfg @@ -0,0 +1,4 @@ +1 +$include test_include1.cfg# again + +2 \ No newline at end of file diff --git a/test/test_files/test_include3.cfg b/test/test_files/test_include3.cfg new file mode 100755 index 00000000..0ff24286 --- /dev/null +++ b/test/test_files/test_include3.cfg @@ -0,0 +1,3 @@ +$include \# broken +test_include1_include1.cfg +$include test_include1_include1.cfg# again diff --git a/test/test_files/test_incomplete_broken_line.cfg b/test/test_files/test_incomplete_broken_line.cfg new file mode 100755 index 00000000..6bc83a6c --- /dev/null +++ b/test/test_files/test_incomplete_broken_line.cfg @@ -0,0 +1 @@ +a\ diff --git a/test/test_files/test_macro_def1.cfg b/test/test_files/test_macro_def1.cfg new file mode 100755 index 00000000..5aa9e80b --- /dev/null +++ b/test/test_files/test_macro_def1.cfg @@ -0,0 +1,9 @@ +$define AAA 123 +$define BBB $AAA$$AAA$ + +a$BBB$ +1$AAA$2 + +$define V $TEST_\ +MACRO$=11 +a $V$ \ No newline at end of file diff --git a/test/test_files/test_macro_subst1.cfg b/test/test_files/test_macro_subst1.cfg new file mode 100755 index 00000000..52e74341 --- /dev/null +++ b/test/test_files/test_macro_subst1.cfg @@ -0,0 +1 @@ +a$aa$ \ No newline at end of file diff --git a/test/test_files/test_macro_subst2.cfg b/test/test_files/test_macro_subst2.cfg new file mode 100755 index 00000000..ddf94b5d --- /dev/null +++ b/test/test_files/test_macro_subst2.cfg @@ -0,0 +1 @@ +a$TEST_MACRO$ \ No newline at end of file diff --git a/test/test_files/test_macro_subst3.cfg b/test/test_files/test_macro_subst3.cfg new file mode 100755 index 00000000..d9e8fbf7 --- /dev/null +++ b/test/test_files/test_macro_subst3.cfg @@ -0,0 +1 @@ +a$1a$ \ No newline at end of file diff --git a/test/test_files/test_macro_subst4.cfg b/test/test_files/test_macro_subst4.cfg new file mode 100755 index 00000000..d398e566 --- /dev/null +++ b/test/test_files/test_macro_subst4.cfg @@ -0,0 +1,2 @@ +$define AA bb +a$AA$ \ No newline at end of file diff --git a/test/test_files/test_multipart_value1.cfg b/test/test_files/test_multipart_value1.cfg new file mode 100755 index 00000000..75a89923 --- /dev/null +++ b/test/test_files/test_multipart_value1.cfg @@ -0,0 +1 @@ +a " diff --git a/test/test_files/test_multipart_value10.cfg b/test/test_files/test_multipart_value10.cfg new file mode 100755 index 00000000..d3d80ec6 --- /dev/null +++ b/test/test_files/test_multipart_value10.cfg @@ -0,0 +1 @@ +a abc"def diff --git a/test/test_files/test_multipart_value11.cfg b/test/test_files/test_multipart_value11.cfg new file mode 100755 index 00000000..8f65a6a0 --- /dev/null +++ b/test/test_files/test_multipart_value11.cfg @@ -0,0 +1 @@ +a "abc" 123 "def" diff --git a/test/test_files/test_multipart_value12.cfg b/test/test_files/test_multipart_value12.cfg new file mode 100755 index 00000000..bf35c17c --- /dev/null +++ b/test/test_files/test_multipart_value12.cfg @@ -0,0 +1 @@ +a abc " 123 " def diff --git a/test/test_files/test_multipart_value13.cfg b/test/test_files/test_multipart_value13.cfg new file mode 100755 index 00000000..b8bb66de --- /dev/null +++ b/test/test_files/test_multipart_value13.cfg @@ -0,0 +1 @@ +a \"abc\" diff --git a/test/test_files/test_multipart_value2.cfg b/test/test_files/test_multipart_value2.cfg new file mode 100755 index 00000000..4456e2a4 --- /dev/null +++ b/test/test_files/test_multipart_value2.cfg @@ -0,0 +1 @@ +a "" diff --git a/test/test_files/test_multipart_value3.cfg b/test/test_files/test_multipart_value3.cfg new file mode 100755 index 00000000..5ff7eebe --- /dev/null +++ b/test/test_files/test_multipart_value3.cfg @@ -0,0 +1 @@ +a """ diff --git a/test/test_files/test_multipart_value4.cfg b/test/test_files/test_multipart_value4.cfg new file mode 100755 index 00000000..a80d109e --- /dev/null +++ b/test/test_files/test_multipart_value4.cfg @@ -0,0 +1 @@ +a "\"" diff --git a/test/test_files/test_multipart_value5.cfg b/test/test_files/test_multipart_value5.cfg new file mode 100755 index 00000000..1b8938a1 --- /dev/null +++ b/test/test_files/test_multipart_value5.cfg @@ -0,0 +1 @@ +a abc"" diff --git a/test/test_files/test_multipart_value6.cfg b/test/test_files/test_multipart_value6.cfg new file mode 100755 index 00000000..be04b55e --- /dev/null +++ b/test/test_files/test_multipart_value6.cfg @@ -0,0 +1 @@ +a abc" diff --git a/test/test_files/test_multipart_value7.cfg b/test/test_files/test_multipart_value7.cfg new file mode 100755 index 00000000..94f1faa5 --- /dev/null +++ b/test/test_files/test_multipart_value7.cfg @@ -0,0 +1 @@ +a "abc diff --git a/test/test_files/test_multipart_value8.cfg b/test/test_files/test_multipart_value8.cfg new file mode 100755 index 00000000..dfca7751 --- /dev/null +++ b/test/test_files/test_multipart_value8.cfg @@ -0,0 +1 @@ +a "abc" "def" diff --git a/test/test_files/test_multipart_value9.cfg b/test/test_files/test_multipart_value9.cfg new file mode 100755 index 00000000..3d43260d --- /dev/null +++ b/test/test_files/test_multipart_value9.cfg @@ -0,0 +1,3 @@ +a "abc" \ + "def" \ + "123" diff --git a/test/test_files/test_undef.cfg b/test/test_files/test_undef.cfg new file mode 100755 index 00000000..64b71a0f --- /dev/null +++ b/test/test_files/test_undef.cfg @@ -0,0 +1,9 @@ +$undef AAA + +$define AAA 123 + +1$AAA$ + +$undef AAA + +1$AAA$ \ No newline at end of file