重构显示逻辑为 MVP 架构,进行显示模块的解耦
This commit is contained in:
@@ -1,28 +1,47 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "test_common.h"
|
||||
#include "../src/Drv/menu.c"
|
||||
|
||||
#include "../src/Drv/menu/view/menu_layout.h"
|
||||
#include "../src/Drv/menu/model/menu_tree_builder.h"
|
||||
|
||||
static int noop_proc(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
tagMenuCtrl ctrl;
|
||||
tagMenuItem items[4];
|
||||
uint8_t menu_num[4] = {0};
|
||||
tagPMenuItem first[4] = {0};
|
||||
tagPMenuItem index[4] = {0};
|
||||
uint8_t max_len;
|
||||
|
||||
Menu_Init();
|
||||
ASSERT_TRUE(g_tMenuCtrl.by0LevelNum > 0);
|
||||
ASSERT_TRUE(g_tMenuCtrl.ptHead != NULL);
|
||||
ASSERT_TRUE(g_tMenuCtrl.ptCurrent != NULL);
|
||||
const tagMenuModel model[4] = {
|
||||
{0, "Root", "", 0, 0, 0, (FUNCPTR)noop_proc},
|
||||
{1, "设置", "", 0, 0, 0, (FUNCPTR)noop_proc},
|
||||
{2, "子项", "", 0, 0, 0, (FUNCPTR)noop_proc},
|
||||
{1, "查看", "", 0, 0, 0, (FUNCPTR)noop_proc},
|
||||
};
|
||||
|
||||
ASSERT_EQ_INT(3, utf8_len_cal((uint8_t*)"ABC"));
|
||||
ASSERT_EQ_INT(2, utf8_len_cal((uint8_t*)"你"));
|
||||
memset(&ctrl, 0, sizeof(ctrl));
|
||||
memset(items, 0, sizeof(items));
|
||||
|
||||
first[0] = g_tMenuCtrl.ptHead;
|
||||
index[0] = g_tMenuCtrl.ptHead;
|
||||
max_len = Menu_charLenCal(0, menu_num, first, index);
|
||||
MenuTree_0LevelNumCal(&ctrl, model, 4);
|
||||
ASSERT_EQ_INT(1, ctrl.by0LevelNum);
|
||||
MenuTree_MainCreate(items, model, 4);
|
||||
|
||||
ASSERT_EQ_INT(3, MenuLayout_Utf8LenCal((uint8_t *)"ABC"));
|
||||
ASSERT_EQ_INT(2, MenuLayout_Utf8LenCal((uint8_t *)"你"));
|
||||
|
||||
first[0] = &items[0];
|
||||
index[0] = &items[0];
|
||||
max_len = MenuLayout_CharLenCal(0, menu_num, first, index);
|
||||
ASSERT_TRUE(max_len > 0);
|
||||
ASSERT_TRUE(menu_num[1] > 0);
|
||||
ASSERT_STREQ("设置", (const char *)items[1].byName);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user