Ticket #5454: config_file_test.cpp

File config_file_test.cpp, 1.6 KB (added by anonymous, 12 years ago)
Line 
1// config_file_test.cpp
2//
3
4#include <boost/test/unit_test.hpp>
5#include <boost/program_options.hpp>
6
7#include <fstream>
8#include <stdexcept>
9
10using namespace std;
11using namespace boost::program_options;
12
13BOOST_AUTO_TEST_SUITE( Config_File_Test_Suite )
14
15 BOOST_AUTO_TEST_CASE( Config_File_With_Single_Option )
16 {
17 // Step 1: test fixture setup
18 options_description configOptions( "Configuration" );
19
20 configOptions.add_options()
21 ( "option1", value<string>() )
22 ( "option2", value<string>() )
23 ;
24
25 variables_map variablesMap;
26
27 ifstream configFile( "config_file_1" );
28
29 BOOST_REQUIRE( configFile );
30
31 // nothrow ( 'section2.option' doesn't exist in config file )
32 store( parse_config_file( configFile, configOptions ),
33 variablesMap
34 );
35
36 // Step 2: call SUT
37 // &&
38 // Step 3: result check
39 variablesMap[ "option1" ].as<string>();
40
41 BOOST_CHECK_THROW( variablesMap[ "option2" ].as<string>(),
42 bad_cast
43 );
44
45 // Step 4: test fixture cleanup
46 }
47
48 BOOST_AUTO_TEST_CASE( Config_File_With_Two_Options )
49 {
50 // Step 1: test fixture setup
51 options_description configOptions( "Configuration" );
52
53 configOptions.add_options()
54 ( "option1", value<string>() )
55 ;
56
57 variables_map variablesMap;
58
59 ifstream configFile( "config_file_2" );
60
61 BOOST_REQUIRE( configFile );
62
63 // Step 2: call SUT
64 // &&
65 // Step 3: result check
66 // ( 'section2.option' doesn't exist in 'options_description' )
67 BOOST_CHECK_THROW( parse_config_file( configFile, configOptions ),
68 logic_error
69 );
70
71 // Step 4: test fixture cleanup
72 }
73
74BOOST_AUTO_TEST_SUITE_END()