Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | #include "pch.h" | |||
2 | ||||
3 | #include "dc_motor.h" | |||
4 | ||||
5 | using ::testing::InSequence; | |||
6 | using ::testing::NiceMock; | |||
7 | using ::testing::StrictMock; | |||
8 | ||||
9 | 4 | TEST(DcMotor, Disable) { | ||
10 |
1/1✓ Branch 2 taken 1 time.
|
1 | StrictMock<MockOutputPin> dpin; | |
11 | ||||
12 |
5/5✓ Branch 2 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 9 taken 1 time.
✓ Branch 12 taken 1 time.
✓ Branch 16 taken 1 time.
|
3 | EXPECT_CALL(dpin, setValue(1, testing::_)) | |
13 |
1/1✓ Branch 3 taken 1 time.
|
3 | .Times(2); // happens twice - once for initial disable, once for set(0) | |
14 | ||||
15 |
1/1✓ Branch 2 taken 1 time.
|
1 | TwoPinDcMotor dut(dpin); | |
16 | 2 | } | ||
17 | ||||
18 | 4 | TEST(DcMotor, Disable2) { | ||
19 |
1/1✓ Branch 2 taken 1 time.
|
1 | StrictMock<MockOutputPin> dpin; | |
20 | ||||
21 |
6/6✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
✓ Branch 21 taken 1 time.
|
1 | EXPECT_CALL(dpin, setValue(1, testing::_)).Times(4); | |
22 | ||||
23 |
1/1✓ Branch 2 taken 1 time.
|
1 | TwoPinDcMotor dut(dpin); | |
24 | ||||
25 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.disable(nullptr); | |
26 | 2 | } | ||
27 | ||||
28 | 4 | TEST(DcMotor, Enable) { | ||
29 |
1/1✓ Branch 2 taken 1 time.
|
1 | StrictMock<MockOutputPin> dpin; | |
30 | ||||
31 | { | |||
32 |
1/1✓ Branch 2 taken 1 time.
|
1 | InSequence is; | |
33 | ||||
34 | // Construction disables | |||
35 |
6/6✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
✓ Branch 21 taken 1 time.
|
1 | EXPECT_CALL(dpin, setValue(1, testing::_)).Times(2); | |
36 | ||||
37 | // Then enable | |||
38 |
5/5✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
|
1 | EXPECT_CALL(dpin, setValue(0, testing::_)); | |
39 | 1 | } | ||
40 | ||||
41 |
1/1✓ Branch 2 taken 1 time.
|
1 | TwoPinDcMotor dut(dpin); | |
42 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.enable(); | |
43 | 2 | } | ||
44 | ||||
45 | 4 | TEST(DcMotor, SetUnconfigured) { | ||
46 |
1/1✓ Branch 2 taken 1 time.
|
1 | StrictMock<MockOutputPin> dpin; | |
47 |
6/6✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
✓ Branch 21 taken 1 time.
|
1 | EXPECT_CALL(dpin, setValue(1, testing::_)).Times(3); | |
48 | ||||
49 |
1/1✓ Branch 2 taken 1 time.
|
1 | TwoPinDcMotor dut(dpin); | |
50 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_FLOAT_EQ(dut.get(), 0); | |
51 |
4/20✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 18 not taken.
✗ Branch 23 not taken.
✗ Branch 27 not taken.
✗ Branch 30 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 43 not taken.
✗ Branch 48 not taken.
✗ Branch 51 not taken.
✗ Branch 57 not taken.
✗ Branch 61 not taken.
✗ Branch 64 not taken.
✗ Branch 69 not taken.
✗ Branch 72 not taken.
|
1 | EXPECT_NO_THROW(dut.set(0.5f)); | |
52 | ||||
53 | // Readback should work even without configuration | |||
54 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_FLOAT_EQ(dut.get(), 0.5f); | |
55 | 2 | } | ||
56 | ||||
57 | 4 | TEST(DcMotor, PwmEnablePinModePositive) { | ||
58 |
1/1✓ Branch 2 taken 1 time.
|
1 | NiceMock<MockOutputPin> dpin; | |
59 |
1/1✓ Branch 2 taken 1 time.
|
1 | TwoPinDcMotor dut(dpin); | |
60 | 1 | dut.setType(TwoPinDcMotor::ControlType::PwmEnablePin); | ||
61 | ||||
62 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockPwm enable; | |
63 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockPwm dir1; | |
64 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockPwm dir2; | |
65 | ||||
66 |
4/4✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
|
1 | EXPECT_CALL(enable, setSimplePwmDutyCycle(0.5f)); | |
67 |
4/4✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
|
1 | EXPECT_CALL(dir1, setSimplePwmDutyCycle(1)); | |
68 |
4/4✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
|
1 | EXPECT_CALL(dir2, setSimplePwmDutyCycle(0)); | |
69 | ||||
70 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.configure(enable, dir1, dir2, false); | |
71 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.set(0.5f); | |
72 | 2 | } | ||
73 | ||||
74 | 4 | TEST(DcMotor, PwmEnablePinModeNegative) { | ||
75 |
1/1✓ Branch 2 taken 1 time.
|
1 | NiceMock<MockOutputPin> dpin; | |
76 |
1/1✓ Branch 2 taken 1 time.
|
1 | TwoPinDcMotor dut(dpin); | |
77 | 1 | dut.setType(TwoPinDcMotor::ControlType::PwmEnablePin); | ||
78 | ||||
79 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockPwm enable; | |
80 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockPwm dir1; | |
81 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockPwm dir2; | |
82 | ||||
83 | ||||
84 |
4/4✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
|
1 | EXPECT_CALL(enable, setSimplePwmDutyCycle(0.5f)); | |
85 |
4/4✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
|
1 | EXPECT_CALL(dir1, setSimplePwmDutyCycle(0)); | |
86 |
4/4✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
|
1 | EXPECT_CALL(dir2, setSimplePwmDutyCycle(1)); | |
87 | ||||
88 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.configure(enable, dir1, dir2, false); | |
89 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.set(-0.5f); | |
90 | 2 | } | ||
91 | ||||
92 | 4 | TEST(DcMotor, PwmDirectionPinsModePositive) { | ||
93 |
1/1✓ Branch 2 taken 1 time.
|
1 | NiceMock<MockOutputPin> dpin; | |
94 |
1/1✓ Branch 2 taken 1 time.
|
1 | TwoPinDcMotor dut(dpin); | |
95 | 1 | dut.setType(TwoPinDcMotor::ControlType::PwmDirectionPins); | ||
96 | ||||
97 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockPwm enable; | |
98 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockPwm dir1; | |
99 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockPwm dir2; | |
100 | ||||
101 | ||||
102 |
4/4✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
|
1 | EXPECT_CALL(enable, setSimplePwmDutyCycle(1)); | |
103 |
4/4✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
|
1 | EXPECT_CALL(dir1, setSimplePwmDutyCycle(0.5f)); | |
104 |
4/4✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
|
1 | EXPECT_CALL(dir2, setSimplePwmDutyCycle(0)); | |
105 | ||||
106 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.configure(enable, dir1, dir2, false); | |
107 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.set(0.5f); | |
108 | 2 | } | ||
109 | ||||
110 | 4 | TEST(DcMotor, PwmDirectionPinsModeNegative) { | ||
111 |
1/1✓ Branch 2 taken 1 time.
|
1 | NiceMock<MockOutputPin> dpin; | |
112 |
1/1✓ Branch 2 taken 1 time.
|
1 | TwoPinDcMotor dut(dpin); | |
113 | 1 | dut.setType(TwoPinDcMotor::ControlType::PwmDirectionPins); | ||
114 | ||||
115 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockPwm enable; | |
116 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockPwm dir1; | |
117 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockPwm dir2; | |
118 | ||||
119 | ||||
120 |
4/4✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
|
1 | EXPECT_CALL(enable, setSimplePwmDutyCycle(1)); | |
121 |
4/4✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
|
1 | EXPECT_CALL(dir1, setSimplePwmDutyCycle(0)); | |
122 |
4/4✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
|
1 | EXPECT_CALL(dir2, setSimplePwmDutyCycle(0.5f)); | |
123 | ||||
124 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.configure(enable, dir1, dir2, false); | |
125 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.set(-0.5f); | |
126 | 2 | } | ||
127 |