tests: Isolate mbedtls_param_failed() call check

In preparation of moving mbedtls_param_failed() to test
common code, isolate mbedtls_param_failed() call check
from unit test data.

Signed-off-by: Ronald Cron <ronald.cron@arm.com>
This commit is contained in:
Ronald Cron 2020-07-01 15:05:21 +02:00
parent 4e66587545
commit 76883ec853
2 changed files with 50 additions and 23 deletions

View File

@ -74,16 +74,6 @@ typedef struct data_tag
#define DISPATCH_UNSUPPORTED_SUITE -5 /* Test suite not supported by the #define DISPATCH_UNSUPPORTED_SUITE -5 /* Test suite not supported by the
build */ build */
typedef enum
{
PARAMFAIL_TESTSTATE_IDLE = 0, /* No parameter failure call test */
PARAMFAIL_TESTSTATE_PENDING, /* Test call to the parameter failure
* is pending */
PARAMFAIL_TESTSTATE_CALLED /* The test call to the parameter
* failure function has been made */
} paramfail_test_state_t;
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
/* Macros */ /* Macros */
@ -237,15 +227,16 @@ typedef enum
* *
* \param TEST The test expression to be tested. * \param TEST The test expression to be tested.
*/ */
#define TEST_INVALID_PARAM_RET( PARAM_ERR_VALUE, TEST ) \ #define TEST_INVALID_PARAM_RET( PARAM_ERR_VALUE, TEST ) \
do { \ do { \
test_info.paramfail_test_state = PARAMFAIL_TESTSTATE_PENDING; \ mbedtls_test_param_failed_expect_call( ); \
if( (TEST) != (PARAM_ERR_VALUE) || \ if( ( ( TEST ) != ( PARAM_ERR_VALUE ) ) || \
test_info.paramfail_test_state != PARAMFAIL_TESTSTATE_CALLED ) \ ( mbedtls_test_param_failed_check_expected_call( ) != 0 ) ) \
{ \ { \
test_fail( #TEST, __LINE__, __FILE__ ); \ test_fail( #TEST, __LINE__, __FILE__ ); \
goto exit; \ goto exit; \
} \ } \
mbedtls_test_param_failed_check_expected_call( ); \
} while( 0 ) } while( 0 )
/** /**
@ -359,7 +350,6 @@ typedef enum
typedef struct typedef struct
{ {
paramfail_test_state_t paramfail_test_state;
test_result_t result; test_result_t result;
const char *test; const char *test;
const char *filename; const char *filename;
@ -380,6 +370,9 @@ mbedtls_test_param_failed_location_record_t;
typedef struct typedef struct
{ {
uint8_t expected_call;
uint8_t expected_call_happened;
mbedtls_test_param_failed_location_record_t location_record; mbedtls_test_param_failed_location_record_t location_record;
} }
param_failed_ctx_t; param_failed_ctx_t;
@ -451,6 +444,40 @@ void mbedtls_test_param_failed_get_location_record(
*location_record = param_failed_ctx.location_record; *location_record = param_failed_ctx.location_record;
} }
/**
* \brief State that a call to mbedtls_param_failed() is expected.
*
* \note The call expectation is set up and active until the next call to
* mbedtls_test_param_failed_check_expected_call() or
* mbedtls_param_failed that cancel it.
*/
void mbedtls_test_param_failed_expect_call( void )
{
param_failed_ctx.expected_call_happened = 0;
param_failed_ctx.expected_call = 1;
}
/**
* \brief Check whether mbedtls_param_failed() has been called as expected.
*
* \note Check whether mbedtls_param_failed() has been called between the
* last call to mbedtls_test_param_failed_expect_call() and the call
* to this function.
*
* \return \c 0 Since the last call to mbedtls_param_failed_expect_call(),
* mbedtls_param_failed() has been called.
* \c -1 Otherwise.
*/
int mbedtls_test_param_failed_check_expected_call( void )
{
param_failed_ctx.expected_call = 0;
if( param_failed_ctx.expected_call_happened != 0 )
return( 0 );
return( -1 );
}
void mbedtls_param_failed( const char *failure_condition, void mbedtls_param_failed( const char *failure_condition,
const char *file, const char *file,
int line ) int line )
@ -461,9 +488,10 @@ void mbedtls_param_failed( const char *failure_condition,
param_failed_ctx.location_record.line = line; param_failed_ctx.location_record.line = line;
/* If we are testing the callback function... */ /* If we are testing the callback function... */
if( test_info.paramfail_test_state == PARAMFAIL_TESTSTATE_PENDING ) if( param_failed_ctx.expected_call != 0 )
{ {
test_info.paramfail_test_state = PARAMFAIL_TESTSTATE_CALLED; param_failed_ctx.expected_call = 0;
param_failed_ctx.expected_call_happened = 1;
} }
else else
{ {

View File

@ -683,7 +683,6 @@ int execute_tests( int argc , const char ** argv )
if( unmet_dep_count == 0 ) if( unmet_dep_count == 0 )
{ {
test_info.result = TEST_RESULT_SUCCESS; test_info.result = TEST_RESULT_SUCCESS;
test_info.paramfail_test_state = PARAMFAIL_TESTSTATE_IDLE;
test_info.step = (unsigned long)( -1 ); test_info.step = (unsigned long)( -1 );
#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))