fusion/mw/unittest/mw_unittest.c

100 lines
2.8 KiB
C
Raw Normal View History

2025-08-05 07:53:44 +00:00
/*************************************************
File name : mw_unittest.c
Module :
Author : amir
Version : 0.1
Created on : 2023-02-07
Description :
Data structure and function definitions required by the socket interface
Modify History:
1. Date: Author: Modification:
*************************************************/
#include "mw_mmc.h"
#include "mw_unittest.h"
#include "hlog.h"
#include "util.h"
#define INSUT_UNITTEST_SHOWHOW -2
static int32_t unittest_help(unittest_cmd *cmd_info, uint8_t cmd_cnt)
{
uint8_t i = 0;
if(cmd_info == NULL)
{
return EINVAL;
}
hlogi("Command List:");
for(i=0; i<cmd_cnt; i++)
{
hlogi(" %s - %s", cmd_info[i].cmd_name, cmd_info[i].cmd_help);
}
return 0;
}
static int32_t unittest_run_cmd(unittest_cmd *cmd_info, uint8_t cmd_cnt, int32_t argc, char **argv)
{
uint8_t i = 0;
int32_t rval = 0;
if(argc > 0 && argv != NULL)
{
for(i=0; i<cmd_cnt; i++)
{
if(strcmp(argv[0], cmd_info[i].cmd_name) == 0)
{
if(cmd_info[i].exec_func != NULL)
{
rval = cmd_info[i].exec_func(argc-1, &argv[1]);
if(rval == INSUT_UNITTEST_SHOWHOW)
{
unittest_help(cmd_info, cmd_cnt);
}
else if(rval != 0)
{
hloge("Rum cmd fail [ %s ] (0x%x)", argv[0], rval);
}
return rval;
}
else if(cmd_info[i].next_cmd != NULL)
{
return unittest_run_cmd(cmd_info[i].next_cmd, cmd_info[i].next_cmd_cnt, argc-1, &argv[1]);
}
}
}
}
unittest_help(cmd_info, cmd_cnt);
return INSUT_UNITTEST_SHOWHOW;
}
int32_t unittest_shell_entry(int32_t argc, char **argv)
{
unittest_cmd *cmds;
uint32_t cnt = unittest_get(&cmds);
return unittest_run_cmd(cmds, cnt, argc, argv);
}
void unittest(uint32_t argc, char **argv)
{
unittest_shell_entry(argc, argv);
}
int32_t unittest_test()
{
char *args0[]={}; /* print all */
unittest_shell_entry(sizeof(args0)/sizeof(char *), args0);
char *args[]={"device", "gpio", "output", "88", "0"};
//char *args[]={"device", "gpio"}; 提示help
unittest_shell_entry(sizeof(args)/sizeof(char *), args);
char *args2[]={"media", "debug"};
// char *args2[]={"media"}; 提示help
unittest_shell_entry(sizeof(args2)/sizeof(char *), args2);
char *args3[]={"main", "main"};
unittest_shell_entry(sizeof(args3)/sizeof(char *), args3);
}