13d8536b4Sopenharmony_ci/*
23d8536b4Sopenharmony_ci * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
33d8536b4Sopenharmony_ci * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved.
43d8536b4Sopenharmony_ci *
53d8536b4Sopenharmony_ci * Redistribution and use in source and binary forms, with or without modification,
63d8536b4Sopenharmony_ci * are permitted provided that the following conditions are met:
73d8536b4Sopenharmony_ci *
83d8536b4Sopenharmony_ci * 1. Redistributions of source code must retain the above copyright notice, this list of
93d8536b4Sopenharmony_ci * conditions and the following disclaimer.
103d8536b4Sopenharmony_ci *
113d8536b4Sopenharmony_ci * 2. Redistributions in binary form must reproduce the above copyright notice, this list
123d8536b4Sopenharmony_ci * of conditions and the following disclaimer in the documentation and/or other materials
133d8536b4Sopenharmony_ci * provided with the distribution.
143d8536b4Sopenharmony_ci *
153d8536b4Sopenharmony_ci * 3. Neither the name of the copyright holder nor the names of its contributors may be used
163d8536b4Sopenharmony_ci * to endorse or promote products derived from this software without specific prior written
173d8536b4Sopenharmony_ci * permission.
183d8536b4Sopenharmony_ci *
193d8536b4Sopenharmony_ci * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
203d8536b4Sopenharmony_ci * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
213d8536b4Sopenharmony_ci * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
223d8536b4Sopenharmony_ci * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
233d8536b4Sopenharmony_ci * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
243d8536b4Sopenharmony_ci * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
253d8536b4Sopenharmony_ci * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
263d8536b4Sopenharmony_ci * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
273d8536b4Sopenharmony_ci * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
283d8536b4Sopenharmony_ci * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
293d8536b4Sopenharmony_ci * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
303d8536b4Sopenharmony_ci */
313d8536b4Sopenharmony_ci
323d8536b4Sopenharmony_ci
333d8536b4Sopenharmony_ci#ifndef _LOS_ICUNIT_H
343d8536b4Sopenharmony_ci#define _LOS_ICUNIT_H
353d8536b4Sopenharmony_ci#include "osTest.h"
363d8536b4Sopenharmony_ci
373d8536b4Sopenharmony_ci#ifdef TST_DRVPRINT
383d8536b4Sopenharmony_ci#include "VOS_typdef.h"
393d8536b4Sopenharmony_ci#include "uartdriver.h"
403d8536b4Sopenharmony_ci#endif
413d8536b4Sopenharmony_ci
423d8536b4Sopenharmony_ci#ifdef __cplusplus
433d8536b4Sopenharmony_ci#if __cplusplus
443d8536b4Sopenharmony_ciextern "C" {
453d8536b4Sopenharmony_ci#endif /* __cplusplus */
463d8536b4Sopenharmony_ci#endif /* __cplusplus */
473d8536b4Sopenharmony_ci
483d8536b4Sopenharmony_citypedef unsigned short iUINT16;
493d8536b4Sopenharmony_citypedef unsigned int iUINT32;
503d8536b4Sopenharmony_citypedef signed short iINT16;
513d8536b4Sopenharmony_citypedef signed long iINT32;
523d8536b4Sopenharmony_citypedef char iCHAR;
533d8536b4Sopenharmony_citypedef void iVOID;
543d8536b4Sopenharmony_ci
553d8536b4Sopenharmony_citypedef unsigned long iiUINT32;
563d8536b4Sopenharmony_ci
573d8536b4Sopenharmony_ci
583d8536b4Sopenharmony_ci#ifndef FALSE
593d8536b4Sopenharmony_ci#define FALSE 0
603d8536b4Sopenharmony_ci#endif
613d8536b4Sopenharmony_ci#ifndef TRUE
623d8536b4Sopenharmony_ci#define TRUE 1
633d8536b4Sopenharmony_ci#endif
643d8536b4Sopenharmony_ci
653d8536b4Sopenharmony_ci#define FUNCTION_TEST (1 << 0)
663d8536b4Sopenharmony_ci
673d8536b4Sopenharmony_ci#define PRESSURE_TEST (1 << 1)
683d8536b4Sopenharmony_ci
693d8536b4Sopenharmony_ci#define PERFORMANCE_TEST (1 << 2)
703d8536b4Sopenharmony_ci
713d8536b4Sopenharmony_ci#define TEST_MODE (FUNCTION_TEST)
723d8536b4Sopenharmony_ci
733d8536b4Sopenharmony_citypedef iUINT32 (*CASE_FUNCTION)(void);
743d8536b4Sopenharmony_ci
753d8536b4Sopenharmony_citypedef struct {
763d8536b4Sopenharmony_ci    iCHAR *pcCaseID;
773d8536b4Sopenharmony_ci    CASE_FUNCTION pstCaseFunc;
783d8536b4Sopenharmony_ci    iUINT16 testcase_layer;
793d8536b4Sopenharmony_ci    iUINT16 testcase_module;
803d8536b4Sopenharmony_ci    iUINT16 testcase_level;
813d8536b4Sopenharmony_ci    iUINT16 testcase_type;
823d8536b4Sopenharmony_ci    iiUINT32 retCode;
833d8536b4Sopenharmony_ci    iUINT16 errLine;
843d8536b4Sopenharmony_ci} ICUNIT_CASE_S;
853d8536b4Sopenharmony_ci
863d8536b4Sopenharmony_citypedef struct {
873d8536b4Sopenharmony_ci    iUINT16 uwCaseCnt;
883d8536b4Sopenharmony_ci    iCHAR *pcSuitID;
893d8536b4Sopenharmony_ci    iCHAR *pucFilename;
903d8536b4Sopenharmony_ci    ICUNIT_CASE_S *pstCaseList;
913d8536b4Sopenharmony_ci    iUINT16 passCnt;
923d8536b4Sopenharmony_ci    iUINT16 failCnt;
933d8536b4Sopenharmony_ci} ICUNIT_SUIT_S;
943d8536b4Sopenharmony_ci
953d8536b4Sopenharmony_citypedef enum {
963d8536b4Sopenharmony_ci    TEST_TASK = 0,
973d8536b4Sopenharmony_ci    TEST_MEM,
983d8536b4Sopenharmony_ci    TEST_SEM,
993d8536b4Sopenharmony_ci    TEST_MUX,
1003d8536b4Sopenharmony_ci    TEST_EVENT,
1013d8536b4Sopenharmony_ci    TEST_QUE,
1023d8536b4Sopenharmony_ci    TEST_SWTMR,
1033d8536b4Sopenharmony_ci    TEST_HWI,
1043d8536b4Sopenharmony_ci    TEST_ATO,
1053d8536b4Sopenharmony_ci    TEST_CPUP,
1063d8536b4Sopenharmony_ci    TEST_SCATTER,
1073d8536b4Sopenharmony_ci    TEST_RUNSTOP,
1083d8536b4Sopenharmony_ci    TEST_TIMER,
1093d8536b4Sopenharmony_ci    TEST_MMU,
1103d8536b4Sopenharmony_ci    TEST_TICKLESS,
1113d8536b4Sopenharmony_ci    TEST_ROBIN,
1123d8536b4Sopenharmony_ci    TEST_LIBC,
1133d8536b4Sopenharmony_ci    TEST_WAIT,
1143d8536b4Sopenharmony_ci    TEST_VFAT,
1153d8536b4Sopenharmony_ci    TEST_YAFFS,
1163d8536b4Sopenharmony_ci    TEST_JFFS,
1173d8536b4Sopenharmony_ci    TEST_RAMFS,
1183d8536b4Sopenharmony_ci    TEST_NFS,
1193d8536b4Sopenharmony_ci    TEST_PROC,
1203d8536b4Sopenharmony_ci    TEST_FS,
1213d8536b4Sopenharmony_ci    TEST_PTHREAD,
1223d8536b4Sopenharmony_ci    TEST_COMP,
1233d8536b4Sopenharmony_ci    TEST_HWI_HALFBOTTOM,
1243d8536b4Sopenharmony_ci    TEST_WORKQ,
1253d8536b4Sopenharmony_ci    TEST_WAKELOCK,
1263d8536b4Sopenharmony_ci    TEST_TIMES,
1273d8536b4Sopenharmony_ci    TEST_LIBM,
1283d8536b4Sopenharmony_ci    TEST_SUPPORT,
1293d8536b4Sopenharmony_ci    TEST_STL,
1303d8536b4Sopenharmony_ci    TEST_MAIL,
1313d8536b4Sopenharmony_ci    TEST_MSG,
1323d8536b4Sopenharmony_ci    TEST_CP,
1333d8536b4Sopenharmony_ci    TEST_SIGNAL,
1343d8536b4Sopenharmony_ci    TEST_SCHED,
1353d8536b4Sopenharmony_ci    TEST_MTDCHAR,
1363d8536b4Sopenharmony_ci    TEST_TIME,
1373d8536b4Sopenharmony_ci    TEST_WRITE,
1383d8536b4Sopenharmony_ci    TEST_READ,
1393d8536b4Sopenharmony_ci    TEST_DYNLOAD,
1403d8536b4Sopenharmony_ci    TEST_REGISTER,
1413d8536b4Sopenharmony_ci    TEST_SR,
1423d8536b4Sopenharmony_ci    TEST_UNAME,
1433d8536b4Sopenharmony_ci    TEST_MISC,
1443d8536b4Sopenharmony_ci    TEST_EXC,
1453d8536b4Sopenharmony_ci#if defined(LOSCFG_3RDPARTY_TEST)
1463d8536b4Sopenharmony_ci    TEST_THTTPD,
1473d8536b4Sopenharmony_ci    TEST_BIDIREFC,
1483d8536b4Sopenharmony_ci    TEST_CJSON,
1493d8536b4Sopenharmony_ci    TEST_CURL,
1503d8536b4Sopenharmony_ci    TEST_FFMPEG,
1513d8536b4Sopenharmony_ci    TEST_FREETYPE,
1523d8536b4Sopenharmony_ci    TEST_INIPARSER,
1533d8536b4Sopenharmony_ci    TEST_JSONCPP,
1543d8536b4Sopenharmony_ci    TEST_LIBICONV,
1553d8536b4Sopenharmony_ci    TEST_LIBJPEG,
1563d8536b4Sopenharmony_ci    TEST_LIBPNG,
1573d8536b4Sopenharmony_ci    TEST_OPENEXIF,
1583d8536b4Sopenharmony_ci    TEST_OPENSSL,
1593d8536b4Sopenharmony_ci    TEST_OPUS,
1603d8536b4Sopenharmony_ci    TEST_SQLITE,
1613d8536b4Sopenharmony_ci    TEST_TINYXML,
1623d8536b4Sopenharmony_ci#endif
1633d8536b4Sopenharmony_ci    TEST_DRIVERBASE,
1643d8536b4Sopenharmony_ci    TEST_DYNLINK,
1653d8536b4Sopenharmony_ci    TEST_LMS,
1663d8536b4Sopenharmony_ci} LiteOS_test_module;
1673d8536b4Sopenharmony_ci
1683d8536b4Sopenharmony_citypedef enum {
1693d8536b4Sopenharmony_ci    TEST_LOS = 0,
1703d8536b4Sopenharmony_ci    TEST_CMSIS,
1713d8536b4Sopenharmony_ci    TEST_POSIX,
1723d8536b4Sopenharmony_ci    TEST_LIB,
1733d8536b4Sopenharmony_ci    TEST_VFS,
1743d8536b4Sopenharmony_ci    TEST_EXTEND,
1753d8536b4Sopenharmony_ci    TEST_PARTITION,
1763d8536b4Sopenharmony_ci    TEST_CPP,
1773d8536b4Sopenharmony_ci    TEST_SHELL,
1783d8536b4Sopenharmony_ci    TEST_LINUX,
1793d8536b4Sopenharmony_ci    TEST_USB,
1803d8536b4Sopenharmony_ci#if defined(LOSCFG_3RDPARTY_TEST)
1813d8536b4Sopenharmony_ci    TEST_3RDPARTY,
1823d8536b4Sopenharmony_ci#endif
1833d8536b4Sopenharmony_ci    TEST_DRIVERFRAME,
1843d8536b4Sopenharmony_ci    TEST_CONTEXHUB
1853d8536b4Sopenharmony_ci} LiteOS_test_layer;
1863d8536b4Sopenharmony_ci
1873d8536b4Sopenharmony_citypedef enum {
1883d8536b4Sopenharmony_ci    TEST_LEVEL0 = 0,
1893d8536b4Sopenharmony_ci    TEST_LEVEL1,
1903d8536b4Sopenharmony_ci    TEST_LEVEL2,
1913d8536b4Sopenharmony_ci    TEST_LEVEL3
1923d8536b4Sopenharmony_ci} LiteOS_test_level;
1933d8536b4Sopenharmony_ci
1943d8536b4Sopenharmony_citypedef enum {
1953d8536b4Sopenharmony_ci    TEST_FUNCTION = 0,
1963d8536b4Sopenharmony_ci    TEST_PRESSURE,
1973d8536b4Sopenharmony_ci    TEST_PERFORMANCE
1983d8536b4Sopenharmony_ci} LiteOS_test_type;
1993d8536b4Sopenharmony_ci
2003d8536b4Sopenharmony_ci
2013d8536b4Sopenharmony_ciextern iUINT16 iCunit_errLineNo;
2023d8536b4Sopenharmony_ciextern iiUINT32 iCunit_errCode;
2033d8536b4Sopenharmony_ciextern void ICunitSaveErr(iiUINT32 line, iiUINT32 retCode);
2043d8536b4Sopenharmony_ci
2053d8536b4Sopenharmony_ci
2063d8536b4Sopenharmony_ci#define ICUNIT_UNINIT 0x0EF00000
2073d8536b4Sopenharmony_ci#define ICUNIT_OPENFILE_FAILED 0x0EF00001
2083d8536b4Sopenharmony_ci#define ICUNIT_ALLOC_FAIL 0x0EF00002
2093d8536b4Sopenharmony_ci#define ICUNIT_SUIT_FULL 0x0EF00002
2103d8536b4Sopenharmony_ci#define ICUNIT_CASE_FULL 0x0EF00003
2113d8536b4Sopenharmony_ci#define ICUNIT_SUIT_ALL 0x0EF0FFFF
2123d8536b4Sopenharmony_ci
2133d8536b4Sopenharmony_ci#define ICUNIT_SUCCESS 0x00000000
2143d8536b4Sopenharmony_ci
2153d8536b4Sopenharmony_ci#define ICUNIT_TRACK_EQUAL(param, value, retcode)       \
2163d8536b4Sopenharmony_ci    do {                                                \
2173d8536b4Sopenharmony_ci        if ((param) != (value)) {                       \
2183d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode); \
2193d8536b4Sopenharmony_ci        }                                               \
2203d8536b4Sopenharmony_ci    } while (0)
2213d8536b4Sopenharmony_ci
2223d8536b4Sopenharmony_ci#define ICUNIT_TRACK_NOT_EQUAL(param, value, retcode)   \
2233d8536b4Sopenharmony_ci    do {                                                \
2243d8536b4Sopenharmony_ci        if ((param) == (value)) {                       \
2253d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode); \
2263d8536b4Sopenharmony_ci        }                                               \
2273d8536b4Sopenharmony_ci    } while (0)
2283d8536b4Sopenharmony_ci
2293d8536b4Sopenharmony_ci#define ICUNIT_ASSERT_EQUAL_VOID(param, value, retcode) \
2303d8536b4Sopenharmony_ci    do {                                                \
2313d8536b4Sopenharmony_ci        if ((param) != (value)) {                       \
2323d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode); \
2333d8536b4Sopenharmony_ci            return;                                     \
2343d8536b4Sopenharmony_ci        }                                               \
2353d8536b4Sopenharmony_ci    } while (0)
2363d8536b4Sopenharmony_ci
2373d8536b4Sopenharmony_ci#define ICUNIT_ASSERT_NOT_EQUAL_VOID(param, value, retcode) \
2383d8536b4Sopenharmony_ci    do {                                                    \
2393d8536b4Sopenharmony_ci        if ((param) == (value)) {                           \
2403d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode);     \
2413d8536b4Sopenharmony_ci            return;                                         \
2423d8536b4Sopenharmony_ci        }                                                   \
2433d8536b4Sopenharmony_ci    } while (0)
2443d8536b4Sopenharmony_ci#define ICUNIT_ASSERT_EQUAL(param, value, retcode)      \
2453d8536b4Sopenharmony_ci    do {                                                \
2463d8536b4Sopenharmony_ci        if ((param) != (value)) {                       \
2473d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode); \
2483d8536b4Sopenharmony_ci            return 1;                                   \
2493d8536b4Sopenharmony_ci        }                                               \
2503d8536b4Sopenharmony_ci    } while (0)
2513d8536b4Sopenharmony_ci
2523d8536b4Sopenharmony_ci#define ICUNIT_ASSERT_NOT_EQUAL(param, value, retcode)  \
2533d8536b4Sopenharmony_ci    do {                                                \
2543d8536b4Sopenharmony_ci        if ((param) == (value)) {                       \
2553d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode); \
2563d8536b4Sopenharmony_ci            return 1;                                   \
2573d8536b4Sopenharmony_ci        }                                               \
2583d8536b4Sopenharmony_ci    } while (0)
2593d8536b4Sopenharmony_ci
2603d8536b4Sopenharmony_ci#define ICUNIT_ASSERT_WITHIN_EQUAL(param, value1, value2, retcode) \
2613d8536b4Sopenharmony_ci    do {                                                           \
2623d8536b4Sopenharmony_ci        if ((param) < (value1) || (param) > (value2)) {            \
2633d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode);            \
2643d8536b4Sopenharmony_ci            return 1;                                              \
2653d8536b4Sopenharmony_ci        }                                                          \
2663d8536b4Sopenharmony_ci    } while (0)
2673d8536b4Sopenharmony_ci
2683d8536b4Sopenharmony_ci#define ICUNIT_ASSERT_WITHIN_EQUAL_VOID(param, value1, value2, retcode) \
2693d8536b4Sopenharmony_ci    do {                                                                \
2703d8536b4Sopenharmony_ci        if ((param) < (value1) || (param) > (value2)) {                 \
2713d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode);                 \
2723d8536b4Sopenharmony_ci            return;                                                     \
2733d8536b4Sopenharmony_ci        }                                                               \
2743d8536b4Sopenharmony_ci    } while (0)
2753d8536b4Sopenharmony_ci
2763d8536b4Sopenharmony_ci#define ICUNIT_ASSERT_EQUAL_VOID(param, value, retcode) \
2773d8536b4Sopenharmony_ci    do {                                                \
2783d8536b4Sopenharmony_ci        if ((param) != (value)) {                       \
2793d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode); \
2803d8536b4Sopenharmony_ci            return;                                     \
2813d8536b4Sopenharmony_ci        }                                               \
2823d8536b4Sopenharmony_ci    } while (0)
2833d8536b4Sopenharmony_ci
2843d8536b4Sopenharmony_ci#define ICUNIT_ASSERT_SIZE_STRING_EQUAL(str1, str2, strsize, retcode) \
2853d8536b4Sopenharmony_ci    do {                                                              \
2863d8536b4Sopenharmony_ci        if (strncmp((str1), (str2), (strsize)) != 0) {                \
2873d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode);               \
2883d8536b4Sopenharmony_ci            return 1;                                                 \
2893d8536b4Sopenharmony_ci        }                                                             \
2903d8536b4Sopenharmony_ci    } while (0)
2913d8536b4Sopenharmony_ci
2923d8536b4Sopenharmony_ci#define ICUNIT_ASSERT_STRING_EQUAL(str1, str2, retcode) \
2933d8536b4Sopenharmony_ci    do {                                                \
2943d8536b4Sopenharmony_ci        if (strcmp(str1, str2) != 0) {                  \
2953d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode); \
2963d8536b4Sopenharmony_ci            return 1;                                   \
2973d8536b4Sopenharmony_ci        }                                               \
2983d8536b4Sopenharmony_ci    } while (0)
2993d8536b4Sopenharmony_ci
3003d8536b4Sopenharmony_ci#define ICUNIT_ASSERT_STRING_EQUAL_VOID(str1, str2, retcode)       \
3013d8536b4Sopenharmony_ci    do {                                                           \
3023d8536b4Sopenharmony_ci        if (strcmp((const char *)str1, (const char *)str2) != 0) { \
3033d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode);            \
3043d8536b4Sopenharmony_ci            return;                                                \
3053d8536b4Sopenharmony_ci        }                                                          \
3063d8536b4Sopenharmony_ci    } while (0)
3073d8536b4Sopenharmony_ci
3083d8536b4Sopenharmony_ci#define ICUNIT_ASSERT_STRING_NOT_EQUAL(str1, str2, retcode) \
3093d8536b4Sopenharmony_ci    do {                                                    \
3103d8536b4Sopenharmony_ci        if (strcmp(str1, str2) == 0) {                      \
3113d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode);     \
3123d8536b4Sopenharmony_ci            return 1;                                       \
3133d8536b4Sopenharmony_ci        }                                                   \
3143d8536b4Sopenharmony_ci    } while (0)
3153d8536b4Sopenharmony_ci
3163d8536b4Sopenharmony_ci#define ICUNIT_GOTO_EQUAL(param, value, retcode, label) \
3173d8536b4Sopenharmony_ci    do {                                                \
3183d8536b4Sopenharmony_ci        if ((param) != (value)) {                       \
3193d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode); \
3203d8536b4Sopenharmony_ci            goto label;                                 \
3213d8536b4Sopenharmony_ci        }                                               \
3223d8536b4Sopenharmony_ci    } while (0)
3233d8536b4Sopenharmony_ci
3243d8536b4Sopenharmony_ci#define ICUNIT_GOTO_NOT_EQUAL(param, value, retcode, label) \
3253d8536b4Sopenharmony_ci    do {                                                    \
3263d8536b4Sopenharmony_ci        if ((param) == (value)) {                           \
3273d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode);     \
3283d8536b4Sopenharmony_ci            goto label;                                     \
3293d8536b4Sopenharmony_ci        }                                                   \
3303d8536b4Sopenharmony_ci    } while (0)
3313d8536b4Sopenharmony_ci
3323d8536b4Sopenharmony_ci#define ICUNIT_GOTO_STRING_EQUAL(str1, str2, retcode, label) \
3333d8536b4Sopenharmony_ci    do {                                                     \
3343d8536b4Sopenharmony_ci        if (strcmp(str1, str2) != 0) {                       \
3353d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode);      \
3363d8536b4Sopenharmony_ci            goto label;                                      \
3373d8536b4Sopenharmony_ci        }                                                    \
3383d8536b4Sopenharmony_ci    } while (0)
3393d8536b4Sopenharmony_ci
3403d8536b4Sopenharmony_ci#define ICUNIT_GOTO_STRING_NOT_EQUAL(str1, str2, retcode, label) \
3413d8536b4Sopenharmony_ci    do {                                                         \
3423d8536b4Sopenharmony_ci        if (strcmp(str1, str2) == 0) {                           \
3433d8536b4Sopenharmony_ci            ICunitSaveErr(__LINE__, (iiUINT32)retcode);          \
3443d8536b4Sopenharmony_ci            goto label;                                          \
3453d8536b4Sopenharmony_ci        }                                                        \
3463d8536b4Sopenharmony_ci    } while (0)
3473d8536b4Sopenharmony_ci
3483d8536b4Sopenharmony_ciextern iUINT32 iCunitAddSuit_F(iCHAR *suitName, iCHAR *pfileName);
3493d8536b4Sopenharmony_ci#define iCunitAddSuit(suitName) iCunitAddSuit_F(suitName, __FILE__)
3503d8536b4Sopenharmony_ci
3513d8536b4Sopenharmony_ciextern iUINT32 ICunitAddCase(iCHAR *caseName, CASE_FUNCTION caseFunc, iUINT16 testcaseLayer, iUINT16 testcaseModule,
3523d8536b4Sopenharmony_ci    iUINT16 testcaseLevel, iUINT16 testcaseType);
3533d8536b4Sopenharmony_ci
3543d8536b4Sopenharmony_ciextern iUINT32 ICunitRun(void);
3553d8536b4Sopenharmony_ciextern iUINT32 ICunitInit(void);
3563d8536b4Sopenharmony_ciextern iUINT32 iCunitPrintReport(void);
3573d8536b4Sopenharmony_ci
3583d8536b4Sopenharmony_ci
3593d8536b4Sopenharmony_ci#define TEST_ADD_CASE(name, casefunc, testcase_layer, testcase_module, testcase_level, testcase_type)         \
3603d8536b4Sopenharmony_ci    do {                                                                                                      \
3613d8536b4Sopenharmony_ci        iUINT32 uwRet = 1;                                                                                    \
3623d8536b4Sopenharmony_ci        uwRet = ICunitAddCase(name, (CASE_FUNCTION)casefunc, testcase_layer, testcase_module, testcase_level, \
3633d8536b4Sopenharmony_ci            testcase_type);                                                                                   \
3643d8536b4Sopenharmony_ci        ICUNIT_ASSERT_EQUAL_VOID(uwRet, ICUNIT_SUCCESS, uwRet);                                               \
3653d8536b4Sopenharmony_ci    } while (0)
3663d8536b4Sopenharmony_ci
3673d8536b4Sopenharmony_ci#define TEST_RUN_SUITE()                                                   \
3683d8536b4Sopenharmony_ci    do {                                                                   \
3693d8536b4Sopenharmony_ci        UINT32 uiRet;                                                      \
3703d8536b4Sopenharmony_ci        uiRet = ICunitRun();                                               \
3713d8536b4Sopenharmony_ci        ICUNIT_ASSERT_NOT_EQUAL_VOID(uiRet, ICUNIT_UNINIT, ICUNIT_UNINIT); \
3723d8536b4Sopenharmony_ci    } while (0)
3733d8536b4Sopenharmony_ci
3743d8536b4Sopenharmony_ci#ifdef __cplusplus
3753d8536b4Sopenharmony_ci#if __cplusplus
3763d8536b4Sopenharmony_ci}
3773d8536b4Sopenharmony_ci#endif /* __cplusplus */
3783d8536b4Sopenharmony_ci#endif /* __cplusplus */
3793d8536b4Sopenharmony_ci
3803d8536b4Sopenharmony_ci#endif /* _UNI_ICUNIT_H */
381