GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/test_lambda_monitor.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 97.4% 38 0 39
Functions: 85.7% 6 0 7
Branches: 31.8% 28 0 88
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 struct MockLambdaMonitor : public LambdaMonitorBase {
4 bool isGood = true;
5 6 bool isCurrentlyGood(float /*rpm*/, float /*load*/) const override {
6 6 return isGood;
7 }
8
9 bool isRestore = false;
10 3 bool restoreConditionsMet(float /*rpm*/, float /*load*/) const override {
11 3 return isRestore;
12 }
13
14 6 float getTimeout() const override {
15 // Timeout of 1 second
16 6 return 1;
17 }
18
19 MOCK_METHOD(float, getMaxAllowedLambda, (float rpm, float load), (const, override));
20 };
21
22 4 TEST(LambdaMonitor, Response) {
23
1/1
✓ Branch 2 taken 1 time.
1 MockLambdaMonitor mlm;
24
25 1 int startTime = 1e6;
26
1/1
✓ Branch 1 taken 1 time.
1 setTimeNowUs(startTime);
27
28 1 mlm.isGood = true;
29 1 mlm.isRestore = false;
30
1/1
✓ Branch 1 taken 1 time.
1 mlm.update(2000, 50);
31
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_TRUE(mlm.lambdaCurrentlyGood);
32
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_FALSE(mlm.isCut());
33
34 // now lambda will be bad, but we don't cut yet
35 1 mlm.isGood = false;
36
1/1
✓ Branch 1 taken 1 time.
1 mlm.update(2000, 50);
37
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(mlm.lambdaCurrentlyGood);
38
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_FALSE(mlm.isCut());
39
40 // 0.9 second later, still not cut
41
1/1
✓ Branch 1 taken 1 time.
1 setTimeNowUs(startTime + 0.9e6);
42
1/1
✓ Branch 1 taken 1 time.
1 mlm.update(2000, 50);
43
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(mlm.lambdaCurrentlyGood);
44
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_FALSE(mlm.isCut());
45
46 // 1.1 second later, cut!
47
1/1
✓ Branch 1 taken 1 time.
1 setTimeNowUs(startTime + 1.1e6);
48
1/1
✓ Branch 1 taken 1 time.
1 mlm.update(2000, 50);
49
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(mlm.lambdaCurrentlyGood);
50
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(mlm.isCut());
51
52 // Lambda goes back to normal, but restore conditions not met so we should stay cut
53 1 mlm.isGood = true;
54
1/1
✓ Branch 1 taken 1 time.
1 mlm.update(2000, 50);
55
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_TRUE(mlm.lambdaCurrentlyGood);
56
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(mlm.isCut());
57
58 1 mlm.isRestore = true;
59
1/1
✓ Branch 1 taken 1 time.
1 mlm.update(2000, 50);
60
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_TRUE(mlm.lambdaCurrentlyGood);
61
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_FALSE(mlm.isCut());
62 2 }
63