|
|
@ -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();
|
|
|
|
|
|
|
|
|
|
|
|