GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/sensor/test_sensor_init.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 166 0 166
Functions: 100.0% 31 0 31
Branches: 34.8% 223 0 641
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 #include "unit_test_framework.h"
4 #include "init.h"
5 #include "functional_sensor.h"
6
7 22 static void postToFuncSensor(Sensor* s, float value) {
8 22 static_cast<FunctionalSensor*>(s)->postRawValue(value, getTimeNowNt());
9 22 }
10
11 #define EXPECT_POINT_VALID(s, raw, expect) \
12 {\
13 postToFuncSensor(s, raw); \
14 auto res = s->get(); \
15 EXPECT_TRUE(res.Valid); \
16 EXPECT_NEAR(res.Value, expect, EPS2D); \
17 }
18
19 #define EXPECT_POINT_INVALID(s, raw) \
20 {\
21 postToFuncSensor(s, raw); \
22 auto res = s->get(); \
23 EXPECT_FALSE(res.Valid); \
24 }
25
26 4 TEST(SensorInit, Tps) {
27
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
28
29 1 engineConfiguration->tpsMin = 200; // 1 volt
30 1 engineConfiguration->tpsMax = 800; // 4 volts
31
32
1/1
✓ Branch 1 taken 1 time.
1 initTps();
33
34 // Ensure the sensors were registered
35
1/1
✓ Branch 2 taken 1 time.
1 auto s = const_cast<Sensor*>(Sensor::getSensorOfType(SensorType::Tps1Primary));
36
3/8
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 1 time.
✗ Branch 27 not taken.
1 ASSERT_NE(nullptr, s);
37
38 // Test in range
39
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 1.0f, 0.0f); // closed throttle
40
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 2.5f, 50.0f); // half throttle
41
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 4.0f, 100.0f) // full throttle
42
43 // Test out of range
44
3/8
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
1 EXPECT_POINT_INVALID(s, 0.0f);
45
3/8
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
1 EXPECT_POINT_INVALID(s, 5.0f);
46
47 // Test that the passthru (redundant sensor) is working
48
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 2.5f, 50.0f);
49
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
1 EXPECT_NEAR(50.0f, Sensor::get(SensorType::Tps1).value_or(-1), EPS2D);
50 1 }
51
52 4 TEST(SensorInit, TpsValuesTooClose) {
53
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
54
55 // Should fail, 0.49 volts apart
56 1 engineConfiguration->tpsMin = 200; // 1.00 volt
57 1 engineConfiguration->tpsMax = 298; // 1.49 volts
58
5/23
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✗ Branch 30 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
✗ Branch 58 not taken.
✗ Branch 62 not taken.
✗ Branch 65 not taken.
✗ Branch 70 not taken.
✗ Branch 73 not taken.
1 EXPECT_FATAL_ERROR(initTps());
59
1/1
✓ Branch 1 taken 1 time.
1 Sensor::resetRegistry();
60
61 // Should fail, -0.49 volts apart
62 1 engineConfiguration->tpsMin = 298; // 1.49 volt
63 1 engineConfiguration->tpsMax = 200; // 1.00 volts
64
5/23
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✗ Branch 30 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
✗ Branch 58 not taken.
✗ Branch 62 not taken.
✗ Branch 65 not taken.
✗ Branch 70 not taken.
✗ Branch 73 not taken.
1 EXPECT_FATAL_ERROR(initTps());
65
1/1
✓ Branch 1 taken 1 time.
1 Sensor::resetRegistry();
66
67 // Should succeed, 0.51 volts apart
68 1 engineConfiguration->tpsMin = 200; // 1.00 volt
69 1 engineConfiguration->tpsMax = 302; // 1.51 volts
70
4/20
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✗ Branch 29 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 42 not taken.
✗ Branch 47 not taken.
✗ Branch 50 not taken.
✗ Branch 56 not taken.
✗ Branch 60 not taken.
✗ Branch 63 not taken.
✗ Branch 68 not taken.
✗ Branch 71 not taken.
1 EXPECT_NO_FATAL_ERROR(initTps());
71
1/1
✓ Branch 1 taken 1 time.
1 Sensor::resetRegistry();
72
73 // Should succeed, -0.51 volts apart
74 1 engineConfiguration->tpsMin = 302; // 1.51 volt
75 1 engineConfiguration->tpsMax = 200; // 1.00 volts
76
4/20
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✗ Branch 29 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 42 not taken.
✗ Branch 47 not taken.
✗ Branch 50 not taken.
✗ Branch 56 not taken.
✗ Branch 60 not taken.
✗ Branch 63 not taken.
✗ Branch 68 not taken.
✗ Branch 71 not taken.
1 EXPECT_NO_FATAL_ERROR(initTps());
77
1/1
✓ Branch 1 taken 1 time.
1 Sensor::resetRegistry();
78
79 // With no pin, it should be ok that they are the same
80 // Should succeed, -0.51 volts apart
81 1 engineConfiguration->tps1_1AdcChannel = EFI_ADC_NONE;
82 1 engineConfiguration->tpsMin = 200; // 1.00 volt
83 1 engineConfiguration->tpsMax = 200; // 1.00 volts
84
4/20
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✗ Branch 29 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 42 not taken.
✗ Branch 47 not taken.
✗ Branch 50 not taken.
✗ Branch 56 not taken.
✗ Branch 60 not taken.
✗ Branch 63 not taken.
✗ Branch 68 not taken.
✗ Branch 71 not taken.
1 EXPECT_NO_FATAL_ERROR(initTps());
85
1/1
✓ Branch 1 taken 1 time.
1 Sensor::resetRegistry();
86
87 // Test a random bogus pin index, shouldn't fail
88 1 engineConfiguration->tps1_1AdcChannel = static_cast<adc_channel_e>(EFI_ADC_ERROR);
89 1 engineConfiguration->tpsMin = 200; // 1.00 volt
90 1 engineConfiguration->tpsMax = 200; // 1.00 volt
91
4/20
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✗ Branch 29 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 42 not taken.
✗ Branch 47 not taken.
✗ Branch 50 not taken.
✗ Branch 56 not taken.
✗ Branch 60 not taken.
✗ Branch 63 not taken.
✗ Branch 68 not taken.
✗ Branch 71 not taken.
1 EXPECT_NO_FATAL_ERROR(initTps());
92
1/1
✓ Branch 1 taken 1 time.
1 Sensor::resetRegistry();
93
94 // de-init and re-init should also work without error
95
4/20
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✗ Branch 29 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 42 not taken.
✗ Branch 47 not taken.
✗ Branch 50 not taken.
✗ Branch 56 not taken.
✗ Branch 60 not taken.
✗ Branch 63 not taken.
✗ Branch 68 not taken.
✗ Branch 71 not taken.
1 EXPECT_NO_FATAL_ERROR(deinitTps());
96
4/20
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✗ Branch 29 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 42 not taken.
✗ Branch 47 not taken.
✗ Branch 50 not taken.
✗ Branch 56 not taken.
✗ Branch 60 not taken.
✗ Branch 63 not taken.
✗ Branch 68 not taken.
✗ Branch 71 not taken.
1 EXPECT_NO_FATAL_ERROR(initTps());
97 2 }
98
99 4 TEST(SensorInit, Pedal) {
100
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
101
102 1 engineConfiguration->throttlePedalPositionAdcChannel = EFI_ADC_0;
103 1 engineConfiguration->throttlePedalUpVoltage = 1;
104 1 engineConfiguration->throttlePedalWOTVoltage = 4;
105
106
1/1
✓ Branch 1 taken 1 time.
1 initTps();
107
108 // Ensure the sensors were registered
109
1/1
✓ Branch 2 taken 1 time.
1 auto s = const_cast<Sensor*>(Sensor::getSensorOfType(SensorType::AcceleratorPedalPrimary));
110
3/8
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 1 time.
✗ Branch 27 not taken.
1 ASSERT_NE(nullptr, s);
111
112 // Test in range
113
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 1.0f, 0.0f); // closed throttle
114
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 2.5f, 50.0f); // half throttle
115
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 4.0f, 100.0f) // full throttle
116
117 // Test out of range
118
3/8
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
1 EXPECT_POINT_INVALID(s, 0.0f);
119
3/8
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
1 EXPECT_POINT_INVALID(s, 5.0f);
120
121 // Test that the passthru (redundant sensor) is working
122
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 2.5f, 50.0f);
123
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
1 EXPECT_NEAR(50.0f, Sensor::get(SensorType::AcceleratorPedal).value_or(-1), EPS2D);
124 1 }
125
126 4 TEST(SensorInit, DriverIntentNoPedal) {
127
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
128
129 // We have no pedal - so we should get the TPS
130 1 engineConfiguration->throttlePedalPositionAdcChannel = EFI_ADC_NONE;
131
132
1/1
✓ Branch 1 taken 1 time.
1 initTps();
133
134
3/9
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 34 not taken.
1 ASSERT_TRUE(Sensor::hasSensor(SensorType::Tps1));
135 // Ensure a sensor got set
136
3/9
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 34 not taken.
1 ASSERT_TRUE(Sensor::hasSensor(SensorType::DriverThrottleIntent));
137
138 // Set values so we can identify which one got proxied
139
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::Tps1, 25);
140
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::AcceleratorPedal, 75);
141
142 // Should get the TPS
143
3/7
✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(Sensor::get(SensorType::DriverThrottleIntent).Value, 25);
144 1 }
145
146
147 4 TEST(SensorInit, DriverIntentWithPedal) {
148
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
149
150 // We have a pedal, so we should get it
151 1 engineConfiguration->throttlePedalPositionAdcChannel = EFI_ADC_0;
152
153
1/1
✓ Branch 1 taken 1 time.
1 initTps();
154
155 // Ensure a sensor got set
156
3/9
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 34 not taken.
1 ASSERT_TRUE(Sensor::hasSensor(SensorType::DriverThrottleIntent));
157
158 // Set values so we can identify which one got proxied
159
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::Tps1, 25);
160
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::AcceleratorPedal, 75);
161
162 // Should get the pedal
163
3/7
✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(Sensor::get(SensorType::DriverThrottleIntent).Value, 75);
164 1 }
165
166 4 TEST(SensorInit, FordTps) {
167
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
168
169 // pedal
170 1 engineConfiguration->throttlePedalPositionAdcChannel = EFI_ADC_0;
171 1 engineConfiguration->throttlePedalPositionSecondAdcChannel = EFI_ADC_1;
172
173 // tps:
174 1 engineConfiguration->tps1_1AdcChannel = EFI_ADC_2;
175 1 engineConfiguration->tps1_2AdcChannel = EFI_ADC_3;
176
177 1 engineConfiguration->useFordRedundantTps = true;
178 1 engineConfiguration->useFordRedundantPps = true;
179
180 // Should succeed, 0.51 volts apart
181 1 engineConfiguration->tpsMin = 200; // 1.00 volt
182 1 engineConfiguration->tpsMax = 302; // 1.51 volts
183
4/20
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✗ Branch 29 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 42 not taken.
✗ Branch 47 not taken.
✗ Branch 50 not taken.
✗ Branch 56 not taken.
✗ Branch 60 not taken.
✗ Branch 63 not taken.
✗ Branch 68 not taken.
✗ Branch 71 not taken.
1 EXPECT_NO_FATAL_ERROR(initTps());
184
1/1
✓ Branch 1 taken 1 time.
1 Sensor::resetRegistry();
185
186 // de-init and re-init should also work without error
187
4/20
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✗ Branch 29 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 42 not taken.
✗ Branch 47 not taken.
✗ Branch 50 not taken.
✗ Branch 56 not taken.
✗ Branch 60 not taken.
✗ Branch 63 not taken.
✗ Branch 68 not taken.
✗ Branch 71 not taken.
1 EXPECT_NO_FATAL_ERROR(deinitTps());
188
4/20
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 17 not taken.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✗ Branch 29 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 42 not taken.
✗ Branch 47 not taken.
✗ Branch 50 not taken.
✗ Branch 56 not taken.
✗ Branch 60 not taken.
✗ Branch 63 not taken.
✗ Branch 68 not taken.
✗ Branch 71 not taken.
1 EXPECT_NO_FATAL_ERROR(initTps());
189 2 }
190
191 4 TEST(SensorInit, OilPressure) {
192
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
193
194 1 engineConfiguration->oilPressure.hwChannel = EFI_ADC_0;
195 1 engineConfiguration->oilPressure.v1 = 1;
196 1 engineConfiguration->oilPressure.v2 = 4;
197 1 engineConfiguration->oilPressure.value1 = 0;
198 1 engineConfiguration->oilPressure.value2 = 1000;
199
200
1/1
✓ Branch 1 taken 1 time.
1 initFluidPressure();
201
202 // Ensure the sensors were registered
203
1/1
✓ Branch 2 taken 1 time.
1 auto s = const_cast<Sensor*>(Sensor::getSensorOfType(SensorType::OilPressure));
204
3/8
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 1 time.
✗ Branch 27 not taken.
1 ASSERT_NE(nullptr, s);
205
206 // Test in range
207
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 1.0f, 0.0f); // minimum
208
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 2.5f, 500.0f); // mid
209
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 4.0f, 1000.0f) // maximium
210
211 // Test out of range
212
3/8
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
1 EXPECT_POINT_INVALID(s, 0.0f);
213
3/8
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
1 EXPECT_POINT_INVALID(s, 5.0f);
214 1 }
215
216 4 TEST(SensorInit, Clt) {
217
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
218
219 // 2003 neon sensor
220 1 engineConfiguration->clt.config = {0, 30, 100, 32500, 7550, 700, 2700};
221 1 engineConfiguration->clt.adcChannel = EFI_ADC_6;
222
223
1/1
✓ Branch 1 taken 1 time.
1 initThermistors();
224
225 // Ensure the sensors were registered
226
1/1
✓ Branch 2 taken 1 time.
1 auto s = const_cast<Sensor*>(Sensor::getSensorOfType(SensorType::Clt));
227
3/8
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 1 time.
✗ Branch 27 not taken.
1 ASSERT_NE(nullptr, s);
228
229 // Test in range
230
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 4.61648f, 0.0f); // minimum - 0C
231
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 3.6829f, 30.0f); // mid - 30C
232
5/14
✓ Branch 1 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 time.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
2 EXPECT_POINT_VALID(s, 1.0294f, 100.0f) // maximium - 100C
233
234 // Test out of range
235
3/8
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
1 EXPECT_POINT_INVALID(s, 0.0f);
236
3/8
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
1 EXPECT_POINT_INVALID(s, 5.0f);
237 1 }
238
239 4 TEST(SensorInit, Lambda) {
240
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
241
242
1/1
✓ Branch 1 taken 1 time.
1 initLambda();
243
244
1/1
✓ Branch 2 taken 1 time.
1 auto s = Sensor::getSensorOfType(SensorType::Lambda1);
245
3/8
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 1 time.
✗ Branch 27 not taken.
1 ASSERT_NE(nullptr, s);
246 1 }
247
248 4 TEST(SensorInit, Map) {
249
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
250 1 engineConfiguration->map.sensor.hwChannel = EFI_ADC_4;
251
252
1/1
✓ Branch 1 taken 1 time.
1 initMap();
253
254
1/1
✓ Branch 2 taken 1 time.
1 auto s = Sensor::getSensorOfType(SensorType::Map);
255
3/8
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 1 time.
✗ Branch 27 not taken.
1 ASSERT_NE(nullptr, s);
256
257
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::MapFast, 25);
258
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::MapSlow, 75);
259
260 // Should prefer fast MAP
261
3/7
✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
1 EXPECT_FLOAT_EQ(25, Sensor::getOrZero(SensorType::Map));
262
263 // But when that fails, should return slow MAP
264
1/1
✓ Branch 1 taken 1 time.
1 Sensor::resetMockValue(SensorType::MapFast);
265
3/7
✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
1 EXPECT_FLOAT_EQ(75, Sensor::getOrZero(SensorType::Map));
266 1 }
267