Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | #include "pch.h" | |||
2 | ||||
3 | #include "gppwm_channel.h" | |||
4 | #include "gppwm.h" | |||
5 | ||||
6 | #include "mocks.h" | |||
7 | ||||
8 | using ::testing::InSequence; | |||
9 | using ::testing::StrictMock; | |||
10 | ||||
11 | 4 | TEST(GpPwm, OutputWithPwm) { | ||
12 | 1 | GppwmChannel ch; | ||
13 | ||||
14 | 1 | gppwm_channel cfg; | ||
15 | ||||
16 |
1/1✓ Branch 2 taken 1 time.
|
1 | StrictMock<MockPwm> pwm; | |
17 | ||||
18 | // Shouldn't throw with no config | |||
19 |
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 19 not taken.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✗ Branch 31 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 52 not taken.
✗ Branch 58 not taken.
✗ Branch 62 not taken.
✗ Branch 65 not taken.
✗ Branch 70 not taken.
✗ Branch 73 not taken.
|
1 | EXPECT_NO_THROW(ch.setOutput(10)); | |
20 | ||||
21 | { | |||
22 |
1/1✓ Branch 2 taken 1 time.
|
1 | InSequence i; | |
23 |
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(pwm, setSimplePwmDutyCycle(0.25f)); | |
24 |
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(pwm, setSimplePwmDutyCycle(0.75f)); | |
25 |
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(pwm, setSimplePwmDutyCycle(0.0f)); | |
26 |
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(pwm, setSimplePwmDutyCycle(1.0f)); | |
27 | 1 | } | ||
28 | ||||
29 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.init(true, &pwm, nullptr, nullptr, &cfg); | |
30 | ||||
31 | // Set the output - should set directly to PWM | |||
32 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.setOutput(25.0f); | |
33 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.setOutput(75.0f); | |
34 | ||||
35 | // Test clamping behavior - should clamp to [0, 100] | |||
36 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.setOutput(-10.0f); | |
37 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.setOutput(110.0f); | |
38 | 2 | } | ||
39 | ||||
40 | 4 | TEST(GpPwm, OutputOnOff) { | ||
41 | 1 | GppwmChannel ch; | ||
42 | ||||
43 | 1 | gppwm_channel cfg; | ||
44 | 1 | cfg.onAboveDuty = 50; | ||
45 | 1 | cfg.offBelowDuty = 40; | ||
46 | ||||
47 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockOutputPin pin; | |
48 | ||||
49 | { | |||
50 |
1/1✓ Branch 2 taken 1 time.
|
1 | InSequence i; | |
51 | ||||
52 | // Rising edge test | |||
53 |
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(pin, setValue(0, false)); | |
54 |
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(pin, setValue(1, false)); | |
55 |
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(pin, setValue(1, false)); | |
56 | ||||
57 | // Falling edge test | |||
58 |
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(pin, setValue(1, false)); | |
59 |
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(pin, setValue(0, false)); | |
60 |
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(pin, setValue(0, false)); | |
61 | 1 | } | ||
62 | ||||
63 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.init(false, nullptr, &pin, nullptr, &cfg); | |
64 | ||||
65 | // Test rising edge - these should output 0, 1, 1 | |||
66 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.setOutput(49.0f); | |
67 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.setOutput(51.0f); | |
68 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.setOutput(49.0f); | |
69 | ||||
70 | // Test falling edge - these should output 1, 0, 0 | |||
71 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.setOutput(41.0f); | |
72 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.setOutput(39.0f); | |
73 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.setOutput(41.0f); | |
74 | 2 | } | ||
75 | ||||
76 | 4 | TEST(GpPwm, TestGetOutput) { | ||
77 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
78 | 1 | GppwmChannel ch; | ||
79 | ||||
80 | 1 | gppwm_channel cfg; | ||
81 | 1 | cfg.loadAxis = GPPWM_Tps; | ||
82 | 1 | cfg.rpmAxis = GPPWM_Rpm; | ||
83 | 1 | cfg.dutyIfError = 21.0f; | ||
84 | ||||
85 |
1/1✓ Branch 2 taken 1 time.
|
1 | MockVp3d table; | |
86 | ||||
87 |
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(table, getValue(1200, 35.0f)) | |
88 |
2/2✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | .WillRepeatedly([](float x, float tps) { | |
89 | return tps; | |||
90 | }); | |||
91 | ||||
92 |
1/1✓ Branch 1 taken 1 time.
|
1 | ch.init(false, nullptr, nullptr, &table, &cfg); | |
93 | ||||
94 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::resetAllMocks(); | |
95 | ||||
96 | // Should return dutyIfError | |||
97 |
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(21.0f, ch.getOutput(-1).Result); | |
98 | ||||
99 | // Set TPS, should return tps value | |||
100 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::Tps1, 35.0f); | |
101 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::Rpm, 1200); | |
102 |
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(35.0f, ch.getOutput(-1).Result); | |
103 | 2 | } | ||
104 |