forked from eden-emu/eden
		
	
		
			
	
	
		
			75 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			75 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
|  | /* 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_hardclock( ) | ||
|  | { | ||
|  |     (void) mbedtls_timing_hardclock(); | ||
|  |     /* This goto is added to avoid warnings from the generated code. */ | ||
|  |     goto exit; | ||
|  | } | ||
|  | /* END_CASE */ | ||
|  | 
 | ||
|  | /* 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_set_alarm( int seconds ) | ||
|  | { | ||
|  |     if( seconds == 0 ) | ||
|  |     { | ||
|  |         mbedtls_set_alarm( seconds ); | ||
|  |         TEST_ASSERT( mbedtls_timing_alarmed == 1 ); | ||
|  |     } | ||
|  |     else | ||
|  |     { | ||
|  |         mbedtls_set_alarm( seconds ); | ||
|  |         TEST_ASSERT( mbedtls_timing_alarmed == 0 || | ||
|  |                      mbedtls_timing_alarmed == 1 ); | ||
|  |     } | ||
|  | } | ||
|  | /* 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 */ |