tests/test_commandline_options.cpp

Go to the documentation of this file.
00001 /* $Id: test_commandline_options.cpp 52869 2012-02-03 20:18:33Z shadowmaster $ */
00002 /*
00003    Copyright (C) 2011 - 2012 by Lukasz Dobrogowski <lukasz.dobrogowski@gmail.com>
00004    Part of the Battle for Wesnoth Project http://www.wesnoth.org/
00005 
00006    This program is free software; you can redistribute it and/or modify
00007    it under the terms of the GNU General Public License as published by
00008    the Free Software Foundation; either version 2 of the License, or
00009    (at your option) any later version.
00010    This program is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY.
00012 
00013    See the COPYING file for more details.
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     //BOOST_CHECK(!co.new_syntax);
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     //BOOST_CHECK(!co.new_syntax);
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         //"--new-syntax",
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     //BOOST_CHECK(co.new_syntax);
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     //BOOST_CHECK(!co.new_syntax);
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()
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated by doxygen 1.7.1 on Fri May 25 2012 01:03:11 for The Battle for Wesnoth
Gna! | Forum | Wiki | CIA | devdocs