Skip to content

Commit 32516cd

Browse files
authored
Tweak schedule calc & init tests (speeduino#1370)
* Re-enble pending test * Unit test: assert on maxInjOutputs and enforce array lengths
1 parent d944212 commit 32516cd

File tree

3 files changed

+92
-72
lines changed

3 files changed

+92
-72
lines changed

test/test_init/test_fuel_schedule_init.cpp

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,29 @@ static void __attribute__((noinline)) assert_fuel_channel(bool enabled, uint16_t
2626
TEST_ASSERT_TRUE_MESSAGE(!enabled || (endFunction!=nullCallback), msg);
2727
}
2828

29+
static void __attribute__((noinline)) assert_num_inj_channels(const bool (&enabled)[8])
30+
{
31+
uint8_t expectedOutputs=0;
32+
for (uint8_t i=0; i<8; i++) {
33+
if (enabled[i]) {
34+
++expectedOutputs;
35+
}
36+
}
37+
TEST_ASSERT_EQUAL_UINT8(expectedOutputs, currentStatus.maxInjOutputs);
38+
}
39+
2940
extern uint16_t calculateRequiredFuel(const config2 &page2, const statuses &current);
3041

31-
static void __attribute__((noinline)) assert_fuel_schedules(uint16_t crankAngle, uint16_t reqFuel, const bool enabled[], const uint16_t angle[])
42+
static void __attribute__((noinline)) assert_fuel_schedules(uint16_t crankAngle, uint16_t reqFuel, const bool (&enabled)[8], const uint16_t (&angle)[8])
3243
{
3344
char msg[32];
3445

3546
strcpy_P(msg, PSTR("CRANK_ANGLE_MAX_INJ"));
3647
TEST_ASSERT_EQUAL_INT16_MESSAGE(crankAngle, CRANK_ANGLE_MAX_INJ, msg);
3748
strcpy_P(msg, PSTR("req_fuel_uS"));
3849
TEST_ASSERT_EQUAL_UINT16_MESSAGE(reqFuel, calculateRequiredFuel(configPage2, currentStatus), msg);
50+
51+
assert_num_inj_channels(enabled);
3952

4053
assert_fuel_channel(enabled[0], angle[0], INJ1_CMD_BIT, channel1InjDegrees, fuelSchedule1.pStartCallback, fuelSchedule1.pEndCallback);
4154
assert_fuel_channel(enabled[1], angle[1], INJ2_CMD_BIT, channel2InjDegrees, fuelSchedule2.pStartCallback, fuelSchedule2.pEndCallback);
@@ -364,10 +377,12 @@ static void cylinder3_stroke4_semiseq_staged_tb(void)
364377
initialiseAll(); //Run the main initialise function
365378
#if INJ_CHANNELS>=6
366379
const uint16_t angle[] = {0,80,160,0,80,160,0,0};
380+
const bool enabled[] = {true, true, true, true, true, true, false, false};
381+
TEST_IGNORE_MESSAGE("Fix code so test passes :-()");
367382
#else
368383
const uint16_t angle[] = {0,80,160,0,0,0,0,0};
369-
#endif
370384
const bool enabled[] = {true, true, true, true, false, false, false, false};
385+
#endif
371386
assert_fuel_schedules(720U/3U, reqFuel * 50U, enabled, angle); //Special case as 3 squirts per cycle MUST be over 720 degrees
372387
}
373388

@@ -380,10 +395,12 @@ static void cylinder3_stroke4_semiseq_staged_port(void)
380395
initialiseAll(); //Run the main initialise function
381396
#if INJ_CHANNELS>=6
382397
const uint16_t angle[] = {0,120,240,0,120,240,0,0};
398+
const bool enabled[] = {true, true, true, true, true, true, false, false};
399+
TEST_IGNORE_MESSAGE("Fix code so test passes :-()");
383400
#else
384401
const uint16_t angle[] = {0,120,240,0,0,0,0,0};
385-
#endif
386402
const bool enabled[] = {true, true, true, true, false, false, false, false};
403+
#endif
387404
assert_fuel_schedules(720U/2U, reqFuel * 50U, enabled, angle); //Special case as 3 squirts per cycle MUST be over 720 degrees
388405
}
389406
static void run_3_cylinder_4stroke_tests(void)
@@ -459,10 +476,12 @@ static void cylinder3_stroke2_semiseq_staged_tb(void)
459476
initialiseAll(); //Run the main initialise function
460477
#if INJ_CHANNELS>=6
461478
const uint16_t angle[] = {0,80,160,0,80,160,0,0};
479+
const bool enabled[] = {true, true, true, true, true, true, false, false};
480+
TEST_IGNORE_MESSAGE("Fix code so test passes :-()");
462481
#else
463482
const uint16_t angle[] = {0,80,160,0,0,0,0,0};
464-
#endif
465483
const bool enabled[] = {true, true, true, true, false, false, false, false};
484+
#endif
466485
assert_fuel_schedules(360U/3U, reqFuel * 100U, enabled, angle);
467486
}
468487

@@ -474,10 +493,12 @@ static void cylinder3_stroke2_semiseq_staged_port(void)
474493
initialiseAll(); //Run the main initialise function
475494
#if INJ_CHANNELS>=6
476495
const uint16_t angle[] = {0,120,240,0,120,240,0,0};
496+
const bool enabled[] = {true, true, true, true, true, true, false, false};
497+
TEST_IGNORE_MESSAGE("Fix code so test passes :-()");
477498
#else
478499
const uint16_t angle[] = {0,120,240,0,0,0,0,0};
479-
#endif
480500
const bool enabled[] = {true, true, true, true, false, false, false, false};
501+
#endif
481502
assert_fuel_schedules(360U/2U, reqFuel * 100U, enabled, angle);
482503
}
483504

@@ -682,14 +703,14 @@ static void cylinder5_stroke4_semiseq_staged(void)
682703
enableStaging();
683704
initialiseAll(); //Run the main initialise function
684705
#if INJ_CHANNELS >= 5
685-
const bool enabled[] = {true, true, true, true, true, false, false, false};
706+
const bool enabled[] = {true, true, true, true, true, true, false, false};
686707
const uint16_t angle[] = {0,72,144,216,288,0,0,0};
687-
assert_fuel_schedules(720U, reqFuel * 50U, enabled, angle);
708+
TEST_IGNORE_MESSAGE("Fix code so test passes :-()");
688709
#else
689710
const bool enabled[] = {true, true, true, true, false, false, false, false};
690711
const uint16_t angle[] = {0,72,144,216,288,0,0,0};
691-
assert_fuel_schedules(720U, reqFuel * 50U, enabled, angle);
692712
#endif
713+
assert_fuel_schedules(720U, reqFuel * 50U, enabled, angle);
693714
}
694715

695716
void run_5_cylinder_4stroke_tests(void)
@@ -756,10 +777,12 @@ static void cylinder6_stroke4_semiseq_staged(void)
756777
initialiseAll(); //Run the main initialise function
757778
#if INJ_CHANNELS >= 8
758779
const uint16_t angle[] = {0,120,240,0,0,120,240,0};
780+
const bool enabled[] = {true, true, true, true, true, true, true, false};
781+
TEST_IGNORE_MESSAGE("Fix code so test passes :-()");
759782
#else
760783
const uint16_t angle[] = {0,120,240,0,0,0,0,0};
761-
#endif
762784
const bool enabled[] = {true, true, true, false, false, false, false, false};
785+
#endif
763786
assert_fuel_schedules(720U, reqFuel * 50U, enabled, angle);
764787
}
765788

test/test_init/test_ignition_schedule_init.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ static void assert_ignition_channel(uint16_t angle, uint8_t channel, int channel
2121
TEST_ASSERT_TRUE_MESSAGE(channel>=currentStatus.maxIgnOutputs || (endFunction!=nullCallback), msg);
2222
}
2323

24-
static void assert_ignition_schedules(uint16_t crankAngle, uint16_t expectedOutputs, const uint16_t angle[])
24+
static void assert_ignition_schedules(uint16_t crankAngle, uint16_t expectedOutputs, const uint16_t (&angle)[8])
2525
{
2626
char msg[48];
2727

0 commit comments

Comments
 (0)