fix: Zustands-Log bei fehlgeschlagenem Löschen neu einlesen

This commit is contained in:
Michael Sauer
2026-09-11 13:35:56 +02:00
parent b1b4ec214b
commit 35b59a64ed
2 changed files with 26 additions and 5 deletions
+16
View File
@@ -126,6 +126,21 @@ static void test_erase(void)
TEST_ASSERT_FALSE(nl_state_log_load(&out));
}
static void test_erase_failure_rescans_flash(void)
{
nl_light_state_t old = st(10), new = st(20), out;
TEST_ASSERT_EQUAL_INT(0, nl_state_log_append(&old));
fake_flash_fail_after(0);
TEST_ASSERT_NOT_EQUAL(0, nl_state_log_erase());
fake_flash_fail_after(-1);
TEST_ASSERT_TRUE(nl_state_log_load(&out));
TEST_ASSERT_EQUAL_UINT8(10, out.brightness);
TEST_ASSERT_EQUAL_INT(0, nl_state_log_append(&new));
reboot();
TEST_ASSERT_TRUE(nl_state_log_load(&out));
TEST_ASSERT_EQUAL_UINT8(20, out.brightness);
}
int main(void)
{
UNITY_BEGIN();
@@ -137,5 +152,6 @@ int main(void)
RUN_TEST(test_power_loss_during_append);
RUN_TEST(test_garbage_in_empty_log_is_erased_first);
RUN_TEST(test_erase);
RUN_TEST(test_erase_failure_rescans_flash);
return UNITY_END();
}