diff options
Diffstat (limited to 'tests/suites/main_test.function')
| -rw-r--r-- | tests/suites/main_test.function | 266 |
1 files changed, 266 insertions, 0 deletions
diff --git a/tests/suites/main_test.function b/tests/suites/main_test.function new file mode 100644 index 00000000000..ef1898ba38f --- /dev/null +++ b/tests/suites/main_test.function @@ -0,0 +1,266 @@ +#line 2 "suites/main_test.function" +/* + * *** THIS FILE HAS BEEN MACHINE GENERATED *** + * + * This file has been machine generated using the script: + * __MBEDTLS_TEST_TEMPLATE__GENERATOR_SCRIPT + * + * Test file : __MBEDTLS_TEST_TEMPLATE__TEST_FILE + * + * The following files were used to create this file. + * + * Main code file : __MBEDTLS_TEST_TEMPLATE__TEST_MAIN_FILE + * Platform code file : __MBEDTLS_TEST_TEMPLATE__TEST_PLATFORM_FILE + * Helper file : __MBEDTLS_TEST_TEMPLATE__TEST_COMMON_HELPER_FILE + * Test suite file : __MBEDTLS_TEST_TEMPLATE__TEST_CASE_FILE + * Test suite data : __MBEDTLS_TEST_TEMPLATE__TEST_CASE_DATA_FILE + * + */ + +#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) +#if !defined(_POSIX_C_SOURCE) +#define _POSIX_C_SOURCE 200112L // for fileno() from <stdio.h> +#endif +#endif + +#include "mbedtls/build_info.h" + +/* Test code may use deprecated identifiers only if the preprocessor symbol + * MBEDTLS_TEST_DEPRECATED is defined. When building tests, set + * MBEDTLS_TEST_DEPRECATED explicitly if MBEDTLS_DEPRECATED_WARNING is + * enabled but the corresponding warnings are not treated as errors. + */ +#if !defined(MBEDTLS_DEPRECATED_REMOVED) && !defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_TEST_DEPRECATED +#endif + +/*----------------------------------------------------------------------------*/ +/* Common helper code */ + +__MBEDTLS_TEST_TEMPLATE__TEST_COMMON_HELPERS + +#line __MBEDTLS_TEST_TEMPLATE__LINE_NO "suites/main_test.function" + + +/*----------------------------------------------------------------------------*/ +/* Test Suite Code */ + + +#define TEST_SUITE_ACTIVE + +__MBEDTLS_TEST_TEMPLATE__FUNCTIONS_CODE + +#line __MBEDTLS_TEST_TEMPLATE__LINE_NO "suites/main_test.function" + + +/*----------------------------------------------------------------------------*/ +/* Test dispatch code */ + + +/** + * \brief Evaluates an expression/macro into its literal integer value. + * For optimizing space for embedded targets each expression/macro + * is identified by a unique identifier instead of string literals. + * Identifiers and evaluation code is generated by script: + * __MBEDTLS_TEST_TEMPLATE__GENERATOR_SCRIPT + * + * \param exp_id Expression identifier. + * \param out_value Pointer to int to hold the integer. + * + * \return 0 if exp_id is found. 1 otherwise. + */ +int get_expression(int32_t exp_id, intmax_t *out_value) +{ + int ret = KEY_VALUE_MAPPING_FOUND; + + (void) exp_id; + (void) out_value; + + switch (exp_id) { + __MBEDTLS_TEST_TEMPLATE__EXPRESSION_CODE +#line __MBEDTLS_TEST_TEMPLATE__LINE_NO "suites/main_test.function" + default: + { + ret = KEY_VALUE_MAPPING_NOT_FOUND; + } + break; + } + return ret; +} + + +/** + * \brief Checks if the dependency i.e. the compile flag is set. + * For optimizing space for embedded targets each dependency + * is identified by a unique identifier instead of string literals. + * Identifiers and check code is generated by script: + * __MBEDTLS_TEST_TEMPLATE__GENERATOR_SCRIPT + * + * \param dep_id Dependency identifier. + * + * \return DEPENDENCY_SUPPORTED if set else DEPENDENCY_NOT_SUPPORTED + */ +int dep_check(int dep_id) +{ + int ret = DEPENDENCY_NOT_SUPPORTED; + + (void) dep_id; + + switch (dep_id) { + __MBEDTLS_TEST_TEMPLATE__DEP_CHECK_CODE +#line __MBEDTLS_TEST_TEMPLATE__LINE_NO "suites/main_test.function" + default: + break; + } + return ret; +} + + +/** + * \brief Function pointer type for test function wrappers. + * + * A test function wrapper decodes the parameters and passes them to the + * underlying test function. Both the wrapper and the underlying function + * return void. Test wrappers assume that they are passed a suitable + * parameter array and do not perform any error detection. + * + * \param param_array The array of parameters. Each element is a `void *` + * which the wrapper casts to the correct type and + * dereferences. Each wrapper function hard-codes the + * number and types of the parameters. + */ +typedef void (*TestWrapper_t)(void **param_array); + + +/** + * \brief Table of test function wrappers. Used by dispatch_test(). + * This table is populated by script: + * __MBEDTLS_TEST_TEMPLATE__GENERATOR_SCRIPT + * + */ +TestWrapper_t test_funcs[] = +{ + __MBEDTLS_TEST_TEMPLATE__DISPATCH_CODE +#line __MBEDTLS_TEST_TEMPLATE__LINE_NO "suites/main_test.function" +}; + +/** + * \brief Dispatches test functions based on function index. + * + * \param func_idx Test function index. + * \param params The array of parameters to pass to the test function. + * It will be decoded by the #TestWrapper_t wrapper function. + * + * \return DISPATCH_TEST_SUCCESS if found + * DISPATCH_TEST_FN_NOT_FOUND if not found + * DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. + */ +int dispatch_test(size_t func_idx, void **params) +{ + int ret = DISPATCH_TEST_SUCCESS; + TestWrapper_t fp = NULL; + + if (func_idx < (int) (sizeof(test_funcs) / sizeof(TestWrapper_t))) { + fp = test_funcs[func_idx]; + if (fp) { + #if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) + mbedtls_test_enable_insecure_external_rng(); + #endif + + fp(params); + + #if defined(MBEDTLS_TEST_MUTEX_USAGE) + mbedtls_test_mutex_usage_check(); + #endif /* MBEDTLS_TEST_MUTEX_USAGE */ + } else { + ret = DISPATCH_UNSUPPORTED_SUITE; + } + } else { + ret = DISPATCH_TEST_FN_NOT_FOUND; + } + + return ret; +} + + +/** + * \brief Checks if test function is supported in this build-time + * configuration. + * + * \param func_idx Test function index. + * + * \return DISPATCH_TEST_SUCCESS if found + * DISPATCH_TEST_FN_NOT_FOUND if not found + * DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. + */ +int check_test(size_t func_idx) +{ + int ret = DISPATCH_TEST_SUCCESS; + TestWrapper_t fp = NULL; + + if (func_idx < (int) (sizeof(test_funcs)/sizeof(TestWrapper_t))) { + fp = test_funcs[func_idx]; + if (fp == NULL) { + ret = DISPATCH_UNSUPPORTED_SUITE; + } + } else { + ret = DISPATCH_TEST_FN_NOT_FOUND; + } + + return ret; +} + + +__MBEDTLS_TEST_TEMPLATE__PLATFORM_CODE + +#line __MBEDTLS_TEST_TEMPLATE__LINE_NO "suites/main_test.function" + +/*----------------------------------------------------------------------------*/ +/* Main Test code */ + + +/** + * \brief Program main. Invokes platform specific execute_tests(). + * + * \param argc Command line arguments count. + * \param argv Array of command line arguments. + * + * \return Exit code. + */ +int main(int argc, const char *argv[]) +{ +#if defined(MBEDTLS_TEST_HOOKS) + extern void (*mbedtls_test_hook_test_fail)(const char *test, int line, const char *file); + mbedtls_test_hook_test_fail = &mbedtls_test_fail; +#if defined(MBEDTLS_ERROR_C) + mbedtls_test_hook_error_add = &mbedtls_test_err_add_check; +#endif +#endif + + /* Try changing to the directory containing the executable, if + * using the default data file. This allows running the executable + * from another directory (e.g. the project root) and still access + * the .datax file as well as data files used by test cases + * (typically from tests/data_files). + * + * Note that we do this before the platform setup (which may access + * files such as a random seed). We also do this before accessing + * test-specific files such as the outcome file, which is arguably + * not desirable and should be fixed later. + */ + if (argc == 1) { + try_chdir_if_supported(argv[0]); + } + + int ret = mbedtls_test_platform_setup(); + if (ret != 0) { + mbedtls_fprintf(stderr, + "FATAL: Failed to initialize platform - error %d\n", + ret); + return -1; + } + + ret = execute_tests(argc, argv); + mbedtls_test_platform_teardown(); + return ret; +} |
