| Azim Khan | 1de892b | 2017-06-09 15:02:36 +0100 | [diff] [blame] | 1 | #line 2 "suites/main_test.function" | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 2 | /* | 
|  | 3 | * *** THIS FILE HAS BEEN MACHINE GENERATED *** | 
|  | 4 | * | 
|  | 5 | * This file has been machine generated using the script: | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 6 | * $generator_script | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 7 | * | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 8 | * Test file      : $test_file | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 9 | * | 
|  | 10 | * The following files were used to create this file. | 
|  | 11 | * | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 12 | *      Main code file      : $test_main_file | 
|  | 13 | *      Platform code file  : $test_platform_file | 
|  | 14 | *      Helper file         : $test_common_helper_file | 
|  | 15 | *      Test suite file     : $test_case_file | 
|  | 16 | *      Test suite data     : $test_case_data_file | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 17 | * | 
|  | 18 | * | 
| Mohammad Azim Khan | d2d0112 | 2018-07-18 17:48:37 +0100 | [diff] [blame] | 19 | *  This file is part of Mbed TLS (https://tls.mbed.org) | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 20 | */ | 
| Paul Bakker | de56ca1 | 2013-09-15 17:05:21 +0200 | [diff] [blame] | 21 |  | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 22 | #if !defined(MBEDTLS_CONFIG_FILE) | 
|  | 23 | #include <mbedtls/config.h> | 
|  | 24 | #else | 
|  | 25 | #include MBEDTLS_CONFIG_FILE | 
|  | 26 | #endif | 
| Paul Bakker | 1934318 | 2013-08-16 13:31:10 +0200 | [diff] [blame] | 27 |  | 
| SimonB | 152ea18 | 2016-02-15 23:27:28 +0000 | [diff] [blame] | 28 |  | 
|  | 29 | /*----------------------------------------------------------------------------*/ | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 30 | /* Common helper code */ | 
| SimonB | 152ea18 | 2016-02-15 23:27:28 +0000 | [diff] [blame] | 31 |  | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 32 | $test_common_helpers | 
| Paul Bakker | de56ca1 | 2013-09-15 17:05:21 +0200 | [diff] [blame] | 33 |  | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 34 | #line $line_no "suites/main_test.function" | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 35 |  | 
|  | 36 |  | 
|  | 37 | /*----------------------------------------------------------------------------*/ | 
|  | 38 | /* Test Suite Code */ | 
|  | 39 |  | 
|  | 40 |  | 
|  | 41 | #define TEST_SUITE_ACTIVE | 
|  | 42 |  | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 43 | $functions_code | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 44 |  | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 45 | #line $line_no "suites/main_test.function" | 
| SimonB | 1594210 | 2016-04-25 21:34:49 +0100 | [diff] [blame] | 46 |  | 
| SimonB | 152ea18 | 2016-02-15 23:27:28 +0000 | [diff] [blame] | 47 |  | 
|  | 48 | /*----------------------------------------------------------------------------*/ | 
|  | 49 | /* Test dispatch code */ | 
|  | 50 |  | 
| Paul Bakker | 1934318 | 2013-08-16 13:31:10 +0200 | [diff] [blame] | 51 |  | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 52 | /** | 
|  | 53 | * \brief       Evaluates an expression/macro into its literal integer value. | 
|  | 54 | *              For optimizing space for embedded targets each expression/macro | 
|  | 55 | *              is identified by a unique identifier instead of string literals. | 
|  | 56 | *              Identifiers and evaluation code is generated by script: | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 57 | *              $generator_script | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 58 | * | 
|  | 59 | * \param exp_id    Expression identifier. | 
|  | 60 | * \param out_value Pointer to int to hold the integer. | 
|  | 61 | * | 
|  | 62 | * \return       0 if exp_id is found. 1 otherwise. | 
|  | 63 | */ | 
|  | 64 | int get_expression( int32_t exp_id, int32_t * out_value ) | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 65 | { | 
| Azim Khan | b1c2d0f | 2017-07-07 17:14:02 +0100 | [diff] [blame] | 66 | int ret = KEY_VALUE_MAPPING_FOUND; | 
|  | 67 |  | 
|  | 68 | (void) exp_id; | 
|  | 69 | (void) out_value; | 
|  | 70 |  | 
|  | 71 | switch( exp_id ) | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 72 | { | 
|  | 73 | $expression_code | 
|  | 74 | #line $line_no "suites/main_test.function" | 
| Azim Khan | b1c2d0f | 2017-07-07 17:14:02 +0100 | [diff] [blame] | 75 | default: | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 76 | { | 
| Azim Khan | b1c2d0f | 2017-07-07 17:14:02 +0100 | [diff] [blame] | 77 | ret = KEY_VALUE_MAPPING_NOT_FOUND; | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 78 | } | 
| Azim Khan | b1c2d0f | 2017-07-07 17:14:02 +0100 | [diff] [blame] | 79 | break; | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 80 | } | 
| Azim Khan | b1c2d0f | 2017-07-07 17:14:02 +0100 | [diff] [blame] | 81 | return( ret ); | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 82 | } | 
| Paul Bakker | 1934318 | 2013-08-16 13:31:10 +0200 | [diff] [blame] | 83 |  | 
| Paul Bakker | 1934318 | 2013-08-16 13:31:10 +0200 | [diff] [blame] | 84 |  | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 85 | /** | 
|  | 86 | * \brief       Checks if the dependency i.e. the compile flag is set. | 
|  | 87 | *              For optimizing space for embedded targets each dependency | 
|  | 88 | *              is identified by a unique identifier instead of string literals. | 
|  | 89 | *              Identifiers and check code is generated by script: | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 90 | *              $generator_script | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 91 | * | 
|  | 92 | * \param exp_id    Dependency identifier. | 
|  | 93 | * | 
|  | 94 | * \return       DEPENDENCY_SUPPORTED if set else DEPENDENCY_NOT_SUPPORTED | 
|  | 95 | */ | 
|  | 96 | int dep_check( int dep_id ) | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 97 | { | 
| Azim Khan | b1c2d0f | 2017-07-07 17:14:02 +0100 | [diff] [blame] | 98 | int ret = DEPENDENCY_NOT_SUPPORTED; | 
|  | 99 |  | 
|  | 100 | (void) dep_id; | 
|  | 101 |  | 
|  | 102 | switch( dep_id ) | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 103 | { | 
|  | 104 | $dep_check_code | 
|  | 105 | #line $line_no "suites/main_test.function" | 
| Azim Khan | b1c2d0f | 2017-07-07 17:14:02 +0100 | [diff] [blame] | 106 | default: | 
|  | 107 | break; | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 108 | } | 
| Azim Khan | b1c2d0f | 2017-07-07 17:14:02 +0100 | [diff] [blame] | 109 | return( ret ); | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 110 | } | 
| Paul Bakker | 1934318 | 2013-08-16 13:31:10 +0200 | [diff] [blame] | 111 |  | 
| SimonB | 8ca7bc4 | 2016-04-17 23:24:50 +0100 | [diff] [blame] | 112 |  | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 113 | /** | 
|  | 114 | * \brief       Function pointer type for test function wrappers. | 
|  | 115 | * | 
|  | 116 | * | 
|  | 117 | * \param void **   Pointer to void pointers. Represents an array of test | 
|  | 118 | *                  function parameters. | 
|  | 119 | * | 
|  | 120 | * \return       void | 
|  | 121 | */ | 
|  | 122 | typedef void (*TestWrapper_t)( void ** ); | 
| Simon Butcher | 65b1fa6 | 2016-05-23 23:18:26 +0100 | [diff] [blame] | 123 |  | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 124 |  | 
|  | 125 | /** | 
|  | 126 | * \brief       Table of test function wrappers. Used by dispatch_test(). | 
|  | 127 | *              This table is populated by script: | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 128 | *              $generator_script | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 129 | * | 
|  | 130 | */ | 
|  | 131 | TestWrapper_t test_funcs[] = | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 132 | { | 
|  | 133 | $dispatch_code | 
|  | 134 | #line $line_no "suites/main_test.function" | 
|  | 135 | }; | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 136 |  | 
| Simon Butcher | 6542f6c | 2018-12-09 22:09:59 +0000 | [diff] [blame] | 137 | /** | 
|  | 138 | * \brief        Execute the test function. | 
|  | 139 | * | 
|  | 140 | *               This is a wrapper function around the test function execution | 
|  | 141 | *               to allow the setjmp() call used to catch any calls to the | 
|  | 142 | *               parameter failure callback, to be used. Calls to setjmp() | 
|  | 143 | *               can invalidate the state of any local auto variables. | 
|  | 144 | * | 
|  | 145 | * \param fp     Function pointer to the test function | 
|  | 146 | * \param params Parameters to pass | 
|  | 147 | * | 
|  | 148 | */ | 
|  | 149 | void execute_function_ptr(TestWrapper_t fp, void **params) | 
|  | 150 | { | 
|  | 151 | #if defined(MBEDTLS_CHECK_PARAMS) | 
|  | 152 | if ( setjmp( param_fail_jmp ) == 0 ) | 
|  | 153 | { | 
|  | 154 | fp( params ); | 
|  | 155 | } | 
|  | 156 | else | 
|  | 157 | { | 
|  | 158 | /* Unexpected parameter validation error */ | 
|  | 159 | test_info.failed = 1; | 
|  | 160 | } | 
|  | 161 |  | 
|  | 162 | memset( param_fail_jmp, 0, sizeof(jmp_buf) ); | 
|  | 163 | #else | 
|  | 164 | fp( params ); | 
|  | 165 | #endif | 
|  | 166 | } | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 167 |  | 
|  | 168 | /** | 
| Simon Butcher | 6542f6c | 2018-12-09 22:09:59 +0000 | [diff] [blame] | 169 | * \brief        Dispatches test functions based on function index. | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 170 | * | 
|  | 171 | * \param exp_id    Test function index. | 
|  | 172 | * | 
|  | 173 | * \return       DISPATCH_TEST_SUCCESS if found | 
|  | 174 | *               DISPATCH_TEST_FN_NOT_FOUND if not found | 
|  | 175 | *               DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. | 
|  | 176 | */ | 
|  | 177 | int dispatch_test( int func_idx, void ** params ) | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 178 | { | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 179 | int ret = DISPATCH_TEST_SUCCESS; | 
|  | 180 | TestWrapper_t fp = NULL; | 
|  | 181 |  | 
| Mohammad Azim Khan | d2d0112 | 2018-07-18 17:48:37 +0100 | [diff] [blame] | 182 | if ( func_idx < (int)( sizeof( test_funcs ) / sizeof( TestWrapper_t ) ) ) | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 183 | { | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 184 | fp = test_funcs[func_idx]; | 
|  | 185 | if ( fp ) | 
| Simon Butcher | 6542f6c | 2018-12-09 22:09:59 +0000 | [diff] [blame] | 186 | execute_function_ptr(fp, params); | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 187 | else | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 188 | ret = DISPATCH_UNSUPPORTED_SUITE; | 
|  | 189 | } | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 190 | else | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 191 | { | 
|  | 192 | ret = DISPATCH_TEST_FN_NOT_FOUND; | 
|  | 193 | } | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 194 |  | 
| Paul Bakker | 1934318 | 2013-08-16 13:31:10 +0200 | [diff] [blame] | 195 | return( ret ); | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 196 | } | 
| Paul Bakker | 1934318 | 2013-08-16 13:31:10 +0200 | [diff] [blame] | 197 |  | 
| SimonB | 152ea18 | 2016-02-15 23:27:28 +0000 | [diff] [blame] | 198 |  | 
| Azim Khan | 13c6bfb | 2017-06-15 14:45:56 +0100 | [diff] [blame] | 199 | /** | 
|  | 200 | * \brief       Checks if test function is supported | 
|  | 201 | * | 
|  | 202 | * \param exp_id    Test function index. | 
|  | 203 | * | 
|  | 204 | * \return       DISPATCH_TEST_SUCCESS if found | 
|  | 205 | *               DISPATCH_TEST_FN_NOT_FOUND if not found | 
|  | 206 | *               DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. | 
|  | 207 | */ | 
|  | 208 | int check_test( int func_idx ) | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 209 | { | 
| Azim Khan | 13c6bfb | 2017-06-15 14:45:56 +0100 | [diff] [blame] | 210 | int ret = DISPATCH_TEST_SUCCESS; | 
|  | 211 | TestWrapper_t fp = NULL; | 
|  | 212 |  | 
|  | 213 | if ( func_idx < (int)( sizeof(test_funcs)/sizeof( TestWrapper_t ) ) ) | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 214 | { | 
| Azim Khan | 13c6bfb | 2017-06-15 14:45:56 +0100 | [diff] [blame] | 215 | fp = test_funcs[func_idx]; | 
|  | 216 | if ( fp == NULL ) | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 217 | ret = DISPATCH_UNSUPPORTED_SUITE; | 
|  | 218 | } | 
| Azim Khan | 13c6bfb | 2017-06-15 14:45:56 +0100 | [diff] [blame] | 219 | else | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 220 | { | 
|  | 221 | ret = DISPATCH_TEST_FN_NOT_FOUND; | 
|  | 222 | } | 
| Azim Khan | 13c6bfb | 2017-06-15 14:45:56 +0100 | [diff] [blame] | 223 |  | 
|  | 224 | return( ret ); | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 225 | } | 
| Azim Khan | 13c6bfb | 2017-06-15 14:45:56 +0100 | [diff] [blame] | 226 |  | 
|  | 227 |  | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 228 | $platform_code | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 229 |  | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 230 | #line $line_no "suites/main_test.function" | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 231 |  | 
| SimonB | 152ea18 | 2016-02-15 23:27:28 +0000 | [diff] [blame] | 232 | /*----------------------------------------------------------------------------*/ | 
|  | 233 | /* Main Test code */ | 
|  | 234 |  | 
| SimonB | 1594210 | 2016-04-25 21:34:49 +0100 | [diff] [blame] | 235 |  | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 236 | /** | 
|  | 237 | * \brief       Program main. Invokes platform specific execute_tests(). | 
| Gilles Peskine | 964faeb | 2017-09-29 18:00:25 +0200 | [diff] [blame] | 238 | * | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 239 | * \param argc      Command line arguments count. | 
|  | 240 | * \param argv      Array of command line arguments. | 
|  | 241 | * | 
|  | 242 | * \return       Exit code. | 
| Gilles Peskine | 964faeb | 2017-09-29 18:00:25 +0200 | [diff] [blame] | 243 | */ | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 244 | int main( int argc, const char *argv[] ) | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 245 | { | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 246 | int ret = platform_setup(); | 
| Andrzej Kurek | f13ca95 | 2018-04-18 04:14:31 -0400 | [diff] [blame] | 247 | if( ret != 0 ) | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 248 | { | 
| Andrzej Kurek | f13ca95 | 2018-04-18 04:14:31 -0400 | [diff] [blame] | 249 | mbedtls_fprintf( stderr, | 
|  | 250 | "FATAL: Failed to initialize platform - error %d\n", | 
|  | 251 | ret ); | 
|  | 252 | return( -1 ); | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 253 | } | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 254 | ret = execute_tests( argc, argv ); | 
| Andrzej Kurek | 32a675f | 2018-04-13 06:16:04 -0400 | [diff] [blame] | 255 | platform_teardown(); | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 256 | return( ret ); | 
| Mohammad Azim Khan | 5cb7017 | 2018-07-19 11:32:30 +0100 | [diff] [blame] | 257 | } | 
| Azim Khan | 191e904 | 2017-06-09 12:39:00 +0100 | [diff] [blame] | 258 |  |