Remove imporper TEST_PROTECT usage from message_buffer_utest.c.

The way TEST_PROTECT is currently used in this test causes an infinite loop if the expected configASSERT failure does not occur.
pull/555/head
Paul Bartell 4 years ago committed by Paul Bartell
parent 68cb6142ae
commit c82e6caa34

@ -29,7 +29,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdbool.h> #include <stdbool.h>
/* Queue includes */ /* Message Buffer includes */
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "FreeRTOSConfig.h" #include "FreeRTOSConfig.h"
#include "message_buffer.h" #include "message_buffer.h"
@ -37,6 +37,7 @@
/* Test includes. */ /* Test includes. */
#include "unity.h" #include "unity.h"
#include "unity_memory.h" #include "unity_memory.h"
#include "CException.h"
/* Mock includes. */ /* Mock includes. */
#include "mock_task.h" #include "mock_task.h"
@ -72,6 +73,31 @@
*/ */
#define TEST_MESSAGE_BUFFER_WAIT_TICKS ( 1000U ) #define TEST_MESSAGE_BUFFER_WAIT_TICKS ( 1000U )
/**
* @brief CException code for when a configASSERT should be intercepted.
*/
#define configASSERT_E 0xAA101
/**
* @brief Expect a configASSERT from the funciton called.
* Break out of the called function when this occurs.
* @details Use this macro when the call passsed in as a parameter is expected
* to cause invalid memory access.
*/
#define EXPECT_ASSERT_BREAK( call ) \
do \
{ \
shouldAbortOnAssertion = true; \
CEXCEPTION_T e = CEXCEPTION_NONE; \
Try \
{ \
call; \
TEST_FAIL(); \
} \
Catch( e ) \
TEST_ASSERT_EQUAL( configASSERT_E, e ); \
} while ( 0 )
/* ============================ GLOBAL VARIABLES =========================== */ /* ============================ GLOBAL VARIABLES =========================== */
/** /**
@ -131,7 +157,7 @@ static void vFakeAssertStub( bool x,
if( shouldAbortOnAssertion == pdTRUE ) if( shouldAbortOnAssertion == pdTRUE )
{ {
TEST_ABORT(); Throw( configASSERT_E );
} }
} }
} }
@ -328,10 +354,7 @@ void test_xMessageBufferCreate_malloc_fail( void )
*/ */
void test_xMessageBufferCreate_zero_size( void ) void test_xMessageBufferCreate_zero_size( void )
{ {
if( TEST_PROTECT() ) EXPECT_ASSERT_BREAK( ( void ) xMessageBufferCreate( 0 ) );
{
( void ) xMessageBufferCreate( 0 );
}
validate_and_clear_assertions(); validate_and_clear_assertions();
} }
@ -341,10 +364,7 @@ void test_xMessageBufferCreate_zero_size( void )
*/ */
void test_xMessageBufferCreate_invalid_size( void ) void test_xMessageBufferCreate_invalid_size( void )
{ {
if( TEST_PROTECT() ) EXPECT_ASSERT_BREAK( ( void ) xMessageBufferCreate( TEST_MESSAGE_METADATA_SIZE ) );
{
( void ) xMessageBufferCreate( TEST_MESSAGE_METADATA_SIZE );
}
validate_and_clear_assertions(); validate_and_clear_assertions();
} }
@ -379,6 +399,7 @@ void test_xMessageBufferCreateStatic_null_array( void )
/* Returns NULL when NULL storage area is passed as a parameter. */ /* Returns NULL when NULL storage area is passed as a parameter. */
xMessageBuffer = xMessageBufferCreateStatic( TEST_MESSAGE_BUFFER_SIZE, NULL, &messageBufferStruct ); xMessageBuffer = xMessageBufferCreateStatic( TEST_MESSAGE_BUFFER_SIZE, NULL, &messageBufferStruct );
TEST_ASSERT_NULL( xMessageBuffer ); TEST_ASSERT_NULL( xMessageBuffer );
validate_and_clear_assertions(); validate_and_clear_assertions();
} }
@ -396,6 +417,7 @@ void test_xMessageBufferCreateStatic_null_struct( void )
/* Returns NULL when NULL message buffer struct is passed as a parameter. */ /* Returns NULL when NULL message buffer struct is passed as a parameter. */
xMessageBuffer = xMessageBufferCreateStatic( sizeof( messageBufferArray ), messageBufferArray, NULL ); xMessageBuffer = xMessageBufferCreateStatic( sizeof( messageBufferArray ), messageBufferArray, NULL );
TEST_ASSERT_NULL( xMessageBuffer ); TEST_ASSERT_NULL( xMessageBuffer );
validate_and_clear_assertions(); validate_and_clear_assertions();
} }
@ -408,10 +430,7 @@ void test_xMessageBufferCreateStatic_invalid_size( void )
/* The size of message buffer array should be one greater than the required size of message buffer. */ /* The size of message buffer array should be one greater than the required size of message buffer. */
uint8_t messageBufferArray[ TEST_MESSAGE_BUFFER_SIZE + 1 ] = { 0 }; uint8_t messageBufferArray[ TEST_MESSAGE_BUFFER_SIZE + 1 ] = { 0 };
if( TEST_PROTECT() ) EXPECT_ASSERT_BREAK( ( void ) xMessageBufferCreateStatic( TEST_MESSAGE_METADATA_SIZE, messageBufferArray, &messageBufferStruct ) );
{
( void ) xMessageBufferCreateStatic( TEST_MESSAGE_METADATA_SIZE, messageBufferArray, &messageBufferStruct );
}
validate_and_clear_assertions(); validate_and_clear_assertions();
} }
@ -425,10 +444,7 @@ void test_xMessageBufferCreateStatic_zero_size( void )
/* The size of message buffer array should be one greater than the required size of message buffer. */ /* The size of message buffer array should be one greater than the required size of message buffer. */
uint8_t messageBufferArray[ TEST_MESSAGE_BUFFER_SIZE + 1 ] = { 0 }; uint8_t messageBufferArray[ TEST_MESSAGE_BUFFER_SIZE + 1 ] = { 0 };
if( TEST_PROTECT() ) EXPECT_ASSERT_BREAK( ( void ) xMessageBufferCreateStatic( 0, messageBufferArray, &messageBufferStruct ) );
{
( void ) xMessageBufferCreateStatic( 0, messageBufferArray, &messageBufferStruct );
}
validate_and_clear_assertions(); validate_and_clear_assertions();
} }
@ -461,7 +477,7 @@ void test_xMessageBufferSend_success( void )
/** /**
* @brief An integer overflow in message size to be sent should result in an * @brief An integer overflow in message size to be sent should result in an
* assertion failure * assertion failure
*/ */
void test_xMessageBufferSend_message_size_integer_overflow( void ) void test_xMessageBufferSend_message_size_integer_overflow( void )
{ {
@ -475,10 +491,8 @@ void test_xMessageBufferSend_message_size_integer_overflow( void )
xMessageBuffer = xMessageBufferCreate( TEST_MESSAGE_BUFFER_SIZE ); xMessageBuffer = xMessageBufferCreate( TEST_MESSAGE_BUFFER_SIZE );
TEST_ASSERT_NOT_NULL( xMessageBuffer ); TEST_ASSERT_NOT_NULL( xMessageBuffer );
if( TEST_PROTECT() ) EXPECT_ASSERT_BREAK( ( void ) xMessageBufferSend( xMessageBuffer, data, TEST_MESSAGE_BUFFER_MAX_UINT_SIZE, TEST_MESSAGE_BUFFER_WAIT_TICKS ) );
{
( void ) xMessageBufferSend( xMessageBuffer, data, TEST_MESSAGE_BUFFER_MAX_UINT_SIZE, TEST_MESSAGE_BUFFER_WAIT_TICKS );
}
validate_and_clear_assertions(); validate_and_clear_assertions();
vStreamBufferDelete( xMessageBuffer ); vStreamBufferDelete( xMessageBuffer );
@ -521,10 +535,7 @@ void test_xMessageBufferSend_null_message( void )
xMessageBuffer = xMessageBufferCreate( TEST_MESSAGE_BUFFER_SIZE ); xMessageBuffer = xMessageBufferCreate( TEST_MESSAGE_BUFFER_SIZE );
TEST_ASSERT_NOT_NULL( xMessageBuffer ); TEST_ASSERT_NOT_NULL( xMessageBuffer );
if( TEST_PROTECT() ) EXPECT_ASSERT_BREAK( ( void ) xMessageBufferSend( xMessageBuffer, NULL, TEST_MAX_MESSAGE_SIZE + 1, TEST_MESSAGE_BUFFER_WAIT_TICKS ) );
{
( void ) xMessageBufferSend( xMessageBuffer, NULL, TEST_MAX_MESSAGE_SIZE + 1, TEST_MESSAGE_BUFFER_WAIT_TICKS );
}
validate_and_clear_assertions(); validate_and_clear_assertions();
@ -546,10 +557,7 @@ void test_xMessageBufferSend_null_message_buffer( void )
xMessageBuffer = xMessageBufferCreate( TEST_MESSAGE_BUFFER_SIZE ); xMessageBuffer = xMessageBufferCreate( TEST_MESSAGE_BUFFER_SIZE );
TEST_ASSERT_NOT_NULL( xMessageBuffer ); TEST_ASSERT_NOT_NULL( xMessageBuffer );
if( TEST_PROTECT() ) EXPECT_ASSERT_BREAK( ( void ) xMessageBufferSend( NULL, message, TEST_MAX_MESSAGE_SIZE + 1, TEST_MESSAGE_BUFFER_WAIT_TICKS ) );
{
( void ) xMessageBufferSend( NULL, message, TEST_MAX_MESSAGE_SIZE + 1, TEST_MESSAGE_BUFFER_WAIT_TICKS );
}
validate_and_clear_assertions(); validate_and_clear_assertions();
@ -643,12 +651,10 @@ void test_xMessageBufferReceive_null_input_message( void )
TEST_ASSERT_NOT_NULL( xMessageBuffer ); TEST_ASSERT_NOT_NULL( xMessageBuffer );
/* Should assert if a null input mssage is passed. */ /* Should assert if a null input mssage is passed. */
if( TEST_PROTECT() ) EXPECT_ASSERT_BREAK( ( void ) xMessageBufferReceive( xMessageBuffer, NULL, TEST_MAX_MESSAGE_SIZE, TEST_MESSAGE_BUFFER_WAIT_TICKS ) );
{
( void ) xMessageBufferReceive( xMessageBuffer, NULL, TEST_MAX_MESSAGE_SIZE, TEST_MESSAGE_BUFFER_WAIT_TICKS );
}
validate_and_clear_assertions(); validate_and_clear_assertions();
vStreamBufferDelete( xMessageBuffer ); vStreamBufferDelete( xMessageBuffer );
} }
@ -669,10 +675,7 @@ void test_xMessageBufferReceive_invalid_params( void )
TEST_ASSERT_NOT_NULL( xMessageBuffer ); TEST_ASSERT_NOT_NULL( xMessageBuffer );
/* Should assert if a null message buffer handle is passed. */ /* Should assert if a null message buffer handle is passed. */
if( TEST_PROTECT() ) EXPECT_ASSERT_BREAK( ( void ) xMessageBufferReceive( NULL, message, TEST_MAX_MESSAGE_SIZE, TEST_MESSAGE_BUFFER_WAIT_TICKS ) );
{
( void ) xMessageBufferReceive( NULL, message, TEST_MAX_MESSAGE_SIZE, TEST_MESSAGE_BUFFER_WAIT_TICKS );
}
validate_and_clear_assertions(); validate_and_clear_assertions();

Loading…
Cancel
Save