diff options
author | Yu-Ping Wu <yupingso@chromium.org> | 2020-05-13 12:36:43 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-01 07:52:30 +0000 |
commit | 251c0f23f57f54dcc3bb91b4ef78598e971afa1f (patch) | |
tree | a4b62bf68430c7f2c2a09ec5d027f17ad1242b65 /tests/vb2_ui_tests.c | |
parent | 402d191efef56e88d30d270a5ce0c9f11b2f75e0 (diff) | |
download | vboot-251c0f23f57f54dcc3bb91b4ef78598e971afa1f.tar.gz |
vboot/ui: implement language selection screen
Implement language selection screen, and add language item to all the
other screens. Add a default screen init function default_screen_init()
to initialize the default selection to the second item if the first item
is the language selection.
BRANCH=none
BUG=b:146399181, b:144968920
TEST=make runtests
TEST=USE="menu_ui" emerge-nami depthcharge
Cq-Depend: chromium:2193151, chromium:2192508
Change-Id: I3251b0095ec29ec26cc27745b1089e60894c892c
Signed-off-by: Yu-Ping Wu <yupingso@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2196095
Reviewed-by: Joel Kitching <kitching@chromium.org>
Diffstat (limited to 'tests/vb2_ui_tests.c')
-rw-r--r-- | tests/vb2_ui_tests.c | 69 |
1 files changed, 66 insertions, 3 deletions
diff --git a/tests/vb2_ui_tests.c b/tests/vb2_ui_tests.c index 4066e5b8..aef133eb 100644 --- a/tests/vb2_ui_tests.c +++ b/tests/vb2_ui_tests.c @@ -39,6 +39,8 @@ static struct display_call mock_displayed[64]; static int mock_displayed_count; static int mock_displayed_i; +static uint32_t mock_locale_count; + static int mock_calls_until_shutdown; /* Iteration counter starts from 0 @@ -194,6 +196,9 @@ static void reset_common_data(enum reset_type t) mock_displayed_count = 0; mock_displayed_i = 0; + /* For vb2ex_get_locale_count */ + mock_locale_count = 1; + /* For check_shutdown_request */ if (t == FOR_DEVELOPER) mock_calls_until_shutdown = 2000; /* Larger than 30s */ @@ -280,6 +285,11 @@ vb2_error_t vb2ex_display_ui(enum vb2_screen screen, return VB2_SUCCESS; } +uint32_t vb2ex_get_locale_count(void) +{ + return mock_locale_count; +} + uint32_t VbExIsShutdownRequested(void) { if (mock_calls_until_shutdown < 0) /* Never request shutdown */ @@ -502,7 +512,7 @@ static void manual_recovery_tests(void) TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, "phone recovery"); displayed_eq("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, 0, MOCK_IGNORE); + MOCK_IGNORE, 1, MOCK_IGNORE); displayed_eq("phone recovery", VB2_SCREEN_RECOVERY_PHONE_STEP1, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); displayed_no_extra(); @@ -514,9 +524,9 @@ static void manual_recovery_tests(void) TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, "external disk recovery"); displayed_eq("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, 0, MOCK_IGNORE); - displayed_eq("recovery select", VB2_SCREEN_RECOVERY_SELECT, MOCK_IGNORE, 1, MOCK_IGNORE); + displayed_eq("recovery select", VB2_SCREEN_RECOVERY_SELECT, + MOCK_IGNORE, 2, MOCK_IGNORE); displayed_eq("disk recovery", VB2_SCREEN_RECOVERY_DISK_STEP1, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); displayed_no_extra(); @@ -703,11 +713,64 @@ static void manual_recovery_tests(void) VB2_DEBUG("...done.\n"); } +static void language_selection_tests(void) +{ + VB2_DEBUG("Testing language selection...\n"); + + /* Enter language menu and change language */ + reset_common_data(FOR_MANUAL_RECOVERY); + mock_locale_count = 100; + vb2_nv_set(ctx, VB2_NV_LOCALIZATION_INDEX, 23); + add_mock_keypress(VB_KEY_UP); + add_mock_keypress(VB_KEY_ENTER); /* select language */ + add_mock_keypress(VB_KEY_DOWN); + add_mock_keypress(VB_KEY_ENTER); /* select locale 24 */ + add_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_REMOVABLE); + TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, + "change language"); + displayed_eq("RECOVERY_SELECT default", VB2_SCREEN_RECOVERY_SELECT, + 23, MOCK_IGNORE, MOCK_IGNORE); + displayed_eq("RECOVERY_SELECT lang", VB2_SCREEN_RECOVERY_SELECT, + 23, 0, MOCK_IGNORE); + displayed_eq("LANGUAGE_SELECT 23", VB2_SCREEN_LANGUAGE_SELECT, + 23, 23, MOCK_IGNORE); + displayed_eq("LANGUAGE_SELECT 24", VB2_SCREEN_LANGUAGE_SELECT, + 23, 24, MOCK_IGNORE); + displayed_eq("RECOVERY_SELECT new locale", VB2_SCREEN_RECOVERY_SELECT, + 24, MOCK_IGNORE, MOCK_IGNORE); + displayed_no_extra(); + TEST_EQ(vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX), 24, + " locale 24 saved to nvdata"); + + /* Locale count = 0 */ + reset_common_data(FOR_MANUAL_RECOVERY); + mock_locale_count = 0; + vb2_nv_set(ctx, VB2_NV_LOCALIZATION_INDEX, 23); + add_mock_keypress(VB_KEY_UP); + add_mock_keypress(VB_KEY_ENTER); /* select language */ + add_mock_keypress(VB_KEY_ENTER); /* select locale 0 */ + add_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_REMOVABLE); + TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, + "enter language menu"); + displayed_eq("RECOVERY_SELECT default", VB2_SCREEN_RECOVERY_SELECT, + 23, MOCK_IGNORE, MOCK_IGNORE); + displayed_eq("RECOVERY_SELECT lang", VB2_SCREEN_RECOVERY_SELECT, + 23, 0, MOCK_IGNORE); + displayed_eq("LANGUAGE_SELECT index 0", VB2_SCREEN_LANGUAGE_SELECT, + 23, 0, MOCK_IGNORE); + displayed_eq("RECOVERY_SELECT locale 0", VB2_SCREEN_RECOVERY_SELECT, + 0, MOCK_IGNORE, MOCK_IGNORE); + displayed_no_extra(); + + VB2_DEBUG("...done.\n"); +} + int main(void) { developer_tests(); broken_recovery_tests(); manual_recovery_tests(); + language_selection_tests(); return gTestSuccess ? 0 : 255; } |