|  | /* BEGIN_HEADER */ | 
|  |  | 
|  | /* This test module exercises the timing module. Since, depending on the | 
|  | * underlying operating system, the timing routines are not always reliable, | 
|  | * this suite only performs very basic sanity checks of the timing API. | 
|  | */ | 
|  |  | 
|  | #include <limits.h> | 
|  |  | 
|  | #include "mbedtls/timing.h" | 
|  |  | 
|  | /* END_HEADER */ | 
|  |  | 
|  | /* BEGIN_DEPENDENCIES | 
|  | * depends_on:MBEDTLS_TIMING_C | 
|  | * END_DEPENDENCIES | 
|  | */ | 
|  |  | 
|  | /* BEGIN_CASE */ | 
|  | void timing_get_timer( ) | 
|  | { | 
|  | struct mbedtls_timing_hr_time time; | 
|  | (void) mbedtls_timing_get_timer( &time, 1 ); | 
|  | (void) mbedtls_timing_get_timer( &time, 0 ); | 
|  | /* This goto is added to avoid warnings from the generated code. */ | 
|  | goto exit; | 
|  | } | 
|  | /* END_CASE */ | 
|  |  | 
|  | /* BEGIN_CASE */ | 
|  | void timing_delay( int fin_ms ) | 
|  | { | 
|  | mbedtls_timing_delay_context ctx; | 
|  | int result; | 
|  | if( fin_ms == 0 ) | 
|  | { | 
|  | mbedtls_timing_set_delay( &ctx, 0, 0 ); | 
|  | result = mbedtls_timing_get_delay( &ctx ); | 
|  | TEST_ASSERT( result == -1 ); | 
|  | } | 
|  | else | 
|  | { | 
|  | mbedtls_timing_set_delay( &ctx, fin_ms / 2, fin_ms ); | 
|  | result = mbedtls_timing_get_delay( &ctx ); | 
|  | TEST_ASSERT( result >= 0 && result <= 2 ); | 
|  | } | 
|  | } | 
|  | /* END_CASE */ |