Fix a few more bugs and implement more tests

Bug in infinite recursion on move assignment operator.
Bug in adding the wron units ID to the kill list.
This commit is contained in:
Marc Di Luzio 2014-12-16 13:13:02 +00:00
parent 9b00030039
commit 7e2fd0a8d1
5 changed files with 71 additions and 17 deletions

View file

@ -141,7 +141,7 @@ int CTTRTSGame::SimulateToNextTurn()
// if the unit is infront of our unit, then add it to the kill list
if( pair2.unit.getPos() == infront )
{
toKill.push_back(pair.unit.getID());
toKill.push_back(pair2.unit.getID());
pair.order = COrder();
break;
}

View file

@ -29,7 +29,7 @@ struct OrderUnitPair
}
// Move asignment operator
inline OrderUnitPair& operator=( OrderUnitPair&& rhs ) { *this = std::move(rhs); return *this; }
inline OrderUnitPair& operator=( OrderUnitPair&& rhs ) { this->unit = std::move(rhs.unit);this->order = rhs.order;rhs.order = COrder(); return *this; }
CUnit unit;
COrder order;

View file

@ -53,6 +53,18 @@ CUnit::CUnit(CUnit&& unit)
updateMyVisual();
}
CUnit& CUnit::operator=(CUnit&& unit)
{
unit_id = std::move(unit.unit_id) ;
team_id = std::move(unit.team_id) ;
player_id = std::move(unit.player_id) ;
unit_vis = std::move(unit.unit_vis) ;
dir = std::move(unit.dir) ;
pos = std::move(unit.pos) ;
return *this;
}
CUnit CUnit::getUnitFromVis( unitVis_c vis )
{
CUnit unit;

View file

@ -14,7 +14,7 @@ public:
CUnit();
CUnit(CUnit&& unit);
CUnit& operator=(CUnit&& unit) { *this = std::move(unit); return *this; }
CUnit& operator=(CUnit&& unit);
~CUnit() = default;
inline const unit_id_t& getID() const { return unit_id; }
@ -58,7 +58,7 @@ private:
unitVis_c updateMyVisual();
// Unit ID
const unit_id_t unit_id;
unit_id_t unit_id;
// Visual
unitVis_c unit_vis;