No exception when trying to erase an object not in sheet
This commit is contained in:
parent
8a5b2dd927
commit
4f694d0bbe
3 changed files with 21 additions and 7 deletions
|
|
@ -153,6 +153,18 @@ TEST_CASE("[D] Pushing popping BillyObjects", "[pushpop][0]") {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("[D] Double erase no throw", "[pushpop][1]") {
|
||||||
|
BillyObjects gestionnaire{};
|
||||||
|
CharacterSheet sheet;
|
||||||
|
REQUIRE(sheet.get_objects().empty());
|
||||||
|
|
||||||
|
REQUIRE_NOTHROW(gestionnaire.insert_object(sheet, weapons::Sword));
|
||||||
|
REQUIRE(gestionnaire.insert_object(sheet, weapons::Sword));
|
||||||
|
|
||||||
|
REQUIRE_NOTHROW(gestionnaire.erase_object(sheet, weapons::Bow));
|
||||||
|
REQUIRE_FALSE(gestionnaire.erase_object(sheet, weapons::Bow));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("[D] Printing Billy's objects", "[printing]") {
|
TEST_CASE("[D] Printing Billy's objects", "[printing]") {
|
||||||
for (const auto &object: BillyObjects::all_objects) {
|
for (const auto &object: BillyObjects::all_objects) {
|
||||||
const std::unique_ptr<GenericObject> obj = test::get_obj(object);
|
const std::unique_ptr<GenericObject> obj = test::get_obj(object);
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ namespace character {
|
||||||
|
|
||||||
[[nodiscard]] bool insert_object(CharacterSheet &sheet, const billyEnums objType) noexcept;
|
[[nodiscard]] bool insert_object(CharacterSheet &sheet, const billyEnums objType) noexcept;
|
||||||
|
|
||||||
void erase_object(CharacterSheet &sheet, const billyEnums objToErase) noexcept;
|
bool erase_object(CharacterSheet &sheet, const billyEnums objToErase) noexcept;
|
||||||
|
|
||||||
[[nodiscard]] const std::plus<std::uint32_t> &get_plus_operation() const { return plus; }
|
[[nodiscard]] const std::plus<std::uint32_t> &get_plus_operation() const { return plus; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,9 +57,9 @@ namespace character {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BillyObjects::erase_object(CharacterSheet &sheet, const billyEnums objToErase) noexcept {
|
bool BillyObjects::erase_object(CharacterSheet &sheet, const billyEnums objToErase) noexcept {
|
||||||
if (!sheet.objects.empty()) {
|
if (const auto it = sheet.objects.find(objToErase); it != std::end(sheet.objects)) {
|
||||||
const billyObjects obj{ sheet.objects[objToErase].release() };
|
const billyObjects obj{ it->second.release() };
|
||||||
sheet.objects.erase(objToErase);
|
sheet.objects.erase(objToErase);
|
||||||
sheet.available_objects.insert(objToErase);
|
sheet.available_objects.insert(objToErase);
|
||||||
|
|
||||||
|
|
@ -69,13 +69,15 @@ namespace character {
|
||||||
auto &local_chance = static_cast<Characteristic &>(sheet.chance);
|
auto &local_chance = static_cast<Characteristic &>(sheet.chance);
|
||||||
|
|
||||||
std::visit(overloaded{
|
std::visit(overloaded{
|
||||||
[&](const weapons &arg) { --sheet.nb_weapons; },
|
[&](const weapons &) { --sheet.nb_weapons; },
|
||||||
[&](const equipments &arg) { --sheet.nb_equipments; },
|
[&](const equipments &) { --sheet.nb_equipments; },
|
||||||
[&](const tools &arg) { --sheet.nb_tools; }
|
[&](const tools &) { --sheet.nb_tools; }
|
||||||
},
|
},
|
||||||
objToErase);
|
objToErase);
|
||||||
change_carac(obj, sheet, local_habilete, local_adresse, local_endurance, local_chance, minus);
|
change_carac(obj, sheet, local_habilete, local_adresse, local_endurance, local_chance, minus);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BillyObjects::change_carac(const billyObjects &arg,
|
void BillyObjects::change_carac(const billyObjects &arg,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue