The Battle for Wesnoth  1.17.0-dev
test_recall_list.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2014 - 2021
3  by Chris Beck <render787@gmail.com>
4  Part of the Battle for Wesnoth Project https://www.wesnoth.org/
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY.
12 
13  See the COPYING file for more details.
14 */
15 
16 #include <boost/test/unit_test.hpp>
17 
18 #include "config.hpp"
19 #include "recall_list_manager.hpp"
21 #include "units/ptr.hpp"
22 #include "units/types.hpp"
23 #include "units/unit.hpp"
24 
25 BOOST_AUTO_TEST_SUITE( recall_list_suite )
26 
29 
30  config orc_config {
31  "id", "Orcish Grunt",
32  "random_traits", false,
33  "animate", false,
34  };
35 
36  unit_type orc_type(orc_config);
37 
39 
40  unit_ptr orc1 = unit::create(orc_type, 1, false);
41  unit_ptr orc2 = unit::create(orc_type, 1, false);
42 
43  orc1->set_name("Larry");
44  orc2->set_name("Moe");
45 
46  orc1->set_id("larry");
47  orc2->set_id("moe");
48 
49  recall_list_manager recall_man;
50  BOOST_CHECK_EQUAL(recall_man.size(), 0);
51  BOOST_CHECK_MESSAGE(recall_man.begin() == recall_man.end(), "failed begin() == end() for an empty container");
52 
53  recall_man.add(orc1);
54  BOOST_CHECK_EQUAL(recall_man.size(), 1);
55  BOOST_CHECK_MESSAGE(recall_man[0] == orc1, "unexpected result at index [0]");
56  BOOST_CHECK_MESSAGE(recall_man.find_if_matches_id("larry") == orc1, "found something unexpected");
57  BOOST_CHECK_MESSAGE(!recall_man.find_if_matches_id("moe"), "found something unexpected");
58 
59  recall_man.add(orc2);
60  BOOST_CHECK_EQUAL(recall_man.size(), 2);
61  BOOST_CHECK_MESSAGE(recall_man[0] == orc1, "unexpected result at index [0]");
62  BOOST_CHECK_MESSAGE(recall_man[1] == orc2, "unexpected result at index [1]");
63  BOOST_CHECK_MESSAGE(recall_man.find_if_matches_id("larry") == orc1, "found something unexpected");
64  BOOST_CHECK_MESSAGE(recall_man.find_if_matches_id("moe") == orc2, "found something unexpected");
65 
66  recall_man.erase_if_matches_id("larry");
67  BOOST_CHECK_EQUAL(recall_man.size(), 1);
68  BOOST_CHECK_MESSAGE(recall_man[0] == orc2, "unexpected result at index [0]");
69  BOOST_CHECK_MESSAGE(!recall_man.find_if_matches_id("larry"), "found something unexpected");
70  BOOST_CHECK_MESSAGE(recall_man.find_if_matches_id("moe") == orc2, "found something unexpected");
71 
72  recall_man.add(orc1);
73  BOOST_CHECK_EQUAL(recall_man.size(), 2);
74  BOOST_CHECK_MESSAGE(recall_man[0] == orc2, "unexpected result at index [0]");
75  BOOST_CHECK_MESSAGE(recall_man[1] == orc1, "unexpected result at index [1]");
76  BOOST_CHECK_MESSAGE(recall_man.find_if_matches_id("larry") == orc1, "found something unexpected");
77  BOOST_CHECK_MESSAGE(recall_man.find_if_matches_id("moe") == orc2, "found something unexpected");
78 
79 }
80 
81 BOOST_AUTO_TEST_SUITE_END()
unit_type_data unit_types
Definition: types.cpp:1481
This class encapsulates the recall list of a team.
Definitions for the interface to Wesnoth Markup Language (WML).
BOOST_AUTO_TEST_CASE(test_1)
std::shared_ptr< unit > unit_ptr
Definition: ptr.hpp:26
static unit_ptr create(const config &cfg, bool use_traits=false, const vconfig *vcfg=nullptr)
Initializes a unit from a config.
Definition: unit.hpp:190
A single unit type that the player may recruit.
Definition: types.hpp:45
void build_unit_type(const unit_type &ut, unit_type::BUILD_STATUS status) const
Makes sure the provided unit_type is built to the specified level.
Definition: types.cpp:1254
unit_ptr find_if_matches_id(const std::string &unit_id)
Find a unit by id.
BOOST_AUTO_TEST_SUITE(filesystem)
iterator begin()
begin iterator
iterator end()
end iterator
void erase_if_matches_id(const std::string &unit_id)
Erase any unit with this id.
Game configuration data as global variables.
Definition: build_info.cpp:59
std::size_t size() const
Get the number of units on the list.
void add(const unit_ptr &ptr, int pos=-1)
Add a unit to the list.
A config object defines a single node in a WML file, with access to child nodes.
Definition: config.hpp:61