Files
DTU-HMI/tests/test_p1_menu_nav_legacy.c

94 lines
2.2 KiB
C

#include <string.h>
#include "test_common.h"
#include "../src/Drv/key.h"
#include "../src/Drv/menu/presenter/menu_navigator.h"
static int g_exec_count = 0;
static int on_exec(void)
{
g_exec_count++;
return 0;
}
static void build_legacy_like_tree(MenuNavState *nav, tagMenuItem *root, tagMenuItem *m1, tagMenuItem *m2, tagMenuItem *m1_sub)
{
memset(nav, 0, sizeof(*nav));
memset(root, 0, sizeof(*root));
memset(m1, 0, sizeof(*m1));
memset(m2, 0, sizeof(*m2));
memset(m1_sub, 0, sizeof(*m1_sub));
root->byClass = 0;
root->ptLower = m1;
root->ptBefore = root;
root->ptBehind = root;
root->wPos = 1;
m1->byClass = 1;
m1->wPos = 1;
m1->ptHigher = root;
m1->ptBefore = m2;
m1->ptBehind = m2;
m1->ptLower = m1_sub;
m1->pfnWinProc = on_exec;
m2->byClass = 1;
m2->wPos = 2;
m2->ptHigher = root;
m2->ptBefore = m1;
m2->ptBehind = m1;
m2->pfnWinProc = on_exec;
m1_sub->byClass = 2;
m1_sub->wPos = 1;
m1_sub->ptHigher = m1;
m1_sub->ptBefore = m1_sub;
m1_sub->ptBehind = m1_sub;
m1_sub->pfnWinProc = on_exec;
nav->ptHead = root;
nav->ptCurrent = m1;
nav->ptCurBak = m1;
nav->ptRoute[0] = root;
nav->ptRoute[1] = m1;
}
int main(void)
{
MenuNavState nav;
tagMenuItem root;
tagMenuItem m1;
tagMenuItem m2;
tagMenuItem m1_sub;
MenuNavResult result;
build_legacy_like_tree(&nav, &root, &m1, &m2, &m1_sub);
result = MenuNavigator_ProcessKey(&nav, KEY_D);
ASSERT_EQ_INT(1, result.needRefresh);
ASSERT_TRUE(nav.ptCurrent == &m2);
result = MenuNavigator_ProcessKey(&nav, KEY_U);
ASSERT_EQ_INT(1, result.needRefresh);
ASSERT_TRUE(nav.ptCurrent == &m1);
result = MenuNavigator_ProcessKey(&nav, KEY_ENT);
ASSERT_EQ_INT(1, result.needRefresh);
ASSERT_TRUE(nav.ptCurrent == &m1_sub);
result = MenuNavigator_ProcessKey(&nav, KEY_ESC);
ASSERT_EQ_INT(1, result.needRefresh);
ASSERT_TRUE(nav.ptCurrent == &m1);
g_exec_count = 0;
nav.ptCurrent = &m2;
result = MenuNavigator_ProcessKey(&nav, KEY_ENT);
ASSERT_EQ_INT(0, result.needRefresh);
ASSERT_EQ_INT(1, g_exec_count);
return 0;
}