summaryrefslogtreecommitdiff
path: root/tests/vboot_nvstorage_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/vboot_nvstorage_test.c')
-rw-r--r--tests/vboot_nvstorage_test.c36
1 files changed, 26 insertions, 10 deletions
diff --git a/tests/vboot_nvstorage_test.c b/tests/vboot_nvstorage_test.c
index 63e93d9d..2d096182 100644
--- a/tests/vboot_nvstorage_test.c
+++ b/tests/vboot_nvstorage_test.c
@@ -37,6 +37,10 @@ static VbNvField nvfields[] = {
{VBNV_CLEAR_TPM_OWNER_REQUEST, 0, 1, 0, "clear tpm owner request"},
{VBNV_CLEAR_TPM_OWNER_DONE, 0, 1, 0, "clear tpm owner done"},
{VBNV_OPROM_NEEDED, 0, 1, 0, "oprom needed"},
+ {VBNV_FW_TRY_COUNT, 0, 8, 15, "try count"},
+ {VBNV_FW_TRY_NEXT, 0, 1, 0, "try next"},
+ {VBNV_FW_TRIED, 0, 1, 0, "firmware tried"},
+ {VBNV_FW_RESULT, VBNV_FW_RESULT_UNKNOWN, 1, 2, "firmware result"},
{0, 0, 0, 0, NULL}
};
@@ -125,17 +129,22 @@ static void VbNvStorageTest(void) {
/* Test other fields */
VbNvSetup(&c);
+ /* Test all defaults first, since some fields alias onto others */
for (vnf = nvfields; vnf->desc; vnf++) {
- TEST_EQ(VbNvGet(&c, vnf->param, &data), 0, vnf->desc);
- TEST_EQ(data, vnf->default_value, vnf->desc);
-
- TEST_EQ(VbNvSet(&c, vnf->param, vnf->test_value), 0, vnf->desc);
- TEST_EQ(VbNvGet(&c, vnf->param, &data), 0, vnf->desc);
- TEST_EQ(data, vnf->test_value, vnf->desc);
-
- TEST_EQ(VbNvSet(&c, vnf->param, vnf->test_value2), 0, vnf->desc);
- TEST_EQ(VbNvGet(&c, vnf->param, &data), 0, vnf->desc);
- TEST_EQ(data, vnf->test_value2, vnf->desc);
+ printf("Testing field: %s\n", vnf->desc);
+ TEST_EQ(VbNvGet(&c, vnf->param, &data), 0, " get");
+ TEST_EQ(data, vnf->default_value, " default");
+ }
+ /* Now test get/set */
+ for (vnf = nvfields; vnf->desc; vnf++) {
+ printf("Testing field: %s\n", vnf->desc);
+ TEST_EQ(VbNvSet(&c, vnf->param, vnf->test_value), 0, " set 1");
+ TEST_EQ(VbNvGet(&c, vnf->param, &data), 0, " get 1");
+ TEST_EQ(data, vnf->test_value, " value 1");
+
+ TEST_EQ(VbNvSet(&c, vnf->param, vnf->test_value2), 0, " set 2");
+ TEST_EQ(VbNvGet(&c, vnf->param, &data), 0, " get 2");
+ TEST_EQ(data, vnf->test_value2, " value 2");
}
VbNvTeardown(&c);
@@ -161,12 +170,19 @@ static void VbNvStorageTest(void) {
VbNvSet(&c, VBNV_TRY_B_COUNT, 16);
VbNvGet(&c, VBNV_TRY_B_COUNT, &data);
TEST_EQ(data, 15, "Try b count out of range");
+ VbNvSetup(&c);
+ VbNvSet(&c, VBNV_FW_TRY_COUNT, 16);
+ VbNvGet(&c, VBNV_FW_TRY_COUNT, &data);
+ TEST_EQ(data, 15, "Try count out of range");
VbNvSet(&c, VBNV_RECOVERY_REQUEST, 0x101);
VbNvGet(&c, VBNV_RECOVERY_REQUEST, &data);
TEST_EQ(data, VBNV_RECOVERY_LEGACY, "Recovery request out of range");
VbNvSet(&c, VBNV_LOCALIZATION_INDEX, 0x102);
VbNvGet(&c, VBNV_LOCALIZATION_INDEX, &data);
TEST_EQ(data, 0, "Localization index out of range");
+ VbNvSet(&c, VBNV_FW_RESULT, VBNV_FW_RESULT_UNKNOWN + 100);
+ VbNvGet(&c, VBNV_FW_RESULT, &data);
+ TEST_EQ(data, VBNV_FW_RESULT_UNKNOWN, "Firmware result out of range");
VbNvTeardown(&c);
}