|
| 1 | +#include "dnd_character.h" |
| 2 | +#ifdef EXERCISM_TEST_SUITE |
| 3 | +#include <catch2/catch.hpp> |
| 4 | +#else |
| 5 | +#include "test/catch.hpp" |
| 6 | +#endif |
| 7 | + |
| 8 | +TEST_CASE("ability modifier for score 3 is -4", "[1e9ae1dc-35bd-43ba-aa08-e4b94c20fa37]") { |
| 9 | + REQUIRE(-4 == dnd_character::modifier(3)); |
| 10 | +} |
| 11 | + |
| 12 | +#if defined(EXERCISM_RUN_ALL_TESTS) |
| 13 | + |
| 14 | +TEST_CASE("ability modifier for score 4 is -3", "[cc9bb24e-56b8-4e9e-989d-a0d1a29ebb9c]") { |
| 15 | + REQUIRE(-3 == dnd_character::modifier(4)); |
| 16 | +} |
| 17 | + |
| 18 | +TEST_CASE("ability modifier for score 5 is -3", "[5b519fcd-6946-41ee-91fe-34b4f9808326]") { |
| 19 | + REQUIRE(-3 == dnd_character::modifier(5)); |
| 20 | +} |
| 21 | + |
| 22 | +TEST_CASE("ability modifier for score 6 is -2", "[dc2913bd-6d7a-402e-b1e2-6d568b1cbe21]") { |
| 23 | + REQUIRE(-2 == dnd_character::modifier(6)); |
| 24 | +} |
| 25 | + |
| 26 | +TEST_CASE("ability modifier for score 7 is -2", "[099440f5-0d66-4b1a-8a10-8f3a03cc499f]") { |
| 27 | + REQUIRE(-2 == dnd_character::modifier(7)); |
| 28 | +} |
| 29 | + |
| 30 | +TEST_CASE("ability modifier for score 8 is -1", "[cfda6e5c-3489-42f0-b22b-4acb47084df0]") { |
| 31 | + REQUIRE(-1 == dnd_character::modifier(8)); |
| 32 | +} |
| 33 | + |
| 34 | +TEST_CASE("ability modifier for score 9 is -1", "[c70f0507-fa7e-4228-8463-858bfbba1754]") { |
| 35 | + REQUIRE(-1 == dnd_character::modifier(9)); |
| 36 | +} |
| 37 | + |
| 38 | +TEST_CASE("ability modifier for score 10 is 0", "[6f4e6c88-1cd9-46a0-92b8-db4a99b372f7]") { |
| 39 | + REQUIRE(0 == dnd_character::modifier(10)); |
| 40 | +} |
| 41 | + |
| 42 | +TEST_CASE("ability modifier for score 11 is 0", "[e00d9e5c-63c8-413f-879d-cd9be9697097]") { |
| 43 | + REQUIRE(0 == dnd_character::modifier(11)); |
| 44 | +} |
| 45 | + |
| 46 | +TEST_CASE("ability modifier for score 12 is +1", "[eea06f3c-8de0-45e7-9d9d-b8cab4179715]") { |
| 47 | + REQUIRE(1 == dnd_character::modifier(12)); |
| 48 | +} |
| 49 | + |
| 50 | +TEST_CASE("ability modifier for score 13 is +1", "[9c51f6be-db72-4af7-92ac-b293a02c0dcd]") { |
| 51 | + REQUIRE(1 == dnd_character::modifier(13)); |
| 52 | +} |
| 53 | + |
| 54 | +TEST_CASE("ability modifier for score 14 is +2", "[94053a5d-53b6-4efc-b669-a8b5098f7762]") { |
| 55 | + REQUIRE(2 == dnd_character::modifier(14)); |
| 56 | +} |
| 57 | + |
| 58 | +TEST_CASE("ability modifier for score 15 is +2", "[8c33e7ca-3f9f-4820-8ab3-65f2c9e2f0e2]") { |
| 59 | + REQUIRE(2 == dnd_character::modifier(15)); |
| 60 | +} |
| 61 | + |
| 62 | +TEST_CASE("ability modifier for score 16 is +3", "[c3ec871e-1791-44d0-b3cc-77e5fb4cd33d]") { |
| 63 | + REQUIRE(3 == dnd_character::modifier(16)); |
| 64 | +} |
| 65 | + |
| 66 | +TEST_CASE("ability modifier for score 17 is +3", "[3d053cee-2888-4616-b9fd-602a3b1efff4]") { |
| 67 | + REQUIRE(3 == dnd_character::modifier(17)); |
| 68 | +} |
| 69 | + |
| 70 | +TEST_CASE("ability modifier for score 18 is +4", "[bafd997a-e852-4e56-9f65-14b60261faee]") { |
| 71 | + REQUIRE(4 == dnd_character::modifier(18)); |
| 72 | +} |
| 73 | + |
| 74 | +TEST_CASE("random ability is within range", "[4f28f19c-2e47-4453-a46a-c0d365259c14]") { |
| 75 | + int result{dnd_character::ability()}; |
| 76 | + //REQUIRE("score >= 3 && score <= 18" == dnd_character::ability()); |
| 77 | + REQUIRE((result >= 3 && result <= 18)); |
| 78 | +} |
| 79 | + |
| 80 | +TEST_CASE("random character is valid", "[385d7e72-864f-4e88-8279-81a7d75b04ad]") { |
| 81 | + dnd_character::Character character; |
| 82 | + REQUIRE((character.strength >= 3 && character.strength <= 18)); |
| 83 | + REQUIRE((character.dexterity >= 3 && character.dexterity <= 18)); |
| 84 | + REQUIRE((character.constitution >= 3 && character.constitution <= 18)); |
| 85 | + REQUIRE((character.intelligence >= 3 && character.intelligence <= 18)); |
| 86 | + REQUIRE((character.wisdom >= 3 && character.wisdom <= 18)); |
| 87 | + REQUIRE((character.charisma >= 3 && character.charisma <= 18)); |
| 88 | + REQUIRE(character.hitpoints == 10 + dnd_character::modifier(character.constitution)); |
| 89 | +} |
| 90 | + |
| 91 | +TEST_CASE("each ability is only calculated once", "[dca2b2ec-f729-4551-84b9-078876bb4808]") { |
| 92 | + dnd_character::Character character; |
| 93 | + REQUIRE(character.strength == character.strength); |
| 94 | + REQUIRE(character.dexterity == character.dexterity); |
| 95 | + REQUIRE(character.constitution == character.constitution); |
| 96 | + REQUIRE(character.intelligence == character.intelligence); |
| 97 | + REQUIRE(character.wisdom == character.wisdom); |
| 98 | + REQUIRE(character.charisma == character.charisma); |
| 99 | +} |
| 100 | + |
| 101 | +#endif |
0 commit comments