GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/actuators/test_tacho.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 22 0 22
Functions: 100.0% 3 0 3
Branches: 50.0% 21 0 42
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 extern float getTachFreq(void);
4 extern float getTachDuty(void);
5
6 4 TEST(Actuators, Tachometer) {
7 // This engine has a tach pin set - we need that
8 2 EngineTestHelper eth(engine_type_e::MAZDA_MIATA_NB2, [](engine_configuration_s* engineConfiguration) {
9 engineConfiguration->tachOutputPin = Gpio::E8; // arbitrary tachometer
10
1/1
✓ Branch 3 taken 1 time.
1 });
11
12 // We don't actually care about ign/inj at all, just tach
13 1 engineConfiguration->isInjectionEnabled = false;
14 1 engineConfiguration->isIgnitionEnabled = false;
15
16 // Configure tach pulse count
17 // 5 PPR, 25% duty
18 1 engineConfiguration->tachPulsePerRev = 4;
19 1 engineConfiguration->tachPulseDuractionMs = 0.5f;
20 1 engineConfiguration->tachPulseDurationAsDutyCycle = true;
21
22 // Set predictable trigger settings
23 1 engineConfiguration->trigger.type = trigger_type_e::TT_TOOTHED_WHEEL;
24 1 engineConfiguration->trigger.customTotalToothCount = 8;
25 1 engineConfiguration->trigger.customSkippedToothCount = 0;
26
1/1
✓ Branch 1 taken 1 time.
1 setCamOperationMode();
27
1/1
✓ Branch 1 taken 1 time.
1 eth.applyTriggerWaveform();
28
29 // get the engine running - 6 revolutions
30
1/1
✓ Branch 1 taken 1 time.
1 eth.fireTriggerEvents(48);
31
32 // ensure engine speed
33
4/10
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
1 ASSERT_EQ(1500, Sensor::getOrZero(SensorType::Rpm)) << "RPM";
34
4/9
✓ 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.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(engine->triggerCentral.triggerState.getShaftSynchronized(), true);
35
36 // Poke the fast callback to update the tach
37
1/1
✓ Branch 1 taken 1 time.
1 engine->periodicFastCallback();
38
39
4/9
✓ Branch 3 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.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(100, getTachFreq());
40
4/9
✓ Branch 3 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.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(0.5, getTachDuty());
41 1 }
42