GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/sensor/resist_func.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 51 0 51
Functions: 100.0% 9 0 9
Branches: 31.9% 46 0 144
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 /*
2 * @author Matthew Kennedy, (c) 2019
3 */
4
5 #include "pch.h"
6
7 #include "resistance_func.h"
8
9 4 TEST(resistance, OutOfRange)
10 {
11 1 ResistanceFunc f;
12
1/1
✓ Branch 1 taken 1 time.
1 f.configure(5, 10000, false);
13
14 // Something in the middle should be valid
15 {
16
1/1
✓ Branch 2 taken 1 time.
1 auto r = f.convert(2.5f);
17
2/8
✗ 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.
✓ Branch 28 taken 1 time.
✗ Branch 29 not taken.
1 ASSERT_TRUE(r.Valid);
18 }
19
20 // Something near 0.05v should be valid
21 {
22
1/1
✓ Branch 2 taken 1 time.
1 auto r = f.convert(0.051f);
23
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(r.Valid);
24 }
25
26 // Something just under 0.05v should be invalid
27 {
28
1/1
✓ Branch 1 taken 1 time.
1 auto r = f.convert(0.049f);
29
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(r.Valid);
30 }
31
32 // Something near 0.98 * 5v should be valid
33 {
34
1/1
✓ Branch 2 taken 1 time.
1 auto r = f.convert(0.97f * 5);
35
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(r.Valid);
36 }
37
38 // Something just above 0.98 * 5v should be invalid
39 {
40
1/1
✓ Branch 1 taken 1 time.
1 auto r = f.convert(0.99f * 5);
41
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(r.Valid);
42 }
43 }
44
45 4 TEST(resistance, InRange)
46 {
47 1 ResistanceFunc f;
48
1/1
✓ Branch 1 taken 1 time.
1 f.configure(5, 10000, false);
49
50 // 1 volt -> 2500 ohms low side
51 {
52
1/1
✓ Branch 2 taken 1 time.
1 auto r = f.convert(1.0f);
53
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(r.Valid);
54
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(r.Value, 2500);
55 }
56
57 // 2 volt -> 6666.667 ohm ohms low side
58 // 20k/3 gives us an exact result
59 {
60
1/1
✓ Branch 2 taken 1 time.
1 auto r = f.convert(2.0f);
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(r.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(r.Value, 20000.0f / 3);
63 }
64
65 // 3 volt -> 15000 ohms low side
66 {
67
1/1
✓ Branch 2 taken 1 time.
1 auto r = f.convert(3.0f);
68
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(r.Valid);
69
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(r.Value, 15000);
70 }
71
72 // 4 volt -> 40000 ohms low side
73 {
74
1/1
✓ Branch 2 taken 1 time.
1 auto r = f.convert(4.0f);
75
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(r.Valid);
76
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(r.Value, 40000);
77 }
78 1 }
79
80 4 TEST(resistance, PulldownMode)
81 {
82 1 ResistanceFunc f;
83
1/1
✓ Branch 1 taken 1 time.
1 f.configure(5, 10000, true);
84
85 // 4 volt -> 2500 ohms high side
86 {
87
1/1
✓ Branch 2 taken 1 time.
1 auto r = f.convert(4.0f);
88
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(r.Valid);
89
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(r.Value, 2500);
90 }
91
92 // 3 volt -> 6666.667 ohm ohms high side
93 // 20k/3 gives us an exact result
94 {
95
1/1
✓ Branch 2 taken 1 time.
1 auto r = f.convert(3.0f);
96
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(r.Valid);
97
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(r.Value, 20000.0f / 3);
98 }
99
100 // 2 volt -> 15000 ohms high side
101 {
102
1/1
✓ Branch 2 taken 1 time.
1 auto r = f.convert(2.0f);
103
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(r.Valid);
104
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(r.Value, 15000);
105 }
106
107 // 1 volt -> 40000 ohms high side
108 {
109
1/1
✓ Branch 2 taken 1 time.
1 auto r = f.convert(1.0f);
110
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(r.Valid);
111
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(r.Value, 40000);
112 }
113 1 }
114