重构显示逻辑为 MVP 架构,进行显示模块的解耦

This commit is contained in:
2026-03-24 19:52:22 +08:00
parent a4bf0962b2
commit 0690d6a00e
42 changed files with 2207 additions and 1417 deletions

View File

@@ -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;
}