universe@766: /* universe@766: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. universe@766: * universe@766: * Copyright 2023 Mike Becker, Olaf Wintermann All rights reserved. universe@766: * universe@766: * Redistribution and use in source and binary forms, with or without universe@766: * modification, are permitted provided that the following conditions are met: universe@766: * universe@766: * 1. Redistributions of source code must retain the above copyright universe@766: * notice, this list of conditions and the following disclaimer. universe@766: * universe@766: * 2. Redistributions in binary form must reproduce the above copyright universe@766: * notice, this list of conditions and the following disclaimer in the universe@766: * documentation and/or other materials provided with the distribution. universe@766: * universe@766: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" universe@766: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE universe@766: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE universe@766: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE universe@766: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR universe@766: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF universe@766: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS universe@766: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN universe@766: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) universe@766: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE universe@766: * POSSIBILITY OF SUCH DAMAGE. universe@766: */ universe@766: universe@767: #include "cx/test.h" universe@767: universe@770: CxTestSuite *cx_test_suite_testing_allocator(void); universe@767: CxTestSuite *cx_test_suite_utils(void); universe@787: CxTestSuite *cx_test_suite_compare(void); universe@768: CxTestSuite *cx_test_suite_hash_key(void); universe@782: CxTestSuite *cx_test_suite_allocator(void); universe@780: CxTestSuite *cx_test_suite_string(void); universe@789: CxTestSuite *cx_test_suite_buffer(void); universe@780: CxTestSuite *cx_test_suite_printf(void); universe@781: CxTestSuite *cx_test_suite_mempool(void); universe@785: CxTestSuite *cx_test_suite_hash_map(void); universe@777: universe@766: #define run_tests(suite) cx_test_run_stdout(suite); success += (suite)->success; failure += (suite)->failure universe@770: #define execute_test_suites(...) unsigned success = 0, failure = 0; CxTestSuite* test_suites[] = {__VA_ARGS__}; \ universe@770: for (size_t i = 0; i < sizeof(test_suites)/sizeof(void*) ; i++) {run_tests(test_suites[i]);} (void)0 universe@770: #define free_test_suites for (size_t i = 0 ; i < sizeof(test_suites)/sizeof(void*) ; i++) {cx_test_suite_free(test_suites[i]);} (void)0 universe@766: universe@766: int main(void) { universe@766: printf("UCX Tests\n---------\n"); universe@766: universe@770: execute_test_suites( universe@770: cx_test_suite_testing_allocator(), universe@770: cx_test_suite_utils(), universe@787: cx_test_suite_compare(), universe@777: cx_test_suite_hash_key(), universe@782: cx_test_suite_allocator(), universe@780: cx_test_suite_string(), universe@789: cx_test_suite_buffer(), universe@781: cx_test_suite_printf(), universe@785: cx_test_suite_mempool(), universe@785: cx_test_suite_hash_map() universe@770: ); universe@768: printf("=== OVERALL RESULT ===\n"); universe@766: printf(" Total: %u\n Success: %u\n Failure: %u\n", universe@766: success + failure, success, failure); universe@770: free_test_suites; universe@766: universe@766: return failure > 0 ? 1 : 0; universe@766: } universe@766: