GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/nitrous_control/test_nitrous_speed_condition.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 35 0 35
Functions: 100.0% 13 0 13
Branches: 81.5% 22 0 27
Decisions: 100.0% 2 - 2

Line Branch Decision Exec Source
1 //
2 // Created by kifir on 11/28/24.
3 //
4
5 #include "pch.h"
6
7 #include "engine_configuration_defaults.h"
8
9 #include "util/test_base.h"
10
11 namespace {
12 struct SpeedConditionTestData {
13 const std::optional<float> speed;
14 const bool expectedSpeedCondition;
15 const char* const context;
16 };
17
18 class NitrousSpeedConditionTest : public TestBase<> {
19 protected:
20 static constexpr uint16_t TEST_MIN_VEHICLE_SPEED = 33;
21
22 void checkSpeedCondition(const std::vector<SpeedConditionTestData>& testData);
23 };
24
25 4 void NitrousSpeedConditionTest::checkSpeedCondition(const std::vector<SpeedConditionTestData>& testData) {
26
2/2
✓ Branch 7 taken 20 times.
✓ Branch 8 taken 4 times.
2/2
✓ Decision 'true' taken 20 times.
✓ Decision 'false' taken 4 times.
24 for (const SpeedConditionTestData& item: testData) {
27
1/1
✓ Branch 1 taken 20 times.
20 updateVehicleSpeed(item.speed, &TestBase::periodicSlowCallback);
28
3/7
✓ Branch 3 taken 20 times.
✓ Branch 6 taken 20 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 20 times.
✗ Branch 14 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
20 EXPECT_EQ(getModule<NitrousController>().isNitrousSpeedCondition, item.expectedSpeedCondition)
29
0/1
✗ Branch 1 not taken.
20 << item.context;
30 }
31 4 }
32
33 4 TEST_F(NitrousSpeedConditionTest, checkDefault) {
34
2/2
✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
3 checkSpeedCondition({
35 { {}, false, "default" },
36 { { 0.0f }, false, "0.0" },
37 { { TEST_MIN_VEHICLE_SPEED - EPS5D }, false, "TEST_MIN_VEHICLE_SPEED - EPS5D" },
38 { { TEST_MIN_VEHICLE_SPEED }, false, "TEST_MIN_VEHICLE_SPEED" },
39 { { TEST_MIN_VEHICLE_SPEED + EPS5D }, false, "TEST_MIN_VEHICLE_SPEED + EPS5D" },
40 });
41 1 }
42
43 4 TEST_F(NitrousSpeedConditionTest, checkDefaultWithDisabledNitrousControl) {
44
2/2
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
1 setUpEngineConfiguration(EngineConfig().setNitrousControlEnabled({ false }));
45
2/2
✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
3 checkSpeedCondition({
46 { {}, false, "default" },
47 { { 0.0f }, false, "0.0" },
48 { { TEST_MIN_VEHICLE_SPEED - EPS5D }, false, "TEST_MIN_VEHICLE_SPEED - EPS5D" },
49 { { TEST_MIN_VEHICLE_SPEED }, false, "TEST_MIN_VEHICLE_SPEED" },
50 { { TEST_MIN_VEHICLE_SPEED + EPS5D }, false, "TEST_MIN_VEHICLE_SPEED + EPS5D" },
51 });
52 1 }
53
54 4 TEST_F(NitrousSpeedConditionTest, checkZeroMinimumSpeed) {
55
1/1
✓ Branch 2 taken 1 time.
2 setUpEngineConfiguration(
56 1 EngineConfig()
57
1/1
✓ Branch 6 taken 1 time.
3 .setNitrousControlEnabled({ true })
58
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousMinimumVehicleSpeed(0.0f)
59 );
60
2/2
✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
3 checkSpeedCondition({
61 { {}, true, "default" },
62 { { 0.0f }, true, "0.0" },
63 { { TEST_MIN_VEHICLE_SPEED - EPS5D }, true, "TEST_MIN_VEHICLE_SPEED - EPS5D" },
64 { { TEST_MIN_VEHICLE_SPEED }, true, "TEST_MIN_VEHICLE_SPEED" },
65 { { TEST_MIN_VEHICLE_SPEED + EPS5D }, true, "TEST_MIN_VEHICLE_SPEED + EPS5D" },
66 });
67 1 }
68
69 4 TEST_F(NitrousSpeedConditionTest, checkMinimumSpeed) {
70
1/1
✓ Branch 2 taken 1 time.
2 setUpEngineConfiguration(
71 1 EngineConfig()
72
1/1
✓ Branch 6 taken 1 time.
3 .setNitrousControlEnabled({ true })
73
1/1
✓ Branch 4 taken 1 time.
4 .setNitrousMinimumVehicleSpeed({ TEST_MIN_VEHICLE_SPEED })
74 );
75
2/2
✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
3 checkSpeedCondition({
76 { {}, false, "default" },
77 { { 0.0f }, false, "0.0" },
78 { { TEST_MIN_VEHICLE_SPEED - EPS5D }, false, "TEST_MIN_VEHICLE_SPEED - EPS5D" },
79 { { TEST_MIN_VEHICLE_SPEED }, true, "TEST_MIN_VEHICLE_SPEED" },
80 { { TEST_MIN_VEHICLE_SPEED + EPS5D }, true, "TEST_MIN_VEHICLE_SPEED + EPS5D" },
81 });
82 1 }
83 }
84