Subversion Repositories CharLCD

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
#ifndef _JTEST_PF_H_
2
#define _JTEST_PF_H_
3
 
4
/*--------------------------------------------------------------------------------*/
5
/* Purpose */
6
/*--------------------------------------------------------------------------------*/
7
/* jtest_pf.h Contains macros useful for capturing pass/fail data. */
8
 
9
 
10
/*--------------------------------------------------------------------------------*/
11
/* Macros and Defines */
12
/*--------------------------------------------------------------------------------*/
13
 
14
/**
15
 * Members that can be added to other structs to extend them pass/fail data and
16
 * corresponding functionality.
17
 */
18
#define JTEST_PF_MEMBERS                            \
19
    uint32_t passed;                                \
20
    uint32_t failed /* Note the lacking semicolon*/ \
21
 
22
/**
23
 *  Used for initializing JTEST_PF_MEMBERS in a struct declaration.
24
 */
25
#define JTEST_PF_MEMBER_INIT                    \
26
    0,                                          \
27
 
28
 
29
/* Member-Incrementing Macros */
30
/*--------------------------------------------------------------------------------*/
31
 
32
/**
33
 *  Dispatch macro for incrementing #JTEST_PF_MEMBERS.
34
 *
35
 *  @param xxx Values: 'passed', 'failed'
36
 */
37
#define JTEST_PF_INC_XXX(xxx, struct_pf_ptr, amount)    \
38
    do                                                  \
39
    {                                                   \
40
        ((struct_pf_ptr)->xxx) += (amount);             \
41
    } while (0)
42
 
43
/**
44
 *  Specialization of the #JTEST_PF_INC_XXX macro to increment the passed
45
 *  member.
46
 */
47
#define JTEST_PF_INC_PASSED(struct_pf_ptr, amount)  \
48
    JTEST_PF_INC_XXX(passed, struct_pf_ptr, amount)
49
 
50
 
51
/**
52
 *  Specialization of the #JTEST_PF_INC_XXX macro to increment the failed
53
 *  member.
54
 */
55
#define JTEST_PF_INC_FAILED(struct_pf_ptr, amount)  \
56
    JTEST_PF_INC_XXX(failed, struct_pf_ptr, amount)
57
 
58
 
59
/* Member-Resetting Macros */
60
/*--------------------------------------------------------------------------------*/
61
 
62
/**
63
 *  Dispatch macro for setting #JTEST_PF_MEMBERS to zero.
64
 *
65
 *  @param xxx Values: 'passed', 'failed'
66
 */
67
#define JTEST_PF_RESET_XXX(xxx, struct_pf_ptr)  \
68
    do                                          \
69
    {                                           \
70
        ((struct_pf_ptr)->xxx) = UINT32_C(0);   \
71
    } while (0)
72
 
73
/**
74
 *  Specialization of #JTEST_PF_RESET_XXX for the 'passed' member.
75
 */
76
#define JTEST_PF_RESET_PASSED(struct_pf_ptr)    \
77
    JTEST_PF_RESET_XXX(passed, struct_pf_ptr)
78
 
79
/**
80
 *  Specialization of #JTEST_PF_RESET_XXX for the 'failed' member.
81
 */
82
#define JTEST_PF_RESET_FAILED(struct_pf_ptr)    \
83
    JTEST_PF_RESET_XXX(failed, struct_pf_ptr)
84
 
85
#endif /* _JTEST_PF_H_ */