GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/sensor/basic_sensor.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 80 0 80
Functions: 100.0% 26 0 26
Branches: 34.3% 85 0 248
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 #include "stored_value_sensor.h"
4
5 class SensorBasic : public ::testing::Test {
6 protected:
7 9 void SetUp() override {
8 9 Sensor::resetRegistry();
9 9 }
10
11 9 void TearDown() override {
12 9 Sensor::resetRegistry();
13 9 }
14 };
15
16 4 TEST_F(SensorBasic, Registry) {
17 // Create a sensor - but don't register it
18
1/1
✓ Branch 2 taken 1 time.
1 MockSensor dut(SensorType::Tps1);
19
20 // Expect not to find it
21 {
22
1/1
✓ Branch 1 taken 1 time.
1 auto s = Sensor::getSensorOfType(SensorType::Tps1);
23
1/6
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
1 EXPECT_FALSE(s);
24 }
25
26 // Register the sensor now
27
2/7
✓ 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.
1 EXPECT_TRUE(dut.Register());
28
29 // It should now get us back our sensor
30 {
31
1/1
✓ Branch 2 taken 1 time.
1 auto s = Sensor::getSensorOfType(SensorType::Tps1);
32
2/6
✓ 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.
1 EXPECT_EQ(s, &dut);
33 }
34
35 // Reset - it should now be gone!
36
1/1
✓ Branch 1 taken 1 time.
1 Sensor::resetRegistry();
37
38 {
39
1/1
✓ Branch 1 taken 1 time.
1 auto s = Sensor::getSensorOfType(SensorType::Tps1);
40
1/6
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
1 EXPECT_FALSE(s);
41 }
42 1 }
43
44 4 TEST_F(SensorBasic, DoubleRegister) {
45 // Create a sensor, register it
46
1/1
✓ Branch 2 taken 1 time.
1 MockSensor dut(SensorType::Tps1);
47
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(dut.Register());
48
49 // And then do it again!
50
1/1
✓ Branch 2 taken 1 time.
1 MockSensor dut2(SensorType::Tps1);
51
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 23 not taken.
✗ Branch 28 not taken.
✗ Branch 31 not taken.
✓ Branch 38 taken 1 time.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 45 not taken.
✗ Branch 50 not taken.
✗ Branch 53 not taken.
✗ Branch 59 not taken.
✗ Branch 63 not taken.
✗ Branch 66 not taken.
✗ Branch 71 not taken.
✗ Branch 74 not taken.
1 EXPECT_FATAL_ERROR(dut2.Register());
52
53 // Make sure that we get the first DUT back - not the second
54
1/1
✓ Branch 2 taken 1 time.
1 auto shouldBeDut = Sensor::getSensorOfType(SensorType::Tps1);
55
2/6
✓ 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.
1 EXPECT_EQ(shouldBeDut, &dut);
56
2/6
✓ 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.
1 EXPECT_NE(shouldBeDut, &dut2);
57 }
58
59 4 TEST_F(SensorBasic, DoubleRegisterSameSensor) {
60 // Create a sensor, register it
61
1/1
✓ Branch 2 taken 1 time.
1 MockSensor dut(SensorType::Tps1);
62
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(dut.Register());
63
64 // And then do it again!
65
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(dut.Register());
66
67 // Make sure that we get the first DUT back - not the second
68
1/1
✓ Branch 2 taken 1 time.
1 auto shouldBeDut = Sensor::getSensorOfType(SensorType::Tps1);
69
2/6
✓ 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.
1 EXPECT_EQ(shouldBeDut, &dut);
70 }
71
72 4 TEST_F(SensorBasic, SensorNotInitialized) {
73 1 auto result = Sensor::get(SensorType::Clt);
74
75
1/6
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
1 EXPECT_FALSE(result.Valid);
76 1 }
77
78 4 TEST_F(SensorBasic, DoubleUnRegister) {
79 // Create a sensor, register it
80
1/1
✓ Branch 2 taken 1 time.
1 MockSensor dut(SensorType::Tps1);
81
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(dut.Register());
82
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::Tps1, 25);
83
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::get(SensorType::Tps1).Valid);
84
85
1/1
✓ Branch 1 taken 1 time.
1 dut.unregister();
86
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::get(SensorType::Tps1).Valid);// huh? is that a bug?
87
88
1/1
✓ Branch 1 taken 1 time.
1 dut.unregister();
89
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::get(SensorType::Tps1).Valid);// huh? is that a bug?
90 }
91
92 4 TEST_F(SensorBasic, SensorInitialized) {
93
1/1
✓ Branch 2 taken 1 time.
1 MockSensor dut(SensorType::Clt);
94
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(dut.Register());
95
96 // Check before init - make sure it isn't set yet
97
1/1
✓ Branch 1 taken 1 time.
1 auto result = Sensor::get(SensorType::Clt);
98
2/8
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
1 ASSERT_FALSE(result.Valid);
99
100 // Set a value
101
1/1
✓ Branch 1 taken 1 time.
1 dut.set(75);
102
103 // Make sure now it's set
104
1/1
✓ Branch 2 taken 1 time.
1 auto result2 = Sensor::get(SensorType::Clt);
105
1/6
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 12 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_TRUE(result2.Valid);
106
2/6
✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
1 EXPECT_FLOAT_EQ(result2.Value, 75);
107 }
108
109 4 TEST_F(SensorBasic, HasSensor) {
110
1/1
✓ Branch 2 taken 1 time.
1 MockSensor dut(SensorType::Clt);
111
112 // Check that we don't have the sensor
113
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_FALSE(Sensor::hasSensor(SensorType::Clt));
114
115 // Register it
116
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(dut.Register());
117
118 // Now we should!
119
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::Clt));
120
121 // Check that we can have the sensor report that it's missing
122 1 dut.setHasSensor(false);
123
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_FALSE(Sensor::hasSensor(SensorType::Clt));
124 }
125
126 4 TEST_F(SensorBasic, HasSensorMock) {
127 // Check that we don't have the sensor
128
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_FALSE(Sensor::hasSensor(SensorType::Clt));
129
130 // Mock the sensor - this should count as having it
131 1 Sensor::setMockValue(SensorType::Clt, 25);
132
133 // Now we should!
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::Clt));
135 }
136
137
138 TEST_F(SensorBasic, FindByName) {
139 ASSERT_EQ(SensorType::Clt, findSensorTypeByName("Clt"));
140 ASSERT_EQ(SensorType::Clt, findSensorTypeByName("cLT"));
141 }
142