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 |