tests: add libbabeltrace2 pre/postcondition testing infrastructure
[babeltrace.git] / tests / lib / conds / utils.h
1 /*
2 * SPDX-License-Identifier: GPL-2.0-only
3 *
4 * Copyright (C) 2020 Philippe Proulx <pproulx@efficios.com>
5 */
6
7 #ifndef TESTS_LIB_CONDS_UTILS_H
8 #define TESTS_LIB_CONDS_UTILS_H
9
10 enum cond_trigger_func_type {
11 COND_TRIGGER_FUNC_TYPE_BASIC,
12 COND_TRIGGER_FUNC_TYPE_RUN_IN_COMP_CLS_INIT,
13 };
14
15 enum cond_trigger_type {
16 COND_TRIGGER_TYPE_PRE,
17 COND_TRIGGER_TYPE_POST,
18 };
19
20 typedef void (* cond_trigger_basic_func)(void);
21 typedef void (* cond_trigger_run_in_comp_cls_init_func)(bt_self_component *);
22
23 struct cond_trigger {
24 enum cond_trigger_type type;
25 enum cond_trigger_func_type func_type;
26 const char *cond_id;
27 const char *suffix;
28 union {
29 cond_trigger_basic_func basic;
30 cond_trigger_run_in_comp_cls_init_func run_in_comp_cls_init;
31 } func;
32 };
33
34 #define COND_TRIGGER_PRE_BASIC(_cond_id, _suffix, _func) \
35 { \
36 .type = COND_TRIGGER_TYPE_PRE, \
37 .func_type = COND_TRIGGER_FUNC_TYPE_BASIC, \
38 .cond_id = _cond_id, \
39 .suffix = _suffix, \
40 .func = { \
41 .basic = _func, \
42 } \
43 }
44
45 #define COND_TRIGGER_POST_BASIC(_cond_id, _suffix, _func) \
46 { \
47 .type = COND_TRIGGER_TYPE_POST, \
48 .func_type = COND_TRIGGER_FUNC_TYPE_BASIC, \
49 .cond_id = _cond_id, \
50 .suffix = _suffix, \
51 .func = { \
52 .basic = _func, \
53 } \
54 }
55
56 #define COND_TRIGGER_PRE_RUN_IN_COMP_CLS_INIT(_cond_id, _suffix, _func) \
57 { \
58 .type = COND_TRIGGER_TYPE_PRE, \
59 .func_type = COND_TRIGGER_FUNC_TYPE_RUN_IN_COMP_CLS_INIT, \
60 .cond_id = _cond_id, \
61 .suffix = _suffix, \
62 .func = { \
63 .run_in_comp_cls_init = _func, \
64 } \
65 }
66
67 #define COND_TRIGGER_POST_RUN_IN_COMP_CLS_INIT(_cond_id, _suffix, _func) \
68 { \
69 .type = COND_TRIGGER_TYPE_POST, \
70 .func_type = COND_TRIGGER_FUNC_TYPE_RUN_IN_COMP_CLS_INIT, \
71 .cond_id = _cond_id, \
72 .suffix = _suffix, \
73 .func = { \
74 .run_in_comp_cls_init = _func, \
75 } \
76 }
77
78 void cond_main(int argc, const char *argv[],
79 const struct cond_trigger triggers[],
80 size_t trigger_count);
81
82 #endif /* TESTS_LIB_CONDS_UTILS_H */
This page took 0.030744 seconds and 4 git commands to generate.