MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / TEST

Function TEST

source/test/stat_test.cpp:11–83  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9}
10
11TEST(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}});

Callers

nothing calls this directly

Calls 14

StringClass · 0.85
withinAmountFunction · 0.85
addStatMethod · 0.80
statBaseValueMethod · 0.80
statEffectiveValueMethod · 0.80
addResourceMethod · 0.80
setResourceValueMethod · 0.80
resourceValueMethod · 0.80
setStatBaseValueMethod · 0.80
modifyResourceValueMethod · 0.80
isEffectiveStatMethod · 0.80
updateMethod · 0.45

Tested by

no test coverage detected