#ifndef _JTEST_GROUP_DEFINE_H_
|
#define _JTEST_GROUP_DEFINE_H_
|
|
|
/*--------------------------------------------------------------------------------*/
|
/* Includes */
|
/*--------------------------------------------------------------------------------*/
|
|
#include "jtest_util.h"
|
#include "jtest_define.h"
|
#include "jtest_group.h"
|
|
/* For defining macros with optional arguments */
|
#include "opt_arg/opt_arg.h"
|
|
/*--------------------------------------------------------------------------------*/
|
/* Macros and Defines */
|
/*--------------------------------------------------------------------------------*/
|
|
/**
|
* Prefix for all #JTEST_GROUP_t structs.
|
*/
|
#define JTEST_GROUP_STRUCT_NAME_PREFIX G_JTEST_GROUP_STRUCT_
|
|
/**
|
* Define test template used by #JTEST_GROUP_t tests.
|
*/
|
#define JTEST_GROUP_FN_TEMPLATE(group_fn) \
|
void group_fn(void)
|
|
#define JTEST_GROUP_FN_PROTOTYPE JTEST_GROUP_FN_TEMPLATE /**< Alias for
|
#JTEST_GROUP_FN_TEMPLATE. */
|
|
/**
|
* Evaluate to the name of the #JTEST_GROUP_t struct associated with group_fn.
|
*/
|
#define JTEST_GROUP_STRUCT_NAME(group_fn) \
|
JTEST_STRUCT_NAME(JTEST_GROUP_STRUCT_NAME_PREFIX, group_fn)
|
|
/**
|
* Define a #JTEST_GROUP_t struct based on the given group_fn.
|
*/
|
#define JTEST_GROUP_DEFINE_STRUCT(group_fn) \
|
JTEST_DEFINE_STRUCT(JTEST_GROUP_t, \
|
JTEST_GROUP_STRUCT_NAME(group_fn))
|
|
/**
|
* Declare a #JTEST_GROUP_t struct based on the given group_fn.
|
*/
|
#define JTEST_GROUP_DECLARE_STRUCT(group_fn) \
|
JTEST_DECLARE_STRUCT(JTEST_GROUP_DEFINE_STRUCT(group_fn))
|
|
/**
|
* Contents needed to initialize a JTEST_GROUP_t struct.
|
*/
|
#define JTEST_GROUP_STRUCT_INIT(group_fn) \
|
group_fn, \
|
STR_NL(group_fn), \
|
JTEST_PF_MEMBER_INIT
|
|
/**
|
* Initialize the contents of a #JTEST_GROUP_t struct.
|
*/
|
#define JTEST_GROUP_INIT(group_fn) \
|
JTEST_GROUP_DEFINE_STRUCT(group_fn) = { \
|
JTEST_GROUP_STRUCT_INIT(group_fn) \
|
}
|
|
/* Test Definition Macro */
|
/*--------------------------------------------------------------------------------*/
|
|
/**
|
* Define a #JTEST_GROUP_t object and a test function.
|
*/
|
#define JTEST_DEFINE_GROUP(group_fn) \
|
JTEST_GROUP_FN_PROTOTYPE(group_fn); \
|
JTEST_GROUP_INIT(group_fn); \
|
JTEST_GROUP_FN_PROTOTYPE(group_fn) /* Notice the lacking semicolon */
|
|
/**
|
* Declare a #JTEST_GROUP_t object and a test function prototype.
|
*/
|
#define JTEST_DECLARE_GROUP(group_fn) \
|
JTEST_GROUP_FN_PROTOTYPE(group_fn); \
|
JTEST_GROUP_DECLARE_STRUCT(group_fn) /* Note the lacking semicolon */
|
|
#endif /* _JTEST_GROUP_DEFINE_H_ */
|