summaryrefslogtreecommitdiff
path: root/tests/vb2_ui_action_tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/vb2_ui_action_tests.c')
-rw-r--r--tests/vb2_ui_action_tests.c76
1 files changed, 56 insertions, 20 deletions
diff --git a/tests/vb2_ui_action_tests.c b/tests/vb2_ui_action_tests.c
index 57b9700d..84bb9e04 100644
--- a/tests/vb2_ui_action_tests.c
+++ b/tests/vb2_ui_action_tests.c
@@ -34,6 +34,7 @@ struct display_call {
uint32_t locale_id;
uint32_t selected_item;
uint32_t disabled_item_mask;
+ uint32_t hidden_item_mask;
int timer_disabled;
uint32_t current_page;
enum vb2_ui_error error_code;
@@ -188,7 +189,7 @@ const struct vb2_screen_info mock_screen_all_action = {
static void screen_state_eq(const struct vb2_screen_state *state,
enum vb2_screen screen,
uint32_t selected_item,
- uint32_t disabled_item_mask)
+ uint32_t hidden_item_mask)
{
if (screen != MOCK_IGNORE) {
if (state->screen == NULL)
@@ -199,9 +200,9 @@ static void screen_state_eq(const struct vb2_screen_state *state,
if (selected_item != MOCK_IGNORE)
TEST_EQ(state->selected_item,
selected_item, " state.selected_item");
- if (disabled_item_mask != MOCK_IGNORE)
- TEST_EQ(state->disabled_item_mask,
- disabled_item_mask, " state.disabled_item_mask");
+ if (hidden_item_mask != MOCK_IGNORE)
+ TEST_EQ(state->hidden_item_mask,
+ hidden_item_mask, " state.hidden_item_mask");
}
static void add_mock_key(uint32_t press, int trusted)
@@ -233,7 +234,7 @@ static void displayed_eq(const char *text,
enum vb2_screen screen,
uint32_t locale_id,
uint32_t selected_item,
- uint32_t disabled_item_mask,
+ uint32_t hidden_item_mask,
int line)
{
char text_info[32], text_buf[128];
@@ -263,11 +264,11 @@ static void displayed_eq(const char *text,
TEST_EQ(mock_displayed[mock_displayed_i].selected_item,
selected_item, text_buf);
}
- if (disabled_item_mask != MOCK_IGNORE) {
- sprintf(text_buf, " %s disabled_item_mask of %s",
+ if (hidden_item_mask != MOCK_IGNORE) {
+ sprintf(text_buf, " %s hidden_item_mask of %s",
text_info, text);
- TEST_EQ(mock_displayed[mock_displayed_i].disabled_item_mask,
- disabled_item_mask, text_buf);
+ TEST_EQ(mock_displayed[mock_displayed_i].hidden_item_mask,
+ hidden_item_mask, text_buf);
}
mock_displayed_i++;
}
@@ -406,6 +407,7 @@ vb2_error_t vb2ex_display_ui(enum vb2_screen screen,
uint32_t locale_id,
uint32_t selected_item,
uint32_t disabled_item_mask,
+ uint32_t hidden_item_mask,
int timer_disabled,
uint32_t current_page,
enum vb2_ui_error error_code)
@@ -415,6 +417,7 @@ vb2_error_t vb2ex_display_ui(enum vb2_screen screen,
.locale_id = locale_id,
.selected_item = selected_item,
.disabled_item_mask = disabled_item_mask,
+ .hidden_item_mask = hidden_item_mask,
.timer_disabled = timer_disabled,
.current_page = current_page,
.error_code = error_code,
@@ -427,10 +430,11 @@ vb2_error_t vb2ex_display_ui(enum vb2_screen screen,
return VB2_SUCCESS;
VB2_DEBUG("displayed %d: screen=%#x, locale_id=%u, selected_item=%u, "
- "disabled_item_mask=%#x, timer_disabled=%d, current_page=%u, "
- "error=%#x\n",
+ "disabled_item_mask=%#x, hidden_item_mask=%#x, "
+ "timer_disabled=%d, current_page=%u, error=%#x\n",
mock_displayed_count, screen, locale_id, selected_item,
- disabled_item_mask, timer_disabled, current_page, error_code);
+ disabled_item_mask, hidden_item_mask,
+ timer_disabled, current_page, error_code);
if (mock_displayed_count >= ARRAY_SIZE(mock_displayed)) {
TEST_TRUE(0, " mock vb2ex_display_ui ran out of entries!");
@@ -510,17 +514,28 @@ static void menu_prev_tests(void)
screen_state_eq(mock_ui_context.state, MOCK_SCREEN_MENU, 1,
MOCK_IGNORE);
- /* Valid action with mask */
+ /* Valid action with hidden mask */
reset_common_data();
mock_ui_context.state->screen = &mock_screen_menu;
mock_ui_context.state->selected_item = 2;
- mock_ui_context.state->disabled_item_mask = 0x0a; /* 0b01010 */
+ mock_ui_context.state->hidden_item_mask = 0x0a; /* 0b01010 */
mock_ui_context.key = VB_KEY_UP;
TEST_EQ(vb2_ui_menu_prev(&mock_ui_context), VB2_REQUEST_UI_CONTINUE,
- "valid action with mask");
+ "valid action with hidden mask");
screen_state_eq(mock_ui_context.state, MOCK_SCREEN_MENU, 0,
MOCK_IGNORE);
+ /* Disabled mask does not affect menu_prev */
+ reset_common_data();
+ mock_ui_context.state->screen = &mock_screen_menu;
+ mock_ui_context.state->selected_item = 2;
+ mock_ui_context.state->disabled_item_mask = 0x0a; /* 0b01010 */
+ mock_ui_context.key = VB_KEY_UP;
+ TEST_EQ(vb2_ui_menu_prev(&mock_ui_context), VB2_REQUEST_UI_CONTINUE,
+ "valid action with disabled mask");
+ screen_state_eq(mock_ui_context.state, MOCK_SCREEN_MENU, 1,
+ MOCK_IGNORE);
+
/* Invalid action (blocked) */
reset_common_data();
mock_ui_context.state->screen = &mock_screen_menu;
@@ -535,7 +550,7 @@ static void menu_prev_tests(void)
reset_common_data();
mock_ui_context.state->screen = &mock_screen_menu;
mock_ui_context.state->selected_item = 2;
- mock_ui_context.state->disabled_item_mask = 0x0b; /* 0b01011 */
+ mock_ui_context.state->hidden_item_mask = 0x0b; /* 0b01011 */
mock_ui_context.key = VB_KEY_UP;
TEST_EQ(vb2_ui_menu_prev(&mock_ui_context), VB2_REQUEST_UI_CONTINUE,
"invalid action (blocked by mask)");
@@ -572,17 +587,28 @@ static void menu_next_tests(void)
screen_state_eq(mock_ui_context.state, MOCK_SCREEN_MENU, 3,
MOCK_IGNORE);
- /* Valid action with mask */
+ /* Valid action with hidden mask */
reset_common_data();
mock_ui_context.state->screen = &mock_screen_menu;
mock_ui_context.state->selected_item = 2;
- mock_ui_context.state->disabled_item_mask = 0x0a; /* 0b01010 */
+ mock_ui_context.state->hidden_item_mask = 0x0a; /* 0b01010 */
mock_ui_context.key = VB_KEY_DOWN;
TEST_EQ(vb2_ui_menu_next(&mock_ui_context), VB2_REQUEST_UI_CONTINUE,
- "valid action with mask");
+ "valid action with hidden mask");
screen_state_eq(mock_ui_context.state, MOCK_SCREEN_MENU, 4,
MOCK_IGNORE);
+ /* Disabled mask does not affect menu_next */
+ reset_common_data();
+ mock_ui_context.state->screen = &mock_screen_menu;
+ mock_ui_context.state->selected_item = 2;
+ mock_ui_context.state->disabled_item_mask = 0x0a; /* 0b01010 */
+ mock_ui_context.key = VB_KEY_DOWN;
+ TEST_EQ(vb2_ui_menu_next(&mock_ui_context), VB2_REQUEST_UI_CONTINUE,
+ "valid action with disabled mask");
+ screen_state_eq(mock_ui_context.state, MOCK_SCREEN_MENU, 3,
+ MOCK_IGNORE);
+
/* Invalid action (blocked) */
reset_common_data();
mock_ui_context.state->screen = &mock_screen_menu;
@@ -597,7 +623,7 @@ static void menu_next_tests(void)
reset_common_data();
mock_ui_context.state->screen = &mock_screen_menu;
mock_ui_context.state->selected_item = 2;
- mock_ui_context.state->disabled_item_mask = 0x1a; /* 0b11010 */
+ mock_ui_context.state->hidden_item_mask = 0x1a; /* 0b11010 */
mock_ui_context.key = VB_KEY_DOWN;
TEST_EQ(vb2_ui_menu_next(&mock_ui_context), VB2_REQUEST_UI_CONTINUE,
"invalid action (blocked by mask)");
@@ -664,6 +690,16 @@ static void menu_select_tests(void)
screen_state_eq(mock_ui_context.state, MOCK_SCREEN_MENU, 4,
MOCK_IGNORE);
+ /* Cannot select a disabled item (item 3) */
+ reset_common_data();
+ mock_ui_context.state->screen = &mock_screen_menu;
+ mock_ui_context.state->selected_item = 3;
+ mock_ui_context.state->disabled_item_mask = 0x08; /* 0b01000 */
+ mock_ui_context.key = VB_KEY_ENTER;
+ TEST_EQ(vb2_ui_menu_select(&mock_ui_context),
+ VB2_REQUEST_UI_CONTINUE, "cannot select a disabled item");
+ TEST_EQ(mock_action_called, 0, " no action called");
+
/* Ignore power button short press when not DETACHABLE */
if (!DETACHABLE) {
reset_common_data();