16 #define GETTEXT_DOMAIN "wesnoth-test" 18 #include <boost/test/unit_test.hpp> 41 std::unique_ptr<saved_game> state;
42 std::unique_ptr<randomness::mt_rng> rng;
50 dummy_args({
"wesnoth",
"--noaddons"}),
51 cmdline_opts(dummy_args),
59 state->classification().type = campaign_type::type::multiplayer;
60 state->classification().era_id =
"era_default";
61 config_manager->load_game_config_for_game(state->classification(), state->get_scenario_id());
63 state->mp_settings().name =
"multiplayer_The_Freelands";
64 state->mp_settings().use_map_settings =
true;
65 state->mp_settings().saved_game = saved_game_mode::type::no;
67 state->set_scenario(config_manager->
68 game_config().find_child(
"multiplayer",
"id", state->mp_settings().name));
70 state->mp_settings().num_turns = state->get_starting_point()[
"turns"];
100 side_cfg.
append(defaults);
115 state->mp_settings().use_map_settings =
true;
116 state->mp_settings().saved_game = saved_game_mode::type::no;
117 std::unique_ptr<test_connect_engine>
124 side[
"recruit"] =
"Elvish Archer";
128 BOOST_CHECK_EQUAL(
side_engine->new_config()[
"recruit"],
"Elvish Archer" );
132 side[
"faction"] =
"Custom";
135 BOOST_CHECK_EQUAL(
side_engine->flg().current_faction()[
"id"],
"Custom" );
136 BOOST_CHECK_EQUAL(
side_engine->new_config()[
"recruit"].empty(), true );
140 side[
"faction"] =
"Random";
143 BOOST_CHECK_EQUAL(
side_engine->flg().current_faction()[
"id"],
"Random" );
147 side[
"faction"] =
"Rebels";
150 BOOST_CHECK_EQUAL(
side_engine->flg().current_faction()[
"id"],
"Rebels" );
154 side[
"faction"] =
"ThisFactionDoesNotExist";
156 BOOST_CHECK(
side_engine->flg().choosable_factions().size() > 1 );
157 BOOST_CHECK_EQUAL(
side_engine->flg().current_faction()[
"id"],
"Random" );
161 side[
"recruit"] =
"Elvish Archer";
162 side[
"faction"] =
"Undead";
170 side[
"previous_recruits"] =
"Elvish Archer";
173 BOOST_CHECK_EQUAL(
side_engine->new_config()[
"previous_recruits"],
178 side[
"type"] =
"Shadow";
180 BOOST_CHECK_EQUAL(
side_engine->flg().choosable_leaders().size(), 1 );
181 BOOST_CHECK_EQUAL(
side_engine->flg().current_leader(),
"Shadow" );
182 BOOST_CHECK_EQUAL(
side_engine->new_config()[
"type"],
"Shadow" );
186 side[
"type"] =
"ThisUnitDoesNotExist";
188 BOOST_CHECK_EQUAL(
side_engine->flg().choosable_leaders().size(), 1 );
189 BOOST_CHECK_EQUAL(
side_engine->flg().current_leader(),
"null" );
193 side[
"faction"] =
"Custom";
195 BOOST_CHECK(
side_engine->flg().choosable_leaders().size() > 1 );
196 BOOST_CHECK_EQUAL(
side_engine->flg().current_leader(),
"random" );
200 side[
"faction"] =
"Random";
202 BOOST_CHECK_EQUAL(
side_engine->flg().choosable_leaders().size(), 1 );
203 BOOST_CHECK_EQUAL(
side_engine->flg().current_leader(),
"null" );
207 side[
"faction"] =
"Undead";
209 BOOST_CHECK(
side_engine->flg().choosable_leaders().size() > 1 );
210 BOOST_CHECK_EQUAL(
side_engine->flg().current_leader(),
"random" );
214 side[
"id"] =
"LeaderID";
215 side[
"type"] =
"Elvish Archer";
217 unit[
"id"] =
"LeaderID";
218 unit[
"type"] =
"Elvish Ranger";
220 BOOST_CHECK_EQUAL(
side_engine->flg().choosable_leaders().size(), 1 );
221 BOOST_CHECK_EQUAL(
side_engine->flg().current_leader(),
"Elvish Ranger" );
225 side[
"type"] =
"random";
227 BOOST_CHECK_EQUAL(
side_engine->flg().choosable_leaders().size(), 1 );
231 side[
"type"] =
"Elvish Archer";
233 BOOST_CHECK_EQUAL(
side_engine->flg().choosable_genders().size(), 3 );
234 BOOST_CHECK_EQUAL(
side_engine->flg().current_gender(),
"random" );
238 side[
"type"] =
"Swordsman";
240 BOOST_CHECK_EQUAL(
side_engine->flg().choosable_genders().size(), 1 );
241 BOOST_CHECK_EQUAL(
side_engine->flg().current_gender(),
"male" );
245 side[
"type"] =
"Elvish Druid";
247 BOOST_CHECK_EQUAL(
side_engine->flg().choosable_genders().size(), 1 );
248 BOOST_CHECK_EQUAL(
side_engine->flg().current_gender(),
"female" );
252 side[
"type"] =
"White Mage";
253 side[
"gender"] =
"female";
256 BOOST_CHECK_EQUAL(
side_engine->flg().current_gender(),
"female" );
260 side[
"type"] =
"Troll";
261 side[
"gender"] =
"female";
263 BOOST_CHECK_EQUAL(
side_engine->flg().choosable_genders().size(), 1 );
264 BOOST_CHECK_EQUAL(
side_engine->flg().current_gender(),
"male" );
268 side[
"type"] =
"White Mage";
269 side[
"gender"] =
"random";
272 BOOST_CHECK_EQUAL(
side_engine->flg().current_gender(),
"random" );
276 side[
"leader_lock"] =
true;
278 BOOST_CHECK_EQUAL(
side_engine->flg().choosable_leaders().size(), 1 );
279 BOOST_CHECK_EQUAL(
side_engine->flg().current_leader(),
"null" );
283 side[
"faction"] =
"Random";
286 BOOST_CHECK(
side_engine->flg().current_faction()[
"id"] !=
"Random" );
287 BOOST_CHECK(
side_engine->flg().current_leader() !=
"random" &&
289 BOOST_CHECK(
side_engine->flg().current_gender() !=
"random" &&
294 side[
"faction"] =
"Random";
295 side[
"type"] =
"Troll";
298 BOOST_CHECK(
side_engine->flg().current_faction()[
"id"] !=
"Random" );
299 BOOST_CHECK_EQUAL(
side_engine->flg().current_leader(),
"Troll" );
300 BOOST_CHECK(
side_engine->flg().current_gender() !=
"random" &&
305 side[
"faction"] =
"Random";
306 side[
"type"] =
"White Mage";
307 side[
"gender"] =
"male";
310 BOOST_CHECK(
side_engine->flg().current_faction()[
"id"] !=
"Random" );
311 BOOST_CHECK_EQUAL(
side_engine->flg().current_leader(),
"White Mage" );
312 BOOST_CHECK_EQUAL(
side_engine->flg().current_gender(),
"male" );
316 side[
"type"] =
"random";
319 BOOST_CHECK(
side_engine->flg().current_leader() !=
"random" );
325 state->mp_settings().use_map_settings =
false;
326 state->mp_settings().saved_game = saved_game_mode::type::no;
327 const std::unique_ptr<test_connect_engine>
334 side[
"recruit"] =
"Elvish Archer";
336 BOOST_CHECK( side_engine->flg().choosable_factions().size() > 1 );
341 side[
"faction"] =
"Custom";
343 BOOST_CHECK( side_engine->flg().choosable_factions().size() > 1 );
344 BOOST_CHECK_EQUAL( side_engine->flg().current_faction()[
"id"],
"Custom" );
345 BOOST_CHECK_EQUAL( side_engine->new_config()[
"recruit"].empty(), true );
349 side[
"previous_recruits"] =
"Elvish Archer";
351 BOOST_CHECK( side_engine->flg().choosable_factions().size() > 1 );
352 BOOST_CHECK_EQUAL( side_engine->new_config()[
"previous_recruits"],
357 side[
"type"] =
"Goblin Impaler";
359 side_engine->flg().set_current_faction(
"Rebels");
360 BOOST_CHECK( side_engine->flg().choosable_leaders().size() > 1 );
364 side[
"faction"] =
"Custom";
365 side[
"type"] =
"Swordsman";
367 BOOST_CHECK( side_engine->flg().choosable_leaders().size() > 1 );
368 const std::vector<std::string>& leaders =
369 side_engine->flg().choosable_leaders();
370 BOOST_CHECK_EQUAL( std::count(leaders.begin(), leaders.end(),
"Swordsman"),
375 side[
"gender"] =
"female";
377 side_engine->flg().set_current_faction(
"Rebels");
378 side_engine->flg().set_current_leader(
"Elvish Ranger");
379 BOOST_CHECK_EQUAL( side_engine->flg().current_gender(),
"random" );
387 BOOST_AUTO_TEST_SUITE_END()
config & child(config_key_type key, int n=0)
Returns the nth child with the given key, or a reference to an invalid config if there is none...
void clear_children(T... keys)
This class represents a single unit of a specific type.
void append(const config &cfg)
Append data from another config object to this one.
this class is initialized once at game start put all initialization and wipe code in the methods here...
void remove_attributes(T... keys)
BOOST_GLOBAL_FIXTURE(mp_connect_fixture)
Don't reload if the previous defines equal the new defines.
static ng::side_engine * create_side_engine(const config &defaults, test_connect_engine *connect_engine)
BOOST_AUTO_TEST_CASE(flg_map_settings)
BOOST_AUTO_TEST_SUITE(filesystem)
config * current_config()
Game configuration data as global variables.
std::unique_ptr< game_config_manager > config_manager
static test_connect_engine * create_test_connect_engine()
std::vector< std::string > dummy_args
std::shared_ptr< side_engine > side_engine_ptr
config & add_child(config_key_type key)
commandline_options cmdline_opts
hotkey::manager hotkey_manager
connect_engine(saved_game &state, const bool first_scenario, mp_game_metadata *metadata)
A config object defines a single node in a WML file, with access to child nodes.
test_connect_engine(saved_game &gamestate)