1
+ //
2
+ // Created by kifir on 12/1/24.
3
+ //
4
+
5
+ #include " pch.h"
6
+
7
+ #include " util/test_base.h"
8
+
9
+ namespace {
10
+ struct RpmConditionTestData {
11
+ const std::optional<float > rpm;
12
+ const bool expectedRpmCondition;
13
+ const char * const context;
14
+ };
15
+
16
+ class NitrousRpmConditionTest : public TestBase {
17
+ protected:
18
+ static constexpr uint16_t TEST_ACTIVATION_RPM = 239 ;
19
+ static constexpr uint16_t TEST_DEACTIVATION_RPM = 932 ;
20
+ static constexpr uint16_t TEST_DEACTIVATION_RPM_WINDOW = 17 ;
21
+
22
+ void checkRpmCondition (const std::vector<RpmConditionTestData>& testData);
23
+ void checkRpmConditionIsAlwaysUnsatisfied ();
24
+ };
25
+
26
+ void NitrousRpmConditionTest::checkRpmCondition (const std::vector<RpmConditionTestData>& testData) {
27
+ for (const RpmConditionTestData& item: testData) {
28
+ updateRpm (item.rpm );
29
+ EXPECT_EQ (engine->nitrousController .isNitrousRpmConditionSatisfied , item.expectedRpmCondition )
30
+ << item.context ;
31
+ }
32
+ }
33
+
34
+ void NitrousRpmConditionTest::checkRpmConditionIsAlwaysUnsatisfied () {
35
+ checkRpmCondition ({
36
+ { {0 }, false , " rpm = 0" },
37
+ { { TEST_ACTIVATION_RPM - 1 }, false , " rpm = TEST_ACTIVATION_RPM - 1" },
38
+ { { TEST_ACTIVATION_RPM }, false , " rpm = TEST_ACTIVATION_RPM" },
39
+ { { TEST_DEACTIVATION_RPM - 1 }, false , " rpm = TEST_DEACTIVATION_RPM - 1" },
40
+ { { TEST_DEACTIVATION_RPM }, false , " rpm = TEST_DEACTIVATION_RPM" },
41
+ {
42
+ { TEST_DEACTIVATION_RPM - TEST_DEACTIVATION_RPM_WINDOW },
43
+ false ,
44
+ " rpm = TEST_DEACTIVATION_RPM - TEST_DEACTIVATION_RPM_WINDOW"
45
+ },
46
+ {
47
+ { TEST_DEACTIVATION_RPM - TEST_DEACTIVATION_RPM_WINDOW - 1 },
48
+ false ,
49
+ " rpm = TEST_DEACTIVATION_RPM - TEST_DEACTIVATION_RPM_WINDOW - 1"
50
+ },
51
+ {
52
+ { TEST_DEACTIVATION_RPM - TEST_DEACTIVATION_RPM_WINDOW },
53
+ false ,
54
+ " rpm = TEST_DEACTIVATION_RPM - TEST_DEACTIVATION_RPM_WINDOW (again)"
55
+ },
56
+ {
57
+ { TEST_DEACTIVATION_RPM - 1 },
58
+ false ,
59
+ " rpm = TEST_DEACTIVATION_RPM - 1 (again)"
60
+ },
61
+ {
62
+ { TEST_DEACTIVATION_RPM },
63
+ false ,
64
+ " rpm = TEST_DEACTIVATION_RPM (again)"
65
+ },
66
+ });
67
+ }
68
+
69
+ TEST_F (NitrousRpmConditionTest, checkDefault) {
70
+ checkRpmConditionIsAlwaysUnsatisfied ();
71
+ }
72
+
73
+ TEST_F (NitrousRpmConditionTest, checkDefaultWithDisabledNitrousControl) {
74
+ setUpEngineConfiguration (EngineConfig ().setNitrousControlEnabled ({ false }));
75
+ checkRpmConditionIsAlwaysUnsatisfied ();
76
+ }
77
+
78
+ TEST_F (NitrousRpmConditionTest, checkDefaultWithEnabledNitrousControl) {
79
+ setUpEngineConfiguration (EngineConfig ().setNitrousControlEnabled ({ true }));
80
+ checkRpmConditionIsAlwaysUnsatisfied ();
81
+ }
82
+
83
+ TEST_F (NitrousRpmConditionTest, checkActivationAndDeactivation) {
84
+ setUpEngineConfiguration (
85
+ EngineConfig ()
86
+ .setNitrousControlEnabled ({ true })
87
+ .setNitrousActivationRpm ({ TEST_ACTIVATION_RPM })
88
+ .setNitrousDeactivationRpm ({ TEST_DEACTIVATION_RPM })
89
+ .setNitrousDeactivationRpmWindow ({ TEST_DEACTIVATION_RPM_WINDOW })
90
+ );
91
+
92
+ checkRpmCondition ({
93
+ { { 0 }, false , " rpm = 0" },
94
+ { { TEST_ACTIVATION_RPM - 1 }, false , " rpm = TEST_ACTIVATION_RPM - 1" },
95
+ { { TEST_ACTIVATION_RPM }, true , " rpm = TEST_ACTIVATION_RPM" },
96
+ { { TEST_DEACTIVATION_RPM - 1 }, true , " rpm = TEST_DEACTIVATION_RPM - 1" },
97
+ { { TEST_DEACTIVATION_RPM }, false , " rpm = TEST_DEACTIVATION_RPM" },
98
+ {
99
+ { TEST_DEACTIVATION_RPM - TEST_DEACTIVATION_RPM_WINDOW },
100
+ false ,
101
+ " rpm = TEST_DEACTIVATION_RPM - TEST_DEACTIVATION_RPM_WINDOW (still in window)"
102
+ },
103
+ {
104
+ { TEST_DEACTIVATION_RPM - TEST_DEACTIVATION_RPM_WINDOW - 1 },
105
+ true ,
106
+ " rpm = TEST_DEACTIVATION_RPM - TEST_DEACTIVATION_RPM_WINDOW - 1"
107
+ },
108
+ {
109
+ { TEST_DEACTIVATION_RPM - TEST_DEACTIVATION_RPM_WINDOW },
110
+ true ,
111
+ " rpm = TEST_DEACTIVATION_RPM - TEST_DEACTIVATION_RPM_WINDOW (returning to the window)"
112
+ },
113
+ {
114
+ { TEST_DEACTIVATION_RPM - 1 },
115
+ true ,
116
+ " rpm = TEST_DEACTIVATION_RPM - 1 (again)"
117
+ },
118
+ {
119
+ { TEST_DEACTIVATION_RPM },
120
+ false ,
121
+ " rpm = TEST_DEACTIVATION_RPM (again)"
122
+ },
123
+ });
124
+ }
125
+ }
0 commit comments