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