tests/ucxtest.c

Fri, 23 May 2025 12:44:24 +0200

author
Mike Becker <universe@uap-core.de>
date
Fri, 23 May 2025 12:44:24 +0200
changeset 1327
ed75dc1db503
parent 1318
12fa1d37fe48
child 1328
2cf66dee40b8
permissions
-rw-r--r--

make test-compile depend on both static and shared

the shared lib is not needed for the tests,
but when run with coverage, gcov will be confused
when outdated line information is available from
a previous shared build

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 2023 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
1318
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
29 #include "util_allocator.h"
946
b428424c0214 avoid state buffer allocation for JSON with reasonable nesting depth
Mike Becker <universe@uap-core.de>
parents: 937
diff changeset
30 #include "cx/common.h"
767
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
31 #include "cx/test.h"
d31f4d4075dc migrate utils tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 766
diff changeset
32
770
ed710122af44 migrates self-test for testing allocator - relates to #342
Mike Becker <universe@uap-core.de>
parents: 768
diff changeset
33 CxTestSuite *cx_test_suite_testing_allocator(void);
970
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
34 CxTestSuite *cx_test_suite_szmul(void);
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
35 CxTestSuite *cx_test_suite_allocator(void);
971
cc204fc56c9c rename utils.h to streams.h
Mike Becker <universe@uap-core.de>
parents: 970
diff changeset
36 CxTestSuite *cx_test_suite_streams(void);
787
d0f02310aa47 migrate compare tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 785
diff changeset
37 CxTestSuite *cx_test_suite_compare(void);
780
9965df621652 migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
38 CxTestSuite *cx_test_suite_string(void);
1052
e997862a57d8 add temporary implementations for string to number and first test cases
Mike Becker <universe@uap-core.de>
parents: 971
diff changeset
39 CxTestSuite *cx_test_suite_string_to_number(void);
789
9b2f5661bebd begin migration of buffer tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 787
diff changeset
40 CxTestSuite *cx_test_suite_buffer(void);
970
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
41 CxTestSuite *cx_test_suite_hash_key(void);
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
42 CxTestSuite *cx_test_suite_hash_map(void);
850
b2bc48c2b251 add iterator over raw C arrays - closes #389
Mike Becker <universe@uap-core.de>
parents: 816
diff changeset
43 CxTestSuite *cx_test_suite_iterator(void);
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 798
diff changeset
44 CxTestSuite *cx_test_suite_empty_list(void);
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 789
diff changeset
45 CxTestSuite *cx_test_suite_array_list(void);
970
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
46 CxTestSuite *cx_test_suite_array_list_defaulted_funcs(void);
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 789
diff changeset
47 CxTestSuite *cx_test_suite_linked_list(void);
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 850
diff changeset
48 CxTestSuite *cx_test_suite_linked_list_defaulted_funcs(void);
816
425234b05dff add first basic low level tree functions
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
49 CxTestSuite *cx_test_suite_tree_low_level(void);
902
5ed7f634f046 implement cxTreeCreate family of functions
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
50 CxTestSuite *cx_test_suite_tree_high_level(void);
924
3c90dfc35f06 add implementation for the properties parser
Mike Becker <universe@uap-core.de>
parents: 902
diff changeset
51 CxTestSuite *cx_test_suite_properties(void);
937
10123f4d5618 add first draft of json implementation - relates to #431
Mike Becker <universe@uap-core.de>
parents: 924
diff changeset
52 CxTestSuite *cx_test_suite_json(void);
970
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
53 CxTestSuite *cx_test_suite_printf(void);
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
54 CxTestSuite *cx_test_suite_mempool(void);
777
e5b29e6f0615 migrate string tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 770
diff changeset
55
1318
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
56 #define run_tests(suite) cx_test_run_stdout(suite); success += (suite)->success; failure += (suite)->failure; \
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
57 if (!cx_testing_allocator_verify(&testing_allocator)) break;
770
ed710122af44 migrates self-test for testing allocator - relates to #342
Mike Becker <universe@uap-core.de>
parents: 768
diff changeset
58 #define execute_test_suites(...) unsigned success = 0, failure = 0; CxTestSuite* test_suites[] = {__VA_ARGS__}; \
946
b428424c0214 avoid state buffer allocation for JSON with reasonable nesting depth
Mike Becker <universe@uap-core.de>
parents: 937
diff changeset
59 for (size_t i = 0; i < cx_nmemb(test_suites) ; i++) {run_tests(test_suites[i]);} (void)0
b428424c0214 avoid state buffer allocation for JSON with reasonable nesting depth
Mike Becker <universe@uap-core.de>
parents: 937
diff changeset
60 #define free_test_suites for (size_t i = 0 ; i < cx_nmemb(test_suites) ; i++) {cx_test_suite_free(test_suites[i]);} (void)0
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
61
1318
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
62 static int verify_testing_allocator() {
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
63 printf("Verify Testing Allocator\n");
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
64 CxTestSuite *suite_ta = cx_test_suite_testing_allocator();
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
65 int result = suite_ta->failure > 0;
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
66 cx_test_suite_free(suite_ta);
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
67 return result;
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
68 }
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
69
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
70 int main(void) {
1318
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
71 if (verify_testing_allocator()) {
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
72 fprintf(stderr, "Testing Allocator is not working - cannot perform tests!\n");
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
73 return EXIT_FAILURE;
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
74 }
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
75
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
76 // Replace the default allocator with the testing allocator
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
77 CxTestingAllocator testing_allocator;
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
78 cx_testing_allocator_init(&testing_allocator);
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
79 cxDefaultAllocator = &testing_allocator.base;
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
80
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
81 // Run tests
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
82 printf("UCX Tests\n---------\n");
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
83
770
ed710122af44 migrates self-test for testing allocator - relates to #342
Mike Becker <universe@uap-core.de>
parents: 768
diff changeset
84 execute_test_suites(
970
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
85 cx_test_suite_szmul(),
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
86 cx_test_suite_allocator(),
971
cc204fc56c9c rename utils.h to streams.h
Mike Becker <universe@uap-core.de>
parents: 970
diff changeset
87 cx_test_suite_streams(),
787
d0f02310aa47 migrate compare tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 785
diff changeset
88 cx_test_suite_compare(),
780
9965df621652 migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 777
diff changeset
89 cx_test_suite_string(),
1068
78ceee8e9b34 move the test execution for string_to_number back in line
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
90 cx_test_suite_string_to_number(),
789
9b2f5661bebd begin migration of buffer tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 787
diff changeset
91 cx_test_suite_buffer(),
970
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
92 cx_test_suite_hash_key(),
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
93 cx_test_suite_hash_map(),
850
b2bc48c2b251 add iterator over raw C arrays - closes #389
Mike Becker <universe@uap-core.de>
parents: 816
diff changeset
94 cx_test_suite_iterator(),
800
1274e46b3013 migrate cxEmptyList tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 798
diff changeset
95 cx_test_suite_empty_list(),
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 789
diff changeset
96 cx_test_suite_array_list(),
970
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
97 cx_test_suite_array_list_defaulted_funcs(),
798
7644da6e2d35 migrate low level linked list tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 789
diff changeset
98 cx_test_suite_linked_list(),
875
ee84ac776cbc add default impl for some list member functions
Mike Becker <universe@uap-core.de>
parents: 850
diff changeset
99 cx_test_suite_linked_list_defaulted_funcs(),
816
425234b05dff add first basic low level tree functions
Mike Becker <universe@uap-core.de>
parents: 800
diff changeset
100 cx_test_suite_tree_low_level(),
902
5ed7f634f046 implement cxTreeCreate family of functions
Mike Becker <universe@uap-core.de>
parents: 875
diff changeset
101 cx_test_suite_tree_high_level(),
970
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
102 cx_test_suite_properties(),
785
bb18daa62d5f migrate map tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 782
diff changeset
103 cx_test_suite_mempool(),
970
c9b02747cfc5 move szmul to common.h
Mike Becker <universe@uap-core.de>
parents: 946
diff changeset
104 cx_test_suite_json(),
1068
78ceee8e9b34 move the test execution for string_to_number back in line
Mike Becker <universe@uap-core.de>
parents: 1052
diff changeset
105 cx_test_suite_printf()
770
ed710122af44 migrates self-test for testing allocator - relates to #342
Mike Becker <universe@uap-core.de>
parents: 768
diff changeset
106 );
768
0e1cf2cd500e migrate hash_key tests - relates to #342
Mike Becker <universe@uap-core.de>
parents: 767
diff changeset
107 printf("=== OVERALL RESULT ===\n");
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
108 printf(" Total: %u\n Success: %u\n Failure: %u\n",
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
109 success + failure, success, failure);
770
ed710122af44 migrates self-test for testing allocator - relates to #342
Mike Becker <universe@uap-core.de>
parents: 768
diff changeset
110 free_test_suites;
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
111
1318
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
112 if (cx_testing_allocator_verify(&testing_allocator)) {
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
113 printf("\nAllocations verified successfully.\n");
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
114 } else {
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
115 printf("\nVerifying allocations failed!\nSome cxMalloc() might not match a cxFree().\n"
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
116 "Aborting test execution.\nError must be in a function tested by the last executed test suite.\n"
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
117 "Total allocations: %u\n"
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
118 "Total frees: %u\n", testing_allocator.alloc_total, testing_allocator.free_total);
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
119 failure++;
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
120 }
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
121 cx_testing_allocator_destroy(&testing_allocator);
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1068
diff changeset
122
766
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
123 return failure > 0 ? 1 : 0;
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
124 }
e59b76889f00 bring back UCX test - fixes #341
Mike Becker <universe@uap-core.de>
parents:
diff changeset
125

mercurial