/* 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 */
