| 9 | } |
| 10 | |
| 11 | TEST(StatTest, Set) { |
| 12 | StatSet stats; |
| 13 | |
| 14 | stats.addStat("MaxHealth", 100.0f); |
| 15 | stats.addStat("HealthRegen", 0.0f); |
| 16 | stats.addStat("MaxEnergy", 100.0f); |
| 17 | stats.addStat("EnergyRegen", 0.0f); |
| 18 | |
| 19 | EXPECT_EQ(stats.statBaseValue("MaxHealth"), 100.0f); |
| 20 | EXPECT_EQ(stats.statEffectiveValue("MaxHealth"), 100.0f); |
| 21 | EXPECT_EQ(stats.statBaseValue("MaxEnergy"), 100.0f); |
| 22 | EXPECT_EQ(stats.statEffectiveValue("MaxEnergy"), 100.0f); |
| 23 | |
| 24 | stats.addResource("Health", String("MaxHealth"), String("HealthRegen")); |
| 25 | stats.setResourceValue("Health", 110.0f); |
| 26 | stats.addResource("Energy", String("MaxEnergy"), 0.0f); |
| 27 | stats.setResourceValue("Energy", 112.0f); |
| 28 | stats.addResource("Experience"); |
| 29 | |
| 30 | EXPECT_EQ(stats.resourceValue("Health"), 100.0f); |
| 31 | EXPECT_EQ(stats.resourceValue("Energy"), 100.0f); |
| 32 | EXPECT_EQ(stats.resourceValue("Experience"), 0.0f); |
| 33 | |
| 34 | stats.setStatBaseValue("MaxHealth", 200.0f); |
| 35 | EXPECT_TRUE(withinAmount(stats.resourceValue("Health"), 200.0f, 0.0001f)); |
| 36 | |
| 37 | stats.modifyResourceValue("Health", -100.0f); |
| 38 | EXPECT_TRUE(withinAmount(stats.resourceValue("Health"), 100.0f, 0.0001f)); |
| 39 | |
| 40 | stats.modifyResourceValue("Experience", -100.0f); |
| 41 | EXPECT_EQ(stats.resourceValue("Experience"), 0.0f); |
| 42 | stats.modifyResourceValue("Experience", 1000.0f); |
| 43 | EXPECT_TRUE(withinAmount(stats.resourceValue("Experience"), 1000.0f, 0.0001f)); |
| 44 | |
| 45 | stats.setStatBaseValue("HealthRegen", 100.0f); |
| 46 | stats.update(0.01f); |
| 47 | EXPECT_TRUE(withinAmount(stats.resourceValue("Health"), 101.0f, 0.0001f)); |
| 48 | stats.update(2.0f); |
| 49 | EXPECT_TRUE(withinAmount(stats.resourceValue("Health"), 200.0f, 0.0001f)); |
| 50 | stats.setStatBaseValue("HealthRegen", 0.0f); |
| 51 | |
| 52 | auto id = stats.addStatModifierGroup({StatValueModifier{"HealthRegen", -50.0f}}); |
| 53 | stats.update(1.0f); |
| 54 | EXPECT_TRUE(withinAmount(stats.resourceValue("Health"), 150.0f, 0.0001f)); |
| 55 | stats.removeStatModifierGroup(id); |
| 56 | stats.update(1.0f); |
| 57 | EXPECT_TRUE(withinAmount(stats.resourceValue("Health"), 150.0f, 0.0001f)); |
| 58 | |
| 59 | id = stats.addStatModifierGroup({StatBaseMultiplier{"MaxHealth", 1.1f}, |
| 60 | StatEffectiveMultiplier{"MaxHealth", 1.1f}, |
| 61 | StatEffectiveMultiplier{"MaxHealth", 1.2f}, |
| 62 | StatValueModifier{"MaxHealth", 50.0}}); |
| 63 | // 200 (base) + 20 (base perc mod) + 50 (value mod) = 270 ... |
| 64 | // * 1.1 (eff perc mod) * 1.2 (eff perc mod) = 356.4 |
| 65 | EXPECT_TRUE(withinAmount(stats.statEffectiveValue("MaxHealth"), 356.4f, 0.0001f)); |
| 66 | stats.removeStatModifierGroup(id); |
| 67 | |
| 68 | id = stats.addStatModifierGroup({StatBaseMultiplier{"MaxHealth", 1.5f}, StatBaseMultiplier{"MaxHealth", 1.5f}}); |
nothing calls this directly
no test coverage detected