GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/sensor/mock_sensor.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 58 0 58
Functions: 100.0% 15 0 15
Branches: 30.8% 33 0 107
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 class SensorMocking : public ::testing::Test {
4 protected:
5 MockSensor realSensor;
6
7 4 SensorMocking()
8
1/1
✓ Branch 2 taken 4 times.
4 : realSensor(SensorType::Clt) {}
9
10 4 void SetUp() override {
11 4 Sensor::resetRegistry();
12
3/9
✓ Branch 3 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 4 times.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 4 times.
✗ Branch 34 not taken.
4 ASSERT_TRUE(realSensor.Register());
13 }
14
15 4 void TearDown() override {
16 4 Sensor::resetRegistry();
17 4 }
18 };
19
20 4 TEST_F(SensorMocking, MockSensor) {
21 // Set a value on the "real" sensor
22 1 realSensor.set(25.0f);
23
24 // And expect to see it
25 {
26
1/1
✓ Branch 2 taken 1 time.
1 auto result = Sensor::get(SensorType::Clt);
27
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(result.Valid);
28
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(result.Value, 25.0f);
29 }
30
31 // Now set a mock value
32 1 Sensor::setMockValue(SensorType::Clt, 37.0f);
33
34 // And expect to see that
35 {
36
1/1
✓ Branch 2 taken 1 time.
1 auto result = Sensor::get(SensorType::Clt);
37
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(result.Valid);
38
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(result.Value, 37.0f);
39 }
40 1 }
41
42 4 TEST_F(SensorMocking, ResetOne) {
43 // Set a value on the "real" sensor
44 1 realSensor.set(13.0f);
45
46 // Now set a mock value
47 1 Sensor::setMockValue(SensorType::Clt, 21.0f);
48
49 // Expect to see the mock value
50 {
51
1/1
✓ Branch 2 taken 1 time.
1 auto result = Sensor::get(SensorType::Clt);
52
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(result.Valid);
53
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(result.Value, 21.0f);
54 }
55
56 // Reset that mock - it should go to the real value
57 1 Sensor::resetMockValue(SensorType::Clt);
58
59 {
60
1/1
✓ Branch 2 taken 1 time.
1 auto result = Sensor::get(SensorType::Clt);
61
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(result.Valid);
62
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(result.Value, 13.0f);
63 }
64 1 }
65
66 4 TEST_F(SensorMocking, ResetAll) {
67 // Set a value on the "real" sensor
68 1 realSensor.set(46.0f);
69
70 // Now set a mock value
71 1 Sensor::setMockValue(SensorType::Clt, 33.0f);
72
73 // Expect to see the mock value
74 {
75
1/1
✓ Branch 2 taken 1 time.
1 auto result = Sensor::get(SensorType::Clt);
76
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(result.Valid);
77
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(result.Value, 33.0f);
78 }
79
80 // Reset all mocks - it should go to the real value
81 1 Sensor::resetAllMocks();
82
83 {
84
1/1
✓ Branch 2 taken 1 time.
1 auto result = Sensor::get(SensorType::Clt);
85
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(result.Valid);
86
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(result.Value, 46.0f);
87 }
88 1 }
89
90 4 TEST_F(SensorMocking, ResetWithResetRegistry) {
91 // Set a value on the "real" sensor
92 1 realSensor.set(46.0f);
93
94 // Now set a mock value
95 1 Sensor::setMockValue(SensorType::Clt, 33.0f);
96
97 // Expect to see the mock value
98 {
99
1/1
✓ Branch 2 taken 1 time.
1 auto result = Sensor::get(SensorType::Clt);
100
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(result.Valid);
101
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(result.Value, 33.0f);
102 }
103
104 // Reset registry - including mocks
105 1 Sensor::resetRegistry();
106
107 {
108 1 auto result = Sensor::get(SensorType::Clt);
109
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);
110 }
111 1 }
112
113