Skip to content

Commit afa9641

Browse files
committed
Add sector flag unit coverage
F/3305
1 parent 47ef6b4 commit afa9641

1 file changed

Lines changed: 49 additions & 1 deletion

File tree

tools/unit-tests/unit-sectorflags.c

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ uint8_t *ut_get_endpart(void);
4545

4646
static int locked = 0;
4747
static int ext_locked = 0;
48+
static int ext_write_count = 0;
4849

4950
void hal_init(void)
5051
{
@@ -91,6 +92,19 @@ uint8_t *ut_get_endpart(void)
9192
return flash + WOLFBOOT_PARTITION_SIZE;
9293
}
9394

95+
static void reset_flash_state(void)
96+
{
97+
memset(flash, 0xFF, sizeof(flash));
98+
locked = 0;
99+
ext_locked = 0;
100+
ext_write_count = 0;
101+
}
102+
103+
static uint32_t update_sector_flag_addr(uint32_t pos)
104+
{
105+
return PART_UPDATE_ENDFLAGS - (sizeof(uint32_t) + 2 + pos);
106+
}
107+
94108
/* Mocks for ext_flash_read, ext_flash_write, and ext_flash_erase functions */
95109
int ext_flash_read(uintptr_t address, uint8_t *data, int len) {
96110
printf("Called ext_flash_read %p %p %d\n", address, data, len);
@@ -111,6 +125,7 @@ int ext_flash_write(uintptr_t address, const uint8_t *data, int len) {
111125

112126
/* Copy the data from the input buffer to the flash memory */
113127
memcpy(&flash[address], data, len);
128+
ext_write_count++;
114129

115130
return 0;
116131
}
@@ -210,7 +225,40 @@ START_TEST(test_partition_flags) {
210225
END_TEST
211226

212227
START_TEST(test_sector_flags) {
213-
228+
uint8_t flag = 0;
229+
uint32_t flag_addr = update_sector_flag_addr(0);
230+
int writes_after_change;
231+
232+
reset_flash_state();
233+
flash[flag_addr] = 0xA5;
234+
set_partition_magic(PART_UPDATE);
235+
ext_write_count = 0;
236+
237+
wolfBoot_set_update_sector_flag(0, 0x03);
238+
ck_assert_uint_eq(flash[flag_addr], 0xA3);
239+
ck_assert_int_eq(ext_write_count, 1);
240+
ck_assert_int_eq(wolfBoot_get_update_sector_flag(0, &flag), 0);
241+
ck_assert_uint_eq(flag, 0x03);
242+
ck_assert_int_eq(wolfBoot_get_update_sector_flag(1, &flag), 0);
243+
ck_assert_uint_eq(flag, 0x0A);
244+
245+
writes_after_change = ext_write_count;
246+
wolfBoot_set_update_sector_flag(0, 0x03);
247+
ck_assert_int_eq(ext_write_count, writes_after_change);
248+
ck_assert_uint_eq(flash[flag_addr], 0xA3);
249+
250+
wolfBoot_set_update_sector_flag(1, 0x0C);
251+
ck_assert_uint_eq(flash[flag_addr], 0xC3);
252+
ck_assert_int_eq(ext_write_count, writes_after_change + 1);
253+
ck_assert_int_eq(wolfBoot_get_update_sector_flag(0, &flag), 0);
254+
ck_assert_uint_eq(flag, 0x03);
255+
ck_assert_int_eq(wolfBoot_get_update_sector_flag(1, &flag), 0);
256+
ck_assert_uint_eq(flag, 0x0C);
257+
258+
writes_after_change = ext_write_count;
259+
wolfBoot_set_update_sector_flag(1, 0x0C);
260+
ck_assert_int_eq(ext_write_count, writes_after_change);
261+
ck_assert_uint_eq(flash[flag_addr], 0xC3);
214262
}
215263
END_TEST
216264

0 commit comments

Comments
 (0)