GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/actuators/test_alternator.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 30 0 30
Functions: 100.0% 9 0 9
Branches: 56.8% 21 0 37
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 #include "alternator_controller.h"
4
5 using ::testing::StrictMock;
6 using ::testing::Return;
7
8 4 TEST(Alternator, observePlant) {
9
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
10
11
1/1
✓ Branch 2 taken 1 time.
1 AlternatorController dut;
12
13
1/1
✓ Branch 1 taken 1 time.
1 Sensor::setMockValue(SensorType::BatteryVoltage, 13);
14
3/7
✓ Branch 4 taken 1 time.
✓ Branch 9 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
1 EXPECT_EQ(13, dut.observePlant().value_or(0));
15 2 }
16
17 4 TEST(Alternator, openLoop) {
18
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
19
1/1
✓ Branch 2 taken 1 time.
1 AlternatorController dut;
20 1 engineConfiguration->acRelayAlternatorDutyAdder = 15;
21
22
3/7
✓ Branch 5 taken 1 time.
✓ Branch 9 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
1 EXPECT_EQ(dut.getOpenLoop(10).value_or(-1), 0);
23
24 // turn on AC!
25
1/1
✓ Branch 1 taken 1 time.
1 engine->module<AcController>()->acButtonState = true;
26
3/7
✓ Branch 5 taken 1 time.
✓ Branch 9 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
1 EXPECT_EQ(dut.getOpenLoop(10).value_or(-1), 15);
27 2 }
28
29 4 TEST(Alternator, ClosedLoop) {
30
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
31
32
1/1
✓ Branch 2 taken 1 time.
1 AlternatorController dut;
33
34 1 engineConfiguration->alternatorControl.pFactor = 1.5f;
35 1 engineConfiguration->alternatorControl.iFactor = 0;
36 1 engineConfiguration->alternatorControl.dFactor = 0;
37 1 engineConfiguration->alternatorControl.offset = 0;
38 // apply PID settings
39
1/1
✓ Branch 1 taken 1 time.
1 dut.update();
40
41 // Target of 30 with position 20 should yield positive duty, P=1.5 means 15% duty for 10% error
42
3/7
✓ Branch 5 taken 1 time.
✓ Branch 9 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
1 EXPECT_EQ(dut.getClosedLoop(30, 20).value_or(0), 15);
43 2 }
44