summaryrefslogtreecommitdiff
path: root/fw/cdc-dials/Drivers/CMSIS/DSP/DSP_Lib_TestSuite/Common/JTest/inc/jtest_test_call.h
blob: 93251857c4bc11505c540af5cd7ba813a7bcc14d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#ifndef _JTEST_TEST_CALL_H_
#define _JTEST_TEST_CALL_H_

/*--------------------------------------------------------------------------------*/
/* Includes */
/*--------------------------------------------------------------------------------*/
#include "jtest_test.h"
#include "jtest_test_define.h"
#include "jtest_fw.h"

/*--------------------------------------------------------------------------------*/
/* Macros and Defines */
/*--------------------------------------------------------------------------------*/

/**
 *  Exectute the test in the #JTEST_TEST_t struct associated with the identifier
 *  test_fn and store the result in retval.
 */
#define JTEST_TEST_RUN(retval, test_fn)                                 \
    do                                                                  \
    {                                                                   \
        JTEST_DUMP_STR("Test Name:\n");                                 \
        JTEST_DUMP_STR(JTEST_TEST_STRUCT_NAME(test_fn).test_fn_str);    \
        JTEST_DUMP_STR("Function Under Test:\n");                       \
        JTEST_DUMP_STR(JTEST_TEST_STRUCT_NAME(test_fn).fut_str);        \
        retval = JTEST_TEST_STRUCT_NAME(test_fn).test_fn_ptr();         \
    } while (0)

/**
 *  Update the enclosing #JTEST_GROUP_t's pass/fail information based on
 *  test_retval.
 *
 *  @param test_retval A #JTEST_TEST_RET_enum for the current test.
 *
 *  @warning Only use if #JTEST_TEST_t is called in the context of a
 *  #JTEST_GROUP_t.
 */
#define JTEST_TEST_UPDATE_PARENT_GROUP_PF(test_retval)              \
    do                                                              \
    {                                                               \
        /* Update enclosing JTEST_GROUP_t with pass/fail info */    \
        if (test_retval == JTEST_TEST_PASSED)                       \
        {                                                           \
            JTEST_GROUP_INC_PASSED(JTEST_CURRENT_GROUP_PTR(), 1);   \
        } else {                                                    \
            JTEST_GROUP_INC_FAILED(JTEST_CURRENT_GROUP_PTR(), 1);   \
        }                                                           \
    } while (0)

/**
 *  Update the #JTEST_FW with pass/fail information based on test_retval.
 *
 *  @param test_retval A #JTEST_TEST_RET_enum for the current test.
 */
#define JTEST_TEST_UPDATE_FW_PF(test_retval)                        \
    do                                                              \
    {                                                               \
        /* Update the JTEST_FW with pass/fail info */                \
        if (test_retval == JTEST_TEST_PASSED)                       \
        {                                                           \
            JTEST_FW_INC_PASSED( 1);                                \
        } else {                                                    \
            JTEST_FW_INC_FAILED(1);                                 \
        }                                                           \
    } while (0)

/**
 *  Update the enclosing JTEST_GROUP_t's pass/fail information, or the
 *  #JTEST_FW's if this test has no enclosing #JTEST_GROUP_t.
 *
 *  @param test_retval A #JTEST_TEST_RET_enum for the current test.
 */
#define JTEST_TEST_UPDATE_PARENT_GROUP_OR_FW_PF(test_retval)            \
    do                                                                  \
    {                                                                   \
        /* Update pass-fail information */                              \
        if (JTEST_CURRENT_GROUP_PTR() /* Non-null */)                    \
        {                                                               \
            JTEST_TEST_UPDATE_PARENT_GROUP_PF(test_retval);             \
        } else {                                                        \
            JTEST_TEST_UPDATE_FW_PF(test_retval);                       \
        }                                                               \
    } while (0)

/**
 *  Dump the results of the test to the Keil Debugger.
 */
#define JTEST_TEST_DUMP_RESULTS(test_retval)        \
        do                                          \
        {                                           \
            if (test_retval == JTEST_TEST_PASSED)   \
            {                                       \
                JTEST_DUMP_STR("Test Passed\n");      \
            } else {                                \
                JTEST_DUMP_STR("Test Failed\n");      \
            }                                       \
        } while (0)

/**
 *  Call the #JTEST_TEST_t assocaited with the identifier test_fn.
 */
#define JTEST_TEST_CALL(test_fn)                                        \
    do                                                                  \
    {                                                                   \
        if (JTEST_TEST_IS_ENABLED(&JTEST_TEST_STRUCT_NAME(test_fn)))    \
        {                                                               \
            /* Default to failure */                                    \
            JTEST_TEST_RET_t __jtest_test_ret = JTEST_TEST_FAILED;      \
                                                                        \
            JTEST_ACT_TEST_START();                                     \
            JTEST_TEST_RUN(__jtest_test_ret, test_fn);                  \
                                                                        \
            /* Update pass-fail information */                          \
            JTEST_TEST_UPDATE_PARENT_GROUP_OR_FW_PF(__jtest_test_ret);  \
                                                                        \
            JTEST_TEST_DUMP_RESULTS(__jtest_test_ret);                  \
            JTEST_ACT_TEST_END();                                       \
        }                                                               \
    } while (0)

#endif /* _JTEST_TEST_CALL_H_ */