Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | // | |||
2 | // Created by kifir on 11/18/24. | |||
3 | // | |||
4 | ||||
5 | #include "pch.h" | |||
6 | ||||
7 | #include "util/test_base.h" | |||
8 | ||||
9 | namespace { | |||
10 | constexpr uint8_t TEST_STAGE2_FRACTION = 17; | |||
11 | constexpr float TEST_INJECTION_MASS = 12.34f; | |||
12 | ||||
13 | constexpr float TEST_PRIMARY_INJECTOR_DEAD_TIME = 5.6f; | |||
14 | constexpr float TEST_PRIMARY_INJECTOR_FLOW = 239.17f; | |||
15 | constexpr float TEST_PRIMARY_INJECTOR_BASE_DURATION = TEST_INJECTION_MASS / TEST_PRIMARY_INJECTOR_FLOW * 1000; | |||
16 | ||||
17 | constexpr float TEST_SECONDARY_INJECTOR_DEAD_TIME = 7.8; | |||
18 | constexpr float TEST_SECONDARY_INJECTOR_FLOW = 174.17f; | |||
19 | constexpr float TEST_SECONDARY_INJECTOR_BASE_DURATION = TEST_INJECTION_MASS / TEST_SECONDARY_INJECTOR_FLOW * 1000; | |||
20 | ||||
21 | 2 | BattLagCorrTable generateConstantBattLagCorrCurve(const float value) { | ||
22 | BattLagCorrTable testBattLagCorrTable; | |||
23 | 2 | testBattLagCorrTable[0].fill(value); | ||
24 | 2 | testBattLagCorrTable[1].fill(value); | ||
25 | 2 | return testBattLagCorrTable; | ||
26 | } | |||
27 | ||||
28 | const BattLagCorrTable TEST_PRIMARY_INJECTOR_BATT_LAG_CORR_CURVE = generateConstantBattLagCorrCurve( | |||
29 | TEST_PRIMARY_INJECTOR_DEAD_TIME | |||
30 | ); | |||
31 | const BattLagCorrTable TEST_SECONDARY_INJECTOR_BATT_LAG_CORR_CURVE = generateConstantBattLagCorrCurve( | |||
32 | TEST_SECONDARY_INJECTOR_DEAD_TIME | |||
33 | ); | |||
34 | ||||
35 | const EngineConfig TEST_ENGINE_CONFIG = EngineConfig() | |||
36 | .setInjectorFlowAsMassFlow(true) | |||
37 | .setInjectorFlow(TEST_PRIMARY_INJECTOR_FLOW) | |||
38 | .setInjectorBattLagCorr(TEST_PRIMARY_INJECTOR_BATT_LAG_CORR_CURVE) | |||
39 | .setInjectorSecondaryFlow(TEST_SECONDARY_INJECTOR_FLOW) | |||
40 | .setInjectorSecondaryBattLagCorr(TEST_SECONDARY_INJECTOR_BATT_LAG_CORR_CURVE); | |||
41 | ||||
42 | class StagedInjectionTest : public TestBase<> { | |||
43 | protected: | |||
44 | void SetUp() override; | |||
45 | }; | |||
46 | ||||
47 | 2 | void StagedInjectionTest::SetUp() { | ||
48 |
1/1✓ Branch 1 taken 2 times.
|
2 | TestBase::SetUp(); | |
49 | ||||
50 | 2 | InjectorStagingTable testInjectorStagingTable; | ||
51 |
2/2✓ Branch 0 taken 12 times.
✓ Branch 1 taken 2 times.
|
2/2✓ Decision 'true' taken 12 times.
✓ Decision 'false' taken 2 times.
|
14 | for (int i = 0; i < INJ_STAGING_COUNT; i++) { |
52 |
2/2✓ Branch 0 taken 72 times.
✓ Branch 1 taken 12 times.
|
2/2✓ Decision 'true' taken 72 times.
✓ Decision 'false' taken 12 times.
|
84 | for (int j = 0; j < INJ_STAGING_COUNT; j++) { |
53 | 72 | testInjectorStagingTable[i][j] = TEST_STAGE2_FRACTION; | ||
54 | } | |||
55 | }; | |||
56 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
|
2 | getTestPersistentConfiguration().setInjectorStagingTable(testInjectorStagingTable); | |
57 | ||||
58 |
2/2✓ Branch 1 taken 2 times.
✓ Branch 4 taken 2 times.
|
2 | getTestLuaScriptExecutor().setFuelAdd(TEST_INJECTION_MASS); | |
59 | 2 | } | ||
60 | ||||
61 | 4 | TEST_F(StagedInjectionTest, checkDisabledStagedInjection) { | ||
62 | 1 | setUpEngineConfiguration(TEST_ENGINE_CONFIG); | ||
63 | ||||
64 | 1 | periodicFastCallback(); | ||
65 | ||||
66 |
4/8✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
|
1 | EXPECT_EQ(getTestEngineState().getInjectionStage2Fraction(), 0.0f); | |
67 |
4/8✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR( | |
68 | getTestEngineState().getInjectionDuration(), | |||
69 | TEST_PRIMARY_INJECTOR_BASE_DURATION + TEST_PRIMARY_INJECTOR_DEAD_TIME, | |||
70 | EPS5D | |||
71 | 1 | ); | ||
72 |
4/8✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
|
1 | EXPECT_EQ(getTestEngineState().getInjectionDurationStage2(), 0.0f); | |
73 | 1 | } | ||
74 | ||||
75 | 4 | TEST_F(StagedInjectionTest, checkEnabledStagedInjection) { | ||
76 |
3/3✓ Branch 3 taken 1 time.
✓ Branch 9 taken 1 time.
✓ Branch 12 taken 1 time.
|
1 | setUpEngineConfiguration(TEST_ENGINE_CONFIG.clone().setStagedInjectionEnabled(true)); | |
77 | ||||
78 |
1/1✓ Branch 1 taken 1 time.
|
1 | periodicFastCallback(); | |
79 | ||||
80 |
2/2✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
|
1 | const float injectionStage2Fraction = getTestEngineState().getInjectionStage2Fraction(); | |
81 |
2/6✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
|
1 | EXPECT_EQ(injectionStage2Fraction, TEST_STAGE2_FRACTION * 0.01f); | |
82 |
4/8✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR( | |
83 | getTestEngineState().getInjectionDuration(), | |||
84 | TEST_PRIMARY_INJECTOR_BASE_DURATION * (1 - injectionStage2Fraction) + TEST_PRIMARY_INJECTOR_DEAD_TIME, | |||
85 | EPS5D | |||
86 | 1 | ); | ||
87 |
4/8✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR( | |
88 | getTestEngineState().getInjectionDurationStage2(), | |||
89 | TEST_SECONDARY_INJECTOR_BASE_DURATION * injectionStage2Fraction + TEST_SECONDARY_INJECTOR_DEAD_TIME, | |||
90 | EPS5D | |||
91 | 1 | ); | ||
92 | 1 | } | ||
93 | } | |||
94 |