00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #define GETTEXT_DOMAIN "wesnoth-test"
00016
00017 #include "commandline_options.hpp"
00018
00019 #include <boost/test/unit_test.hpp>
00020
00021 BOOST_AUTO_TEST_SUITE( cmdline_opts )
00022
00023 BOOST_AUTO_TEST_CASE (test_empty_options)
00024 {
00025 const char *argv[] = {"wesnoth"};
00026 const int argc = sizeof(argv)/sizeof(const char *);
00027 commandline_options co(argc,const_cast<char**>(argv));
00028
00029 BOOST_CHECK(!co.bpp);
00030 BOOST_CHECK(!co.campaign);
00031 BOOST_CHECK(!co.campaign_difficulty);
00032 BOOST_CHECK(!co.campaign_scenario);
00033 BOOST_CHECK(!co.clock);
00034 BOOST_CHECK(!co.config_path);
00035 BOOST_CHECK(!co.config_dir);
00036 BOOST_CHECK(!co.data_dir);
00037 BOOST_CHECK(!co.debug);
00038 #ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
00039 BOOST_CHECK(!co.debug_dot_domain);
00040 BOOST_CHECK(!co.debug_dot_level);
00041 #endif
00042 BOOST_CHECK(!co.editor);
00043 BOOST_CHECK(!co.fps);
00044 BOOST_CHECK(!co.fullscreen);
00045 BOOST_CHECK(!co.gunzip);
00046 BOOST_CHECK(!co.gzip);
00047 BOOST_CHECK(!co.help);
00048 BOOST_CHECK(!co.load);
00049 BOOST_CHECK(!co.log);
00050 BOOST_CHECK(!co.logdomains);
00051 BOOST_CHECK(!co.multiplayer);
00052 BOOST_CHECK(!co.multiplayer_ai_config);
00053 BOOST_CHECK(!co.multiplayer_algorithm);
00054 BOOST_CHECK(!co.multiplayer_controller);
00055 BOOST_CHECK(!co.multiplayer_era);
00056 BOOST_CHECK(!co.multiplayer_exit_at_end);
00057 BOOST_CHECK(!co.multiplayer_label);
00058 BOOST_CHECK(!co.multiplayer_parm);
00059 BOOST_CHECK(!co.multiplayer_side);
00060 BOOST_CHECK(!co.multiplayer_turns);
00061 BOOST_CHECK(!co.max_fps);
00062 BOOST_CHECK(!co.nocache);
00063 BOOST_CHECK(!co.nodelay);
00064 BOOST_CHECK(!co.nogui);
00065 BOOST_CHECK(!co.nomusic);
00066 BOOST_CHECK(!co.nosound);
00067 BOOST_CHECK(!co.new_storyscreens);
00068
00069 BOOST_CHECK(!co.new_widgets);
00070 BOOST_CHECK(!co.path);
00071 BOOST_CHECK(!co.preprocess);
00072 BOOST_CHECK(!co.preprocess_defines);
00073 BOOST_CHECK(!co.preprocess_input_macros);
00074 BOOST_CHECK(!co.preprocess_output_macros);
00075 BOOST_CHECK(!co.preprocess_path);
00076 BOOST_CHECK(!co.preprocess_target);
00077 BOOST_CHECK(!co.proxy);
00078 BOOST_CHECK(!co.proxy_address);
00079 BOOST_CHECK(!co.proxy_password);
00080 BOOST_CHECK(!co.proxy_port);
00081 BOOST_CHECK(!co.proxy_user);
00082 BOOST_CHECK(!co.resolution);
00083 BOOST_CHECK(!co.rng_seed);
00084 BOOST_CHECK(!co.multiplayer_scenario);
00085 BOOST_CHECK(!co.server);
00086 BOOST_CHECK(!co.screenshot);
00087 BOOST_CHECK(!co.screenshot_map_file);
00088 BOOST_CHECK(!co.screenshot_output_file);
00089 BOOST_CHECK(!co.smallgui);
00090 BOOST_CHECK(!co.test);
00091 BOOST_CHECK(!co.validcache);
00092 BOOST_CHECK(!co.version);
00093 BOOST_CHECK(!co.windowed);
00094 BOOST_CHECK(!co.with_replay);
00095 }
00096
00097 BOOST_AUTO_TEST_CASE (test_default_options)
00098 {
00099 const char *argv[] =
00100 {
00101 "wesnoth",
00102 "--campaign",
00103 "--editor",
00104 "--logdomains",
00105 "--preprocess-output-macros",
00106 "--server",
00107 "--test"
00108 };
00109 const int argc = sizeof(argv)/sizeof(const char *);
00110 commandline_options co(argc,const_cast<char**>(argv));
00111
00112 BOOST_CHECK(!co.bpp);
00113 BOOST_CHECK(co.campaign && co.campaign->empty());
00114 BOOST_CHECK(!co.campaign_difficulty);
00115 BOOST_CHECK(!co.campaign_scenario);
00116 BOOST_CHECK(!co.clock);
00117 BOOST_CHECK(!co.config_path);
00118 BOOST_CHECK(!co.config_dir);
00119 BOOST_CHECK(!co.data_dir);
00120 BOOST_CHECK(!co.debug);
00121 #ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
00122 BOOST_CHECK(!co.debug_dot_domain);
00123 BOOST_CHECK(!co.debug_dot_level);
00124 #endif
00125 BOOST_CHECK(co.editor && co.editor->empty());
00126 BOOST_CHECK(!co.fps);
00127 BOOST_CHECK(!co.fullscreen);
00128 BOOST_CHECK(!co.gunzip);
00129 BOOST_CHECK(!co.gzip);
00130 BOOST_CHECK(!co.help);
00131 BOOST_CHECK(!co.load);
00132 BOOST_CHECK(!co.log);
00133 BOOST_CHECK(co.logdomains && co.logdomains->empty());
00134 BOOST_CHECK(!co.multiplayer);
00135 BOOST_CHECK(!co.multiplayer_ai_config);
00136 BOOST_CHECK(!co.multiplayer_algorithm);
00137 BOOST_CHECK(!co.multiplayer_controller);
00138 BOOST_CHECK(!co.multiplayer_era);
00139 BOOST_CHECK(!co.multiplayer_exit_at_end);
00140 BOOST_CHECK(!co.multiplayer_label);
00141 BOOST_CHECK(!co.multiplayer_parm);
00142 BOOST_CHECK(!co.multiplayer_scenario);
00143 BOOST_CHECK(!co.multiplayer_side);
00144 BOOST_CHECK(!co.multiplayer_turns);
00145 BOOST_CHECK(!co.max_fps);
00146 BOOST_CHECK(!co.nocache);
00147 BOOST_CHECK(!co.nodelay);
00148 BOOST_CHECK(!co.nogui);
00149 BOOST_CHECK(!co.nomusic);
00150 BOOST_CHECK(!co.nosound);
00151 BOOST_CHECK(!co.new_storyscreens);
00152
00153 BOOST_CHECK(!co.new_widgets);
00154 BOOST_CHECK(!co.path);
00155 BOOST_CHECK(!co.preprocess);
00156 BOOST_CHECK(!co.preprocess_defines);
00157 BOOST_CHECK(!co.preprocess_input_macros);
00158 BOOST_CHECK(co.preprocess_output_macros && co.preprocess_output_macros->empty());
00159 BOOST_CHECK(!co.preprocess_path);
00160 BOOST_CHECK(!co.preprocess_target);
00161 BOOST_CHECK(!co.proxy);
00162 BOOST_CHECK(!co.proxy_address);
00163 BOOST_CHECK(!co.proxy_password);
00164 BOOST_CHECK(!co.proxy_port);
00165 BOOST_CHECK(!co.proxy_user);
00166 BOOST_CHECK(!co.resolution);
00167 BOOST_CHECK(!co.rng_seed);
00168 BOOST_CHECK(co.server && co.server->empty());
00169 BOOST_CHECK(!co.screenshot);
00170 BOOST_CHECK(!co.screenshot_map_file);
00171 BOOST_CHECK(!co.screenshot_output_file);
00172 BOOST_CHECK(!co.smallgui);
00173 BOOST_CHECK(co.test && co.test->empty());
00174 BOOST_CHECK(!co.validcache);
00175 BOOST_CHECK(!co.version);
00176 BOOST_CHECK(!co.windowed);
00177 BOOST_CHECK(!co.with_replay);
00178 }
00179
00180 BOOST_AUTO_TEST_CASE (test_full_options)
00181 {
00182 const char *argv[] =
00183 {
00184 "wesnoth",
00185 "--ai-config=1:aifoo",
00186 "--ai-config=2:aibar",
00187 "--algorithm=3:algfoo",
00188 "--algorithm=4:algbar",
00189 "--bpp=32",
00190 "--campaign=campfoo",
00191 "--campaign-difficulty=16",
00192 "--campaign-scenario=scenfoo",
00193 "--clock",
00194 "--config-dir=configdirfoo",
00195 "--config-path",
00196 "--controller=5:confoo",
00197 "--controller=6:conbar",
00198 "--data-dir=datadirfoo",
00199 "--debug",
00200 #ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
00201 "--debug-dot-domain=ddfoo",
00202 "--debug-dot-level=dlfoo",
00203 #endif
00204 "--editor=editfoo",
00205 "--era=erafoo",
00206 "--exit-at-end",
00207 "--fps",
00208 "--fullscreen",
00209 "--gunzip=gunzipfoo.gz",
00210 "--gzip=gzipfoo",
00211 "--help",
00212 "--label=labelfoo",
00213 "--load=loadfoo",
00214 "--log-error=errfoo,errbar/*",
00215 "--log-warning=warnfoo,warnfoo/bar",
00216 "--log-info=infofoo",
00217 "--log-debug=dbgfoo,dbgbar,dbg/foo/bar/baz",
00218 "--logdomains=filterfoo",
00219 "--max-fps=100",
00220 "--multiplayer",
00221 "--new-storyscreens",
00222
00223 "--new-widgets",
00224 "--nocache",
00225 "--nodelay",
00226 "--nomusic",
00227 "--nosound",
00228 "--nogui",
00229 "--parm=7:parmfoo:valfoo",
00230 "--parm=8:parmbar:valbar",
00231 "--path",
00232 "--preprocess", "preppathfoo", "preptargfoo",
00233 "--preprocess-defines=DEFFOO,DEFBAR",
00234 "--preprocess-input-macros=inmfoo",
00235 "--preprocess-output-macros=outmfoo",
00236 "--proxy",
00237 "--proxy-address=addressfoo",
00238 "--proxy-password=passfoo",
00239 "--proxy-port=portfoo",
00240 "--proxy-user=userfoo",
00241 "--resolution=800x600",
00242 "--rng-seed=1234",
00243 "--scenario=scenfoo",
00244 "--screenshot", "mapfoo", "outssfoo",
00245 "--side=9:sidefoo",
00246 "--side=10:sidebar",
00247 "--server=servfoo",
00248 "--smallgui",
00249 "--test=testfoo",
00250 "--turns=42",
00251 "--validcache",
00252 "--version",
00253 "--windowed",
00254 "--with-replay"
00255 };
00256 const int argc = sizeof(argv)/sizeof(const char *);
00257 commandline_options co(argc,const_cast<char**>(argv));
00258
00259 BOOST_CHECK(co.bpp && *co.bpp == 32);
00260 BOOST_CHECK(co.campaign && *co.campaign == "campfoo");
00261 BOOST_CHECK(co.campaign_difficulty && *co.campaign_difficulty == 16);
00262 BOOST_CHECK(co.campaign_scenario && *co.campaign_scenario == "scenfoo");
00263 BOOST_CHECK(co.clock);
00264 BOOST_CHECK(co.config_path);
00265 BOOST_CHECK(co.config_dir && *co.config_dir == "configdirfoo");
00266 BOOST_CHECK(co.data_dir && *co.data_dir == "datadirfoo");
00267 BOOST_CHECK(co.debug);
00268 #ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
00269 BOOST_CHECK(co.debug_dot_domain && *co.debug_dot_domain == "ddfoo");
00270 BOOST_CHECK(co.debug_dot_level && *co.debug_dot_level == "dlfoo");
00271 #endif
00272 BOOST_CHECK(co.editor && *co.editor == "editfoo");
00273 BOOST_CHECK(co.fps);
00274 BOOST_CHECK(co.fullscreen);
00275 BOOST_CHECK(co.gunzip && *co.gunzip == "gunzipfoo.gz");
00276 BOOST_CHECK(co.gzip && *co.gzip == "gzipfoo");
00277 BOOST_CHECK(co.help);
00278 BOOST_CHECK(co.load && *co.load == "loadfoo");
00279 BOOST_CHECK(co.log);
00280 BOOST_CHECK(co.log->size()==8);
00281 BOOST_CHECK(co.log->at(0).get<0>() == 0 && co.log->at(1).get<0>() == 0);
00282 BOOST_CHECK(co.log->at(0).get<1>() == "errfoo" && co.log->at(1).get<1>() == "errbar/*");
00283 BOOST_CHECK(co.log->at(2).get<0>() == 1 && co.log->at(3).get<0>() == 1);
00284 BOOST_CHECK(co.log->at(2).get<1>() == "warnfoo" && co.log->at(3).get<1>() == "warnfoo/bar");
00285 BOOST_CHECK(co.log->at(4).get<0>() == 2);
00286 BOOST_CHECK(co.log->at(4).get<1>() == "infofoo");
00287 BOOST_CHECK(co.log->at(5).get<0>() == 3 && co.log->at(6).get<0>() == 3 && co.log->at(7).get<0>() == 3);
00288 BOOST_CHECK(co.log->at(5).get<1>() == "dbgfoo" && co.log->at(6).get<1>() == "dbgbar" && co.log->at(7).get<1>() == "dbg/foo/bar/baz");
00289 BOOST_CHECK(co.logdomains && *co.logdomains == "filterfoo");
00290 BOOST_CHECK(co.multiplayer);
00291 BOOST_CHECK(co.multiplayer_ai_config);
00292 BOOST_CHECK(co.multiplayer_ai_config->size() == 2);
00293 BOOST_CHECK(co.multiplayer_ai_config->at(0).get<0>() == 1 && co.multiplayer_ai_config->at(0).get<1>() == "aifoo");
00294 BOOST_CHECK(co.multiplayer_ai_config->at(1).get<0>() == 2 && co.multiplayer_ai_config->at(1).get<1>() == "aibar");
00295 BOOST_CHECK(co.multiplayer_algorithm);
00296 BOOST_CHECK(co.multiplayer_algorithm->at(0).get<0>() == 3 && co.multiplayer_algorithm->at(0).get<1>() == "algfoo");
00297 BOOST_CHECK(co.multiplayer_algorithm->at(1).get<0>() == 4 && co.multiplayer_algorithm->at(1).get<1>() == "algbar");
00298 BOOST_CHECK(co.multiplayer_controller);
00299 BOOST_CHECK(co.multiplayer_controller->at(0).get<0>() == 5 && co.multiplayer_controller->at(0).get<1>() == "confoo");
00300 BOOST_CHECK(co.multiplayer_controller->at(1).get<0>() == 6 && co.multiplayer_controller->at(1).get<1>() == "conbar");
00301 BOOST_CHECK(co.multiplayer_era && *co.multiplayer_era == "erafoo");
00302 BOOST_CHECK(co.multiplayer_exit_at_end);
00303 BOOST_CHECK(co.multiplayer_label && *co.multiplayer_label == "labelfoo");
00304 BOOST_CHECK(co.multiplayer_parm);
00305 BOOST_CHECK(co.multiplayer_parm->at(0).get<0>() == 7 && co.multiplayer_parm->at(0).get<1>() == "parmfoo" && co.multiplayer_parm->at(0).get<2>() == "valfoo");
00306 BOOST_CHECK(co.multiplayer_parm->at(1).get<0>() == 8 && co.multiplayer_parm->at(1).get<1>() == "parmbar" && co.multiplayer_parm->at(1).get<2>() == "valbar");
00307 BOOST_CHECK(co.multiplayer_scenario && *co.multiplayer_scenario == "scenfoo");
00308 BOOST_CHECK(co.multiplayer_side);
00309 BOOST_CHECK(co.multiplayer_side->size() == 2);
00310 BOOST_CHECK(co.multiplayer_side->at(0).get<0>() == 9 && co.multiplayer_side->at(0).get<1>() == "sidefoo");
00311 BOOST_CHECK(co.multiplayer_side->at(1).get<0>() == 10 && co.multiplayer_side->at(1).get<1>() == "sidebar");
00312 BOOST_CHECK(co.multiplayer_turns && *co.multiplayer_turns == "42");
00313 BOOST_CHECK(co.max_fps && *co.max_fps == 100);
00314 BOOST_CHECK(co.nocache);
00315 BOOST_CHECK(co.nodelay);
00316 BOOST_CHECK(co.nogui);
00317 BOOST_CHECK(co.nomusic);
00318 BOOST_CHECK(co.nosound);
00319 BOOST_CHECK(co.new_storyscreens);
00320
00321 BOOST_CHECK(co.new_widgets);
00322 BOOST_CHECK(co.path);
00323 BOOST_CHECK(co.preprocess && co.preprocess_path && co.preprocess_target);
00324 BOOST_CHECK(*co.preprocess_path == "preppathfoo" && *co.preprocess_target == "preptargfoo");
00325 BOOST_CHECK(co.preprocess_defines && co.preprocess_defines->size() == 2);
00326 BOOST_CHECK(co.preprocess_defines->at(0) == "DEFFOO" && co.preprocess_defines->at(1) == "DEFBAR");
00327 BOOST_CHECK(co.preprocess_input_macros && *co.preprocess_input_macros == "inmfoo");
00328 BOOST_CHECK(co.preprocess_output_macros && *co.preprocess_output_macros == "outmfoo");
00329 BOOST_CHECK(co.proxy);
00330 BOOST_CHECK(co.proxy_address && *co.proxy_address == "addressfoo");
00331 BOOST_CHECK(co.proxy_password && *co.proxy_password == "passfoo");
00332 BOOST_CHECK(co.proxy_port && *co.proxy_port == "portfoo");
00333 BOOST_CHECK(co.proxy_user && *co.proxy_user == "userfoo");
00334 BOOST_CHECK(co.resolution);
00335 BOOST_CHECK(co.resolution->get<0>() == 800 && co.resolution->get<1>() == 600);
00336 BOOST_CHECK(co.rng_seed && *co.rng_seed == 1234);
00337 BOOST_CHECK(co.server && *co.server == "servfoo");
00338 BOOST_CHECK(co.screenshot && co.screenshot_map_file && co.screenshot_output_file);
00339 BOOST_CHECK(*co.screenshot_map_file == "mapfoo" && *co.screenshot_output_file == "outssfoo");
00340 BOOST_CHECK(co.smallgui);
00341 BOOST_CHECK(co.test && *co.test == "testfoo");
00342 BOOST_CHECK(co.validcache);
00343 BOOST_CHECK(co.version);
00344 BOOST_CHECK(co.windowed);
00345 BOOST_CHECK(co.with_replay);
00346 }
00347
00348 BOOST_AUTO_TEST_CASE (test_positional_options)
00349 {
00350 const char *argv[] =
00351 {
00352 "wesnoth",
00353 "datadirfoo"
00354 };
00355 const int argc = sizeof(argv)/sizeof(const char *);
00356 commandline_options co(argc,const_cast<char**>(argv));
00357
00358 BOOST_CHECK(!co.bpp);
00359 BOOST_CHECK(!co.campaign);
00360 BOOST_CHECK(!co.campaign_difficulty);
00361 BOOST_CHECK(!co.campaign_scenario);
00362 BOOST_CHECK(!co.clock);
00363 BOOST_CHECK(!co.config_path);
00364 BOOST_CHECK(!co.config_dir);
00365 BOOST_CHECK(co.data_dir && *co.data_dir == "datadirfoo");
00366 BOOST_CHECK(!co.debug);
00367 #ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
00368 BOOST_CHECK(!co.debug_dot_domain);
00369 BOOST_CHECK(!co.debug_dot_level);
00370 #endif
00371 BOOST_CHECK(!co.editor);
00372 BOOST_CHECK(!co.fps);
00373 BOOST_CHECK(!co.fullscreen);
00374 BOOST_CHECK(!co.gunzip);
00375 BOOST_CHECK(!co.gzip);
00376 BOOST_CHECK(!co.help);
00377 BOOST_CHECK(!co.load);
00378 BOOST_CHECK(!co.log);
00379 BOOST_CHECK(!co.logdomains);
00380 BOOST_CHECK(!co.multiplayer);
00381 BOOST_CHECK(!co.multiplayer_ai_config);
00382 BOOST_CHECK(!co.multiplayer_algorithm);
00383 BOOST_CHECK(!co.multiplayer_controller);
00384 BOOST_CHECK(!co.multiplayer_era);
00385 BOOST_CHECK(!co.multiplayer_exit_at_end);
00386 BOOST_CHECK(!co.multiplayer_label);
00387 BOOST_CHECK(!co.multiplayer_parm);
00388 BOOST_CHECK(!co.multiplayer_scenario);
00389 BOOST_CHECK(!co.multiplayer_side);
00390 BOOST_CHECK(!co.multiplayer_turns);
00391 BOOST_CHECK(!co.max_fps);
00392 BOOST_CHECK(!co.nocache);
00393 BOOST_CHECK(!co.nodelay);
00394 BOOST_CHECK(!co.nogui);
00395 BOOST_CHECK(!co.nomusic);
00396 BOOST_CHECK(!co.nosound);
00397 BOOST_CHECK(!co.new_storyscreens);
00398
00399 BOOST_CHECK(!co.new_widgets);
00400 BOOST_CHECK(!co.path);
00401 BOOST_CHECK(!co.preprocess);
00402 BOOST_CHECK(!co.preprocess_defines);
00403 BOOST_CHECK(!co.preprocess_input_macros);
00404 BOOST_CHECK(!co.preprocess_output_macros);
00405 BOOST_CHECK(!co.preprocess_path);
00406 BOOST_CHECK(!co.preprocess_target);
00407 BOOST_CHECK(!co.proxy);
00408 BOOST_CHECK(!co.proxy_address);
00409 BOOST_CHECK(!co.proxy_password);
00410 BOOST_CHECK(!co.proxy_port);
00411 BOOST_CHECK(!co.proxy_user);
00412 BOOST_CHECK(!co.resolution);
00413 BOOST_CHECK(!co.rng_seed);
00414 BOOST_CHECK(!co.server);
00415 BOOST_CHECK(!co.screenshot);
00416 BOOST_CHECK(!co.screenshot_map_file);
00417 BOOST_CHECK(!co.screenshot_output_file);
00418 BOOST_CHECK(!co.smallgui);
00419 BOOST_CHECK(!co.test);
00420 BOOST_CHECK(!co.validcache);
00421 BOOST_CHECK(!co.version);
00422 BOOST_CHECK(!co.windowed);
00423 BOOST_CHECK(!co.with_replay);
00424 }
00425
00426 BOOST_AUTO_TEST_SUITE_END()