// config_file_test.cpp // #include #include #include #include using namespace std; using namespace boost::program_options; BOOST_AUTO_TEST_SUITE( Config_File_Test_Suite ) BOOST_AUTO_TEST_CASE( Config_File_With_Single_Option ) { // Step 1: test fixture setup options_description configOptions( "Configuration" ); configOptions.add_options() ( "option1", value() ) ( "option2", value() ) ; variables_map variablesMap; ifstream configFile( "config_file_1" ); BOOST_REQUIRE( configFile ); // nothrow ( 'section2.option' doesn't exist in config file ) store( parse_config_file( configFile, configOptions ), variablesMap ); // Step 2: call SUT // && // Step 3: result check variablesMap[ "option1" ].as(); BOOST_CHECK_THROW( variablesMap[ "option2" ].as(), bad_cast ); // Step 4: test fixture cleanup } BOOST_AUTO_TEST_CASE( Config_File_With_Two_Options ) { // Step 1: test fixture setup options_description configOptions( "Configuration" ); configOptions.add_options() ( "option1", value() ) ; variables_map variablesMap; ifstream configFile( "config_file_2" ); BOOST_REQUIRE( configFile ); // Step 2: call SUT // && // Step 3: result check // ( 'section2.option' doesn't exist in 'options_description' ) BOOST_CHECK_THROW( parse_config_file( configFile, configOptions ), logic_error ); // Step 4: test fixture cleanup } BOOST_AUTO_TEST_SUITE_END()