GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/actuators/test_gppwm.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 62 0 62
Functions: 100.0% 9 0 9
Branches: 78.0% 85 0 109
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 #include "gppwm_channel.h"
4 #include "gppwm.h"
5
6 #include "mocks.h"
7
8 using ::testing::InSequence;
9 using ::testing::StrictMock;
10
11 4 TEST(GpPwm, OutputWithPwm) {
12 1 GppwmChannel ch;
13
14 1 gppwm_channel cfg;
15
16
1/1
✓ Branch 2 taken 1 time.
1 StrictMock<MockPwm> pwm;
17
18 // Shouldn't throw with no config
19
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✗ Branch 31 not taken.
✗ Branch 40 not taken.
✗ Branch 41 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_NO_THROW(ch.setOutput(10));
20
21 {
22
1/1
✓ Branch 2 taken 1 time.
1 InSequence i;
23
4/4
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
1 EXPECT_CALL(pwm, setSimplePwmDutyCycle(0.25f));
24
4/4
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
1 EXPECT_CALL(pwm, setSimplePwmDutyCycle(0.75f));
25
4/4
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
1 EXPECT_CALL(pwm, setSimplePwmDutyCycle(0.0f));
26
4/4
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
1 EXPECT_CALL(pwm, setSimplePwmDutyCycle(1.0f));
27 1 }
28
29
1/1
✓ Branch 1 taken 1 time.
1 ch.init(true, &pwm, nullptr, nullptr, &cfg);
30
31 // Set the output - should set directly to PWM
32
1/1
✓ Branch 1 taken 1 time.
1 ch.setOutput(25.0f);
33
1/1
✓ Branch 1 taken 1 time.
1 ch.setOutput(75.0f);
34
35 // Test clamping behavior - should clamp to [0, 100]
36
1/1
✓ Branch 1 taken 1 time.
1 ch.setOutput(-10.0f);
37
1/1
✓ Branch 1 taken 1 time.
1 ch.setOutput(110.0f);
38 2 }
39
40 4 TEST(GpPwm, OutputOnOff) {
41 1 GppwmChannel ch;
42
43 1 gppwm_channel cfg;
44 1 cfg.onAboveDuty = 50;
45 1 cfg.offBelowDuty = 40;
46
47
1/1
✓ Branch 2 taken 1 time.
1 MockOutputPin pin;
48
49 {
50
1/1
✓ Branch 2 taken 1 time.
1 InSequence i;
51
52 // Rising edge test
53
5/5
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
1 EXPECT_CALL(pin, setValue(0, false));
54
5/5
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
1 EXPECT_CALL(pin, setValue(1, false));
55
5/5
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
1 EXPECT_CALL(pin, setValue(1, false));
56
57 // Falling edge test
58
5/5
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
1 EXPECT_CALL(pin, setValue(1, false));
59
5/5
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
1 EXPECT_CALL(pin, setValue(0, false));
60
5/5
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
1 EXPECT_CALL(pin, setValue(0, false));
61 1 }
62
63
1/1
✓ Branch 1 taken 1 time.
1 ch.init(false, nullptr, &pin, nullptr, &cfg);
64
65 // Test rising edge - these should output 0, 1, 1
66
1/1
✓ Branch 1 taken 1 time.
1 ch.setOutput(49.0f);
67
1/1
✓ Branch 1 taken 1 time.
1 ch.setOutput(51.0f);
68
1/1
✓ Branch 1 taken 1 time.
1 ch.setOutput(49.0f);
69
70 // Test falling edge - these should output 1, 0, 0
71
1/1
✓ Branch 1 taken 1 time.
1 ch.setOutput(41.0f);
72
1/1
✓ Branch 1 taken 1 time.
1 ch.setOutput(39.0f);
73
1/1
✓ Branch 1 taken 1 time.
1 ch.setOutput(41.0f);
74 2 }
75
76 4 TEST(GpPwm, TestGetOutput) {
77
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
78 1 GppwmChannel ch;
79
80 1 gppwm_channel cfg;
81 1 cfg.loadAxis = GPPWM_Tps;
82 1 cfg.rpmAxis = GPPWM_Rpm;
83 1 cfg.dutyIfError = 21.0f;
84
85
1/1
✓ Branch 2 taken 1 time.
1 MockVp3d table;
86
87
5/5
✓ Branch 2 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 9 taken 1 time.
✓ Branch 12 taken 1 time.
✓ Branch 16 taken 1 time.
3 EXPECT_CALL(table, getValue(1200, 35.0f))
88
2/2
✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
3 .WillRepeatedly([](float x, float tps) {
89 return tps;
90 });
91
92
1/1
✓ Branch 1 taken 1 time.
1 ch.init(false, nullptr, nullptr, &table, &cfg);
93
94
1/1
✓ Branch 1 taken 1 time.
1 Sensor::resetAllMocks();
95
96 // Should return dutyIfError
97
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(21.0f, ch.getOutput(-1).Result);
98
99 // Set TPS, should return tps value
100
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::Tps1, 35.0f);
101
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::Rpm, 1200);
102
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(35.0f, ch.getOutput(-1).Result);
103 2 }
104