diff --git a/Unit testing/billy_objects_tests.cpp b/Unit testing/billy_objects_tests.cpp index cfa875e..e91159b 100644 --- a/Unit testing/billy_objects_tests.cpp +++ b/Unit testing/billy_objects_tests.cpp @@ -105,3 +105,64 @@ TEST_CASE("[D] Deserialize full BillyObjects", "[deserialize][1]") { REQUIRE(std::holds_alternative(dummy_object.objects[2])); REQUIRE(std::get(dummy_object.objects[2]) == equipments::MedicKit); } + +TEST_CASE("[D] Pushing popping BillyObjects", "[pushpop][0]") { + constexpr std::array all_objects{ + weapons::Sword, + weapons::Lance, + weapons::Morgenstern, + weapons::Bow, + equipments::Chainmail, + equipments::CookingPot, + equipments::PamphletTourist, + equipments::MedicKit, + tools::Fourche, + tools::Dagger, + tools::RockClimbingKit, + tools::SackOfGrain, + }; + + BillyObjects gestionnaire{}; + CharacterSheet sheet; + REQUIRE(sheet.get_objects().empty()); + + REQUIRE_NOTHROW(gestionnaire.push_object(weapons::Sword, sheet)); + REQUIRE_FALSE(sheet.get_objects().empty()); + REQUIRE(std::holds_alternative(sheet.get_objects().back())); + REQUIRE(std::get(sheet.get_objects().back()) == weapons::Sword); + + REQUIRE_NOTHROW(gestionnaire.pop_object(sheet)); + REQUIRE(sheet.get_objects().empty()); + + for (std::size_t j = 0; j < all_objects.size(); j += 3) { + for (std::size_t i = 0; i < 3; ++i) { + REQUIRE_NOTHROW(gestionnaire.push_object(all_objects[i + j], sheet)); + } + REQUIRE_FALSE(sheet.get_objects().empty()); + + for (std::size_t i = 0; i < 3; ++i) { + REQUIRE_NOTHROW(gestionnaire.pop_object(sheet)); + } + REQUIRE(sheet.get_objects().empty()); + } +} + +TEST_CASE("[D] Printing Billy's objects", "[printing]") { + constexpr std::array all_objects{ + weapons::Sword, + weapons::Lance, + weapons::Morgenstern, + weapons::Bow, + equipments::Chainmail, + equipments::CookingPot, + equipments::PamphletTourist, + equipments::MedicKit, + tools::Fourche, + tools::Dagger, + tools::RockClimbingKit, + tools::SackOfGrain, + }; + for (const auto &object: all_objects) { + REQUIRE_NOTHROW(BillyObjects::billy_object_to_string(object)); + } +} diff --git a/src/billy_objects.cpp b/src/billy_objects.cpp index 4017f58..872649a 100644 --- a/src/billy_objects.cpp +++ b/src/billy_objects.cpp @@ -229,9 +229,6 @@ namespace character { case toolsHash: billy.push_back(static_cast(value)); break; - default: - SPDLOG_CRITICAL("Deserialize billy objects error, wrong hash."); - throw std::runtime_error("Deserialize billy objects error, wrong hash."); } } }