src/cx/test.h

Sun, 23 Nov 2025 13:15:19 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 23 Nov 2025 13:15:19 +0100
changeset 1508
dfc0ddd9571e
parent 1426
3a89b31f0724
permissions
-rw-r--r--

optimize sorted insertion by using the infimum instead of the supremum

The reason is that the supremum returns the equal element with the smallest index, and we want the largest.
Therefore, we use the infimum, which already gives us the largest index when there are equal elements, and increase the index by one. The infimum is also guaranteed to exist in that case.

766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 /*
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 * Copyright 2017 Mike Becker, Olaf Wintermann All rights reserved.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27 */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
28
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
29 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30 * @file: test.h
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
31 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
32 * UCX Test Framework.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
33 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
34 * Usage of this test framework:
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
35 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
36 * **** IN HEADER FILE: ****
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
37 *
1098
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
38 * <code>
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
39 * CX_TEST(function_name);
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
40 * CX_TEST_SUBROUTINE(subroutine_name, paramlist); // optional
1098
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
41 * </code>
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
42 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
43 * **** IN SOURCE FILE: ****
1098
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
44 * <code>
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
45 * CX_TEST_SUBROUTINE(subroutine_name, paramlist) {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
46 * // tests with CX_TEST_ASSERT()
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
47 * }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
48 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
49 * CX_TEST(function_name) {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
50 * // memory allocation and other stuff here
767
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
51 * #CX_TEST_DO {
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
52 * // tests with CX_TEST_ASSERT() and/or
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
53 * // calls with CX_TEST_CALL_SUBROUTINE() here
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
54 * }
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
55 * // cleanup of memory here
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
56 * }
1098
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
57 * </code>
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
58 *
1424
563033aa998c fixes tons of typos and grammar issues across the documentation - fixes #667
Mike Becker <universe@uap-core.de>
parents: 1098
diff changeset
59 * @attention Do not call own functions within a test that use
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
60 * CX_TEST_ASSERT() macros and are not defined by using CX_TEST_SUBROUTINE().
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
61 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
62 * @author Mike Becker
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
63 * @author Olaf Wintermann
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
64 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
65 */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
66
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
67 #ifndef UCX_TEST_H
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
68 #define UCX_TEST_H
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
69
959
0e1bf3c199bf add common.h include to test.h - fixes #464
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
70 #include "common.h"
0e1bf3c199bf add common.h include to test.h - fixes #464
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
71
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
72 #include <stdio.h>
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
73 #include <string.h>
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
74 #include <setjmp.h>
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
75
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
76 #ifdef __cplusplus
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
77 extern "C" {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
78 #endif
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
79
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
80 #ifndef __FUNCTION__
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
81 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
82 * Alias for the <code>__func__</code> preprocessor macro.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
83 * Some compilers use <code>__func__</code> and others use __FUNCTION__.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
84 * We use __FUNCTION__ so we define it for those compilers which use
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
85 * <code>__func__</code>.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
86 */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
87 #define __FUNCTION__ __func__
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
88 #endif
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
89
814
5f9e07d3dd6c fix using warning options with compilers which do not support them - fixes #363
Mike Becker <universe@uap-core.de>
parents: 784
diff changeset
90 #if !defined(__clang__) && __GNUC__ > 3
5f9e07d3dd6c fix using warning options with compilers which do not support them - fixes #363
Mike Becker <universe@uap-core.de>
parents: 784
diff changeset
91 #pragma GCC diagnostic ignored "-Wclobbered"
5f9e07d3dd6c fix using warning options with compilers which do not support them - fixes #363
Mike Becker <universe@uap-core.de>
parents: 784
diff changeset
92 #endif
5f9e07d3dd6c fix using warning options with compilers which do not support them - fixes #363
Mike Becker <universe@uap-core.de>
parents: 784
diff changeset
93
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
94 /** Type for the CxTestSuite. */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
95 typedef struct CxTestSuite CxTestSuite;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
96
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
97 /** Pointer to a test function. */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
98 typedef void(*CxTest)(CxTestSuite *, void *, cx_write_func);
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
99
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
100 /** Type for the internal list of test cases. */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
101 typedef struct CxTestSet CxTestSet;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
102
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
103 /** Structure for the internal list of test cases. */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
104 struct CxTestSet {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
105
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
106 /** Test case. */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
107 CxTest test;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
108
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
109 /** Pointer to the next list element. */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
110 CxTestSet *next;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
111 };
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
112
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
113 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
114 * A test suite containing multiple test cases.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
115 */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
116 struct CxTestSuite {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
117
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
118 /** The number of successful tests after the suite has been run. */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
119 unsigned int success;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
120
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
121 /** The number of failed tests after the suite has been run. */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
122 unsigned int failure;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
123
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
124 /** The optional name of this test suite. */
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 814
diff changeset
125 const char *name;
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
126
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
127 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
128 * Internal list of test cases.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
129 * Use cx_test_register() to add tests to this list.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
130 */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
131 CxTestSet *tests;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
132 };
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
133
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
134 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
135 * Creates a new test suite.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
136 * @param name optional name of the suite
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
137 * @return a new test suite
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
138 */
1426
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1424
diff changeset
139 cx_attr_nonnull cx_attr_nodiscard cx_attr_cstr_arg(1) cx_attr_malloc
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 814
diff changeset
140 static inline CxTestSuite* cx_test_suite_new(const char *name) {
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
141 CxTestSuite* suite = (CxTestSuite*) malloc(sizeof(CxTestSuite));
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
142 if (suite != NULL) {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
143 suite->name = name;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
144 suite->success = 0;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
145 suite->failure = 0;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
146 suite->tests = NULL;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
147 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
148
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
149 return suite;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
150 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
151
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
152 /**
993
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
153 * Deallocates a test suite.
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
154 *
b642eca4b956 make names of destroy and free functions consistent - fixes #484
Mike Becker <universe@uap-core.de>
parents: 985
diff changeset
155 * @param suite the test suite to free
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
156 */
1426
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1424
diff changeset
157 CX_INLINE void cx_test_suite_free(CxTestSuite* suite) {
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 959
diff changeset
158 if (suite == NULL) return;
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
159 CxTestSet *l = suite->tests;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
160 while (l != NULL) {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
161 CxTestSet *e = l;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
162 l = l->next;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
163 free(e);
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
164 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
165 free(suite);
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
166 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
167
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
168 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
169 * Registers a test function with the specified test suite.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
170 *
1424
563033aa998c fixes tons of typos and grammar issues across the documentation - fixes #667
Mike Becker <universe@uap-core.de>
parents: 1098
diff changeset
171 * @param suite the suite the test function shall be added to
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
172 * @param test the test function to register
1098
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
173 * @retval zero success
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
174 * @retval non-zero failure
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
175 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 959
diff changeset
176 cx_attr_nonnull
1426
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1424
diff changeset
177 CX_INLINE int cx_test_register(CxTestSuite* suite, CxTest test) {
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
178 CxTestSet *t = (CxTestSet*) malloc(sizeof(CxTestSet));
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
179 if (t) {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
180 t->test = test;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
181 t->next = NULL;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
182 if (suite->tests == NULL) {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
183 suite->tests = t;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
184 } else {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
185 CxTestSet *last = suite->tests;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
186 while (last->next) {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
187 last = last->next;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
188 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
189 last->next = t;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
190 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
191 return 0;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
192 } else {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
193 return 1;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
194 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
195 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
196
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
197 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
198 * Runs a test suite and writes the test log to the specified stream.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
199 * @param suite the test suite to run
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
200 * @param out_target the target buffer or file to write the output to
1098
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
201 * @param out_writer the write function writing to @p out_target
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
202 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 959
diff changeset
203 cx_attr_nonnull
1426
3a89b31f0724 clean up header files and adds support for comparing arbitrary strings with string.h functions
Mike Becker <universe@uap-core.de>
parents: 1424
diff changeset
204 CX_INLINE void cx_test_run(CxTestSuite *suite, void *out_target, cx_write_func out_writer) {
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
205 if (suite->name == NULL) {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
206 out_writer("*** Test Suite ***\n", 1, 19, out_target);
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
207 } else {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
208 out_writer("*** Test Suite : ", 1, 17, out_target);
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
209 out_writer(suite->name, 1, strlen(suite->name), out_target);
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
210 out_writer(" ***\n", 1, 5, out_target);
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
211 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
212 suite->success = 0;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
213 suite->failure = 0;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
214 for (CxTestSet *elem = suite->tests; elem; elem = elem->next) {
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
215 elem->test(suite, out_target, out_writer);
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
216 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
217 out_writer("\nAll test completed.\n", 1, 21, out_target);
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
218 char total[80];
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
219 int len = snprintf(
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
220 total, 80,
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 767
diff changeset
221 " Total: %u\n Success: %u\n Failure: %u\n\n",
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
222 suite->success + suite->failure, suite->success, suite->failure
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
223 );
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
224 out_writer(total, 1, len, out_target);
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
225 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
226
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
227 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
228 * Runs a test suite and writes the test log to the specified FILE stream.
1098
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
229 * @param suite (@c CxTestSuite*) the test suite to run
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
230 * @param file (@c FILE*) the target file to write the output to
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
231 */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
232 #define cx_test_run_f(suite, file) cx_test_run(suite, (void*)file, (cx_write_func)fwrite)
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
233
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
234 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
235 * Runs a test suite and writes the test log to stdout.
1098
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
236 * @param suite (@c CxTestSuite*) the test suite to run
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
237 */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
238 #define cx_test_run_stdout(suite) cx_test_run_f(suite, stdout)
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
239
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
240 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
241 * Macro for a #CxTest function header.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
242 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
243 * Use this macro to declare and/or define a #CxTest function.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
244 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
245 * @param name the name of the test function
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
246 */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
247 #define CX_TEST(name) void name(CxTestSuite* _suite_,void *_output_, cx_write_func _writefnc_)
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
248
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
249 /**
767
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
250 * Defines the scope of a test.
1098
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
251 *
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
252 * @code
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
253 * CX_TEST(my_test_name) {
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
254 * // setup code
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
255 * CX_TEST_DO {
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
256 * // your tests go here
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
257 * }
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
258 * // tear down code
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
259 * }
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
260 * @endcode
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
261 *
1424
563033aa998c fixes tons of typos and grammar issues across the documentation - fixes #667
Mike Becker <universe@uap-core.de>
parents: 1098
diff changeset
262 * @attention Any CX_TEST_ASSERT() calls must be performed in the scope of
767
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
263 * #CX_TEST_DO.
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
264 */
767
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
265 #define CX_TEST_DO _writefnc_("Running ", 1, 8, _output_);\
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
266 _writefnc_(__FUNCTION__, 1, strlen(__FUNCTION__), _output_);\
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
267 _writefnc_("... ", 1, 4, _output_);\
767
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
268 jmp_buf _env_;\
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
269 for (unsigned int _cx_test_loop_ = 0 ;\
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
270 _cx_test_loop_ == 0 && !setjmp(_env_);\
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
271 _writefnc_("success.\n", 1, 9, _output_),\
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
272 _suite_->success++, _cx_test_loop_++)
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
273
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
274 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
275 * Checks a test assertion.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
276 * If the assertion is correct, the test carries on. If the assertion is not
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
277 * correct, the specified message (terminated by a dot and a line break) is
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
278 * written to the test suites output stream.
1098
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
279 * @param condition (@c bool) the condition to check
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
280 * @param message (@c char*) the message that shall be printed out on failure
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
281 */
767
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
282 #define CX_TEST_ASSERTM(condition,message) if (!(condition)) { \
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 814
diff changeset
283 const char *_assert_msg_ = message; \
767
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
284 _writefnc_(_assert_msg_, 1, strlen(_assert_msg_), _output_); \
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
285 _writefnc_(".\n", 1, 2, _output_); \
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
286 _suite_->failure++; \
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
287 longjmp(_env_, 1);\
767
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
288 } (void) 0
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
289
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
290 /**
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
291 * Checks a test assertion.
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
292 * If the assertion is correct, the test carries on. If the assertion is not
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
293 * correct, the specified message (terminated by a dot and a line break) is
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
294 * written to the test suites output stream.
1098
4f6346a7dd78 refine docs for test.h - issue #548
Mike Becker <universe@uap-core.de>
parents: 993
diff changeset
295 * @param condition (@c bool) the condition to check
767
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
296 */
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
297 #define CX_TEST_ASSERT(condition) CX_TEST_ASSERTM(condition, #condition " failed")
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
298
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
299 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
300 * Macro for a test subroutine function header.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
301 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
302 * Use this to declare and/or define a subroutine that can be called by using
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
303 * CX_TEST_CALL_SUBROUTINE().
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
304 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
305 * @param name the name of the subroutine
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
306 * @param ... the parameter list
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
307 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
308 * @see CX_TEST_CALL_SUBROUTINE()
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
309 */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
310 #define CX_TEST_SUBROUTINE(name,...) void name(CxTestSuite* _suite_,\
784
ba5faf85dec6 fix broken CX_TEST_SUBROUTINE - relates to #341
Mike Becker <universe@uap-core.de>
parents: 768
diff changeset
311 void *_output_, cx_write_func _writefnc_, jmp_buf _env_, __VA_ARGS__)
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
312
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
313 /**
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
314 * Macro for calling a test subroutine.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
315 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
316 * Subroutines declared with CX_TEST_SUBROUTINE() can be called by using this
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
317 * macro.
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
318 *
767
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
319 * @remark You may <b>only</b> call subroutines within a #CX_TEST_DO block.
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
320 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
321 * @param name the name of the subroutine
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
322 * @param ... the argument list
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
323 *
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
324 * @see CX_TEST_SUBROUTINE()
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
325 */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
326 #define CX_TEST_CALL_SUBROUTINE(name,...) \
784
ba5faf85dec6 fix broken CX_TEST_SUBROUTINE - relates to #341
Mike Becker <universe@uap-core.de>
parents: 768
diff changeset
327 name(_suite_,_output_,_writefnc_,_env_,__VA_ARGS__)
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
328
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
329 #ifdef __cplusplus
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
330 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
331 #endif
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
332
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
333 #endif /* UCX_TEST_H */
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
334

mercurial