GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/nitrous_control/test_nitrous_arming.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 82 0 82
Functions: 100.0% 19 0 19
Branches: 84.4% 27 0 32
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 //
2 // Created by kifir on 11/27/24.
3 //
4
5 #include "pch.h"
6
7 #include "util/test_base.h"
8
9 namespace {
10 class NitrousArmingTest: public TestBase<> {
11 protected:
12 static constexpr switch_input_pin_e TEST_NITROUS_CONTROL_ARMING_PIN = Gpio::A13;
13 static constexpr lua_gauge_e TEST_NITROUS_LUA_GAUGE = LUA_GAUGE_3;
14 static constexpr SensorType TEST_NITROUS_LUA_GAUGE_SENSOR = SensorType::LuaGauge3;
15 static constexpr float TEST_NITROUS_LUA_GAUGE_ARMING_VALUE = 239.17;
16
17 static const EngineConfig TEST_ENGINE_CONFIG;
18
19 void checkArmingAfterPeriodicFastCallback(bool shouldBeArmed, const char* context);
20 };
21
22 const EngineConfig NitrousArmingTest::TEST_ENGINE_CONFIG = EngineConfig()
23 .setNitrousControlTriggerPin({ TEST_NITROUS_CONTROL_ARMING_PIN })
24 .setNitrousLuaGauge({ TEST_NITROUS_LUA_GAUGE })
25 .setNitrousLuaGaugeArmingValue({ TEST_NITROUS_LUA_GAUGE_ARMING_VALUE });
26
27 18 void NitrousArmingTest::checkArmingAfterPeriodicFastCallback(const bool shouldBeArmed, const char* const context) {
28 18 periodicSlowCallback();
29
30
3/8
✓ Branch 3 taken 18 times.
✓ Branch 6 taken 18 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 18 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
18 EXPECT_EQ(getModule<NitrousController>().isNitrousArmed, shouldBeArmed) << context;
31 18 }
32
33 4 TEST_F(NitrousArmingTest, checkDefault) {
34
1/1
✓ Branch 3 taken 1 time.
1 setUpEngineConfiguration(EngineConfig());
35
36 1 checkArmingAfterPeriodicFastCallback(false, "default");
37 1 }
38
39 4 TEST_F(NitrousArmingTest, checkDigitalSwitchInputArmingMethod) {
40
1/1
✓ Branch 2 taken 1 time.
2 setUpEngineConfiguration(
41
1/1
✓ Branch 1 taken 1 time.
2 TEST_ENGINE_CONFIG.clone()
42
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousControlEnabled({ true })
43
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousControlArmingMethod({ DIGITAL_SWITCH_INPUT })
44 );
45
46 1 checkArmingAfterPeriodicFastCallback(false, "default");
47
48 1 setMockState(TEST_NITROUS_CONTROL_ARMING_PIN, true);
49 1 checkArmingAfterPeriodicFastCallback(true, "arming pin is turned on");
50
51 1 setMockState(TEST_NITROUS_CONTROL_ARMING_PIN, false);
52 1 checkArmingAfterPeriodicFastCallback(false, "arming pin is turned off");
53 1 }
54
55 4 TEST_F(NitrousArmingTest, checkDigitalSwitchInputArmingMethodInverted) {
56
1/1
✓ Branch 2 taken 1 time.
2 setUpEngineConfiguration(
57
1/1
✓ Branch 1 taken 1 time.
2 TEST_ENGINE_CONFIG.clone()
58
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousControlEnabled({ true })
59
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousControlArmingMethod({ DIGITAL_SWITCH_INPUT })
60
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousControlTriggerPinMode({ PI_INVERTED_DEFAULT })
61 );
62
63 1 checkArmingAfterPeriodicFastCallback(true, "default");
64
65 1 setMockState(TEST_NITROUS_CONTROL_ARMING_PIN, true);
66 1 checkArmingAfterPeriodicFastCallback(false, "arming pin is turned on");
67
68 1 setMockState(TEST_NITROUS_CONTROL_ARMING_PIN, false);
69 1 checkArmingAfterPeriodicFastCallback(true, "arming pin is turned off");
70 1 }
71
72 4 TEST_F(NitrousArmingTest, checkDisabledNitrousControl) {
73
1/1
✓ Branch 2 taken 1 time.
2 setUpEngineConfiguration(
74
1/1
✓ Branch 1 taken 1 time.
2 TEST_ENGINE_CONFIG.clone()
75
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousControlEnabled({ false })
76
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousControlArmingMethod({ DIGITAL_SWITCH_INPUT })
77 );
78
79 1 checkArmingAfterPeriodicFastCallback(false, "default");
80
81 1 setMockState(TEST_NITROUS_CONTROL_ARMING_PIN, false);
82 1 checkArmingAfterPeriodicFastCallback(false, "arming pin is turned on");
83
84 1 setMockState(TEST_NITROUS_CONTROL_ARMING_PIN, false);
85 1 checkArmingAfterPeriodicFastCallback(false, "arming pin is turned off");
86 1 }
87
88 4 TEST_F(NitrousArmingTest, checkLuaGaugeLowerBound) {
89
1/1
✓ Branch 2 taken 1 time.
2 setUpEngineConfiguration(
90
1/1
✓ Branch 1 taken 1 time.
2 TEST_ENGINE_CONFIG.clone()
91
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousControlEnabled({ true })
92
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousControlArmingMethod({ LUA_GAUGE })
93
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousLuaGaugeMeaning({ LUA_GAUGE_LOWER_BOUND })
94 );
95
96 1 checkArmingAfterPeriodicFastCallback(false, "default");
97
98 1 Sensor::setMockValue(TEST_NITROUS_LUA_GAUGE_SENSOR, TEST_NITROUS_LUA_GAUGE_ARMING_VALUE - EPS5D);
99 1 checkArmingAfterPeriodicFastCallback(false, "under Lua arming value");
100
101 1 Sensor::setMockValue(TEST_NITROUS_LUA_GAUGE_SENSOR, TEST_NITROUS_LUA_GAUGE_ARMING_VALUE);
102 1 checkArmingAfterPeriodicFastCallback(true, "Lua arming value");
103
104 1 Sensor::setMockValue(TEST_NITROUS_LUA_GAUGE_SENSOR, TEST_NITROUS_LUA_GAUGE_ARMING_VALUE + EPS5D);
105 1 checkArmingAfterPeriodicFastCallback(true, "above Lua arming value");
106 1 }
107
108 4 TEST_F(NitrousArmingTest, checkLuaGaugeUpperBound) {
109
1/1
✓ Branch 2 taken 1 time.
2 setUpEngineConfiguration(
110
1/1
✓ Branch 1 taken 1 time.
2 TEST_ENGINE_CONFIG.clone()
111
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousControlEnabled({ true })
112
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousControlArmingMethod({ LUA_GAUGE })
113
1/1
✓ Branch 5 taken 1 time.
4 .setNitrousLuaGaugeMeaning({ LUA_GAUGE_UPPER_BOUND })
114 );
115
116 1 checkArmingAfterPeriodicFastCallback(false, "default");
117
118 1 Sensor::setMockValue(TEST_NITROUS_LUA_GAUGE_SENSOR, TEST_NITROUS_LUA_GAUGE_ARMING_VALUE - EPS5D);
119 1 checkArmingAfterPeriodicFastCallback(true, "under Lua arming value");
120
121 1 Sensor::setMockValue(TEST_NITROUS_LUA_GAUGE_SENSOR, TEST_NITROUS_LUA_GAUGE_ARMING_VALUE);
122 1 checkArmingAfterPeriodicFastCallback(true, "Lua arming value");
123
124 1 Sensor::setMockValue(TEST_NITROUS_LUA_GAUGE_SENSOR, TEST_NITROUS_LUA_GAUGE_ARMING_VALUE + EPS5D);
125 1 checkArmingAfterPeriodicFastCallback(false, "above Lua arming value");
126 1 }
127 }
128