validation: Reduce source code/rodata size

Use a common wording for the tests.  Use the new templates for action
requirements described in the RTEMS Software Engineering manual.
This commit is contained in:
Sebastian Huber
2021-03-16 09:32:58 +01:00
parent eb1cd404d0
commit fa1e7ea054
9 changed files with 1322 additions and 9846 deletions

View File

@@ -264,7 +264,7 @@ static void RtemsBarrierReqWait_Pre_Id_Prepare(
switch ( state ) {
case RtemsBarrierReqWait_Pre_Id_NoObj: {
/*
* The ``id`` parameter shall not be associated with a barrier.
* While the ``id`` parameter is not associated with a barrier.
*/
ctx->id = 0xffffffff;
break;
@@ -272,7 +272,7 @@ static void RtemsBarrierReqWait_Pre_Id_Prepare(
case RtemsBarrierReqWait_Pre_Id_Manual: {
/*
* The ``id`` parameter shall be associated with a manual release
* While the ``id`` parameter is associated with a manual release
* barrier.
*/
ctx->id = ctx->manual_release_id;
@@ -281,7 +281,7 @@ static void RtemsBarrierReqWait_Pre_Id_Prepare(
case RtemsBarrierReqWait_Pre_Id_Auto: {
/*
* The ``id`` parameter shall be associated with an automatic release
* While the ``id`` parameter is associated with an automatic release
* barrier.
*/
ctx->id = ctx->auto_release_id;
@@ -301,7 +301,7 @@ static void RtemsBarrierReqWait_Pre_Timeout_Prepare(
switch ( state ) {
case RtemsBarrierReqWait_Pre_Timeout_Ticks: {
/*
* The ``released`` parameter shall be a clock tick interval.
* While the ``released`` parameter is a clock tick interval.
*/
ctx->timeout = 2;
break;
@@ -309,7 +309,7 @@ static void RtemsBarrierReqWait_Pre_Timeout_Prepare(
case RtemsBarrierReqWait_Pre_Timeout_Forever: {
/*
* The ``released`` parameter shall be RTEMS_NO_TIMEOUT.
* While the ``released`` parameter is RTEMS_NO_TIMEOUT.
*/
ctx->timeout = RTEMS_NO_TIMEOUT;
break;
@@ -328,7 +328,7 @@ static void RtemsBarrierReqWait_Pre_Satisfy_Prepare(
switch ( state ) {
case RtemsBarrierReqWait_Pre_Satisfy_Never: {
/*
* While the calling task waits at the barrier, the barrier shall not be
* While the calling task waits at the barrier, while the barrier is not
* released or deleted.
*/
if ( ctx->timeout == RTEMS_NO_TIMEOUT ) {
@@ -339,7 +339,7 @@ static void RtemsBarrierReqWait_Pre_Satisfy_Prepare(
case RtemsBarrierReqWait_Pre_Satisfy_Wait: {
/*
* Calling the directive shall release the barrier.
* While calling the directive releases the barrier.
*/
SendEvents( ctx->high_worker_id, EVENT_WAIT );
break;
@@ -347,7 +347,7 @@ static void RtemsBarrierReqWait_Pre_Satisfy_Prepare(
case RtemsBarrierReqWait_Pre_Satisfy_Release: {
/*
* While the calling task waits at the barrier, the barrier shall be
* While the calling task waits at the barrier, while the barrier is
* released.
*/
SendEvents( ctx->low_worker_id, EVENT_RELEASE );
@@ -356,7 +356,7 @@ static void RtemsBarrierReqWait_Pre_Satisfy_Prepare(
case RtemsBarrierReqWait_Pre_Satisfy_Delete: {
/*
* While the calling task waits at the barrier, the barrier shall be
* While the calling task waits at the barrier, while the barrier is
* deleted.
*/
SendEvents( ctx->low_worker_id, EVENT_DELETE );
@@ -533,6 +533,34 @@ static void RtemsBarrierReqWait_Teardown_Wrap( void *arg )
RtemsBarrierReqWait_Teardown( ctx );
}
static void RtemsBarrierReqWait_Action( RtemsBarrierReqWait_Context *ctx )
{
ctx->status = rtems_barrier_wait( ctx->id, ctx->timeout );
}
typedef struct {
uint8_t Skip : 1;
uint8_t Pre_Id_NA : 1;
uint8_t Pre_Timeout_NA : 1;
uint8_t Pre_Satisfy_NA : 1;
uint8_t Post_Status : 3;
} RtemsBarrierReqWait_Entry;
static const RtemsBarrierReqWait_Entry
RtemsBarrierReqWait_Entries[] = {
{ 0, 0, 1, 1, RtemsBarrierReqWait_Post_Status_InvId },
{ 0, 0, 0, 0, RtemsBarrierReqWait_Post_Status_Ok },
{ 0, 0, 0, 0, RtemsBarrierReqWait_Post_Status_ObjDel },
{ 0, 0, 0, 0, RtemsBarrierReqWait_Post_Status_Timeout },
{ 1, 0, 0, 0, RtemsBarrierReqWait_Post_Status_NA },
{ 0, 0, 0, 0, RtemsBarrierReqWait_Post_Status_NoReturn }
};
static const uint8_t
RtemsBarrierReqWait_Map[] = {
0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 1, 2, 5, 4, 1, 2, 3, 1, 1, 2, 5, 1, 1, 2
};
static size_t RtemsBarrierReqWait_Scope( void *arg, char *buf, size_t n )
{
RtemsBarrierReqWait_Context *ctx;
@@ -554,118 +582,13 @@ static T_fixture RtemsBarrierReqWait_Fixture = {
.initial_context = &RtemsBarrierReqWait_Instance
};
static const uint8_t RtemsBarrierReqWait_TransitionMap[][ 1 ] = {
{
RtemsBarrierReqWait_Post_Status_InvId
}, {
RtemsBarrierReqWait_Post_Status_InvId
}, {
RtemsBarrierReqWait_Post_Status_InvId
}, {
RtemsBarrierReqWait_Post_Status_InvId
}, {
RtemsBarrierReqWait_Post_Status_InvId
}, {
RtemsBarrierReqWait_Post_Status_InvId
}, {
RtemsBarrierReqWait_Post_Status_InvId
}, {
RtemsBarrierReqWait_Post_Status_InvId
}, {
RtemsBarrierReqWait_Post_Status_Timeout
}, {
RtemsBarrierReqWait_Post_Status_NA
}, {
RtemsBarrierReqWait_Post_Status_Ok
}, {
RtemsBarrierReqWait_Post_Status_ObjDel
}, {
RtemsBarrierReqWait_Post_Status_NoReturn
}, {
RtemsBarrierReqWait_Post_Status_NA
}, {
RtemsBarrierReqWait_Post_Status_Ok
}, {
RtemsBarrierReqWait_Post_Status_ObjDel
}, {
RtemsBarrierReqWait_Post_Status_Timeout
}, {
RtemsBarrierReqWait_Post_Status_Ok
}, {
RtemsBarrierReqWait_Post_Status_Ok
}, {
RtemsBarrierReqWait_Post_Status_ObjDel
}, {
RtemsBarrierReqWait_Post_Status_NoReturn
}, {
RtemsBarrierReqWait_Post_Status_Ok
}, {
RtemsBarrierReqWait_Post_Status_Ok
}, {
RtemsBarrierReqWait_Post_Status_ObjDel
}
};
static const struct {
uint8_t Skip : 1;
uint8_t Pre_Id_NA : 1;
uint8_t Pre_Timeout_NA : 1;
uint8_t Pre_Satisfy_NA : 1;
} RtemsBarrierReqWait_TransitionInfo[] = {
{
0, 0, 1, 1
}, {
0, 0, 1, 1
}, {
0, 0, 1, 1
}, {
0, 0, 1, 1
}, {
0, 0, 1, 1
}, {
0, 0, 1, 1
}, {
0, 0, 1, 1
}, {
0, 0, 1, 1
}, {
0, 0, 0, 0
}, {
1, 0, 0, 0
}, {
0, 0, 0, 0
}, {
0, 0, 0, 0
}, {
0, 0, 0, 0
}, {
1, 0, 0, 0
}, {
0, 0, 0, 0
}, {
0, 0, 0, 0
}, {
0, 0, 0, 0
}, {
0, 0, 0, 0
}, {
0, 0, 0, 0
}, {
0, 0, 0, 0
}, {
0, 0, 0, 0
}, {
0, 0, 0, 0
}, {
0, 0, 0, 0
}, {
0, 0, 0, 0
}
};
static void RtemsBarrierReqWait_Action( RtemsBarrierReqWait_Context *ctx )
static inline RtemsBarrierReqWait_Entry RtemsBarrierReqWait_GetEntry(
size_t index
)
{
ctx->status = rtems_barrier_wait( ctx->id, ctx->timeout );
return RtemsBarrierReqWait_Entries[
RtemsBarrierReqWait_Map[ index ]
];
}
/**
@@ -674,6 +597,7 @@ static void RtemsBarrierReqWait_Action( RtemsBarrierReqWait_Context *ctx )
T_TEST_CASE_FIXTURE( RtemsBarrierReqWait, &RtemsBarrierReqWait_Fixture )
{
RtemsBarrierReqWait_Context *ctx;
RtemsBarrierReqWait_Entry entry;
size_t index;
ctx = T_fixture_context();
@@ -685,7 +609,9 @@ T_TEST_CASE_FIXTURE( RtemsBarrierReqWait, &RtemsBarrierReqWait_Fixture )
ctx->pcs[ 0 ] < RtemsBarrierReqWait_Pre_Id_NA;
++ctx->pcs[ 0 ]
) {
if ( RtemsBarrierReqWait_TransitionInfo[ index ].Pre_Id_NA ) {
entry = RtemsBarrierReqWait_GetEntry( index );
if ( entry.Pre_Id_NA ) {
ctx->pcs[ 0 ] = RtemsBarrierReqWait_Pre_Id_NA;
index += ( RtemsBarrierReqWait_Pre_Id_NA - 1 )
* RtemsBarrierReqWait_Pre_Timeout_NA
@@ -697,7 +623,9 @@ T_TEST_CASE_FIXTURE( RtemsBarrierReqWait, &RtemsBarrierReqWait_Fixture )
ctx->pcs[ 1 ] < RtemsBarrierReqWait_Pre_Timeout_NA;
++ctx->pcs[ 1 ]
) {
if ( RtemsBarrierReqWait_TransitionInfo[ index ].Pre_Timeout_NA ) {
entry = RtemsBarrierReqWait_GetEntry( index );
if ( entry.Pre_Timeout_NA ) {
ctx->pcs[ 1 ] = RtemsBarrierReqWait_Pre_Timeout_NA;
index += ( RtemsBarrierReqWait_Pre_Timeout_NA - 1 )
* RtemsBarrierReqWait_Pre_Satisfy_NA;
@@ -708,12 +636,14 @@ T_TEST_CASE_FIXTURE( RtemsBarrierReqWait, &RtemsBarrierReqWait_Fixture )
ctx->pcs[ 2 ] < RtemsBarrierReqWait_Pre_Satisfy_NA;
++ctx->pcs[ 2 ]
) {
if ( RtemsBarrierReqWait_TransitionInfo[ index ].Pre_Satisfy_NA ) {
entry = RtemsBarrierReqWait_GetEntry( index );
if ( entry.Pre_Satisfy_NA ) {
ctx->pcs[ 2 ] = RtemsBarrierReqWait_Pre_Satisfy_NA;
index += ( RtemsBarrierReqWait_Pre_Satisfy_NA - 1 );
}
if ( RtemsBarrierReqWait_TransitionInfo[ index ].Skip ) {
if ( entry.Skip ) {
++index;
continue;
}
@@ -722,10 +652,7 @@ T_TEST_CASE_FIXTURE( RtemsBarrierReqWait, &RtemsBarrierReqWait_Fixture )
RtemsBarrierReqWait_Pre_Timeout_Prepare( ctx, ctx->pcs[ 1 ] );
RtemsBarrierReqWait_Pre_Satisfy_Prepare( ctx, ctx->pcs[ 2 ] );
RtemsBarrierReqWait_Action( ctx );
RtemsBarrierReqWait_Post_Status_Check(
ctx,
RtemsBarrierReqWait_TransitionMap[ index ][ 0 ]
);
RtemsBarrierReqWait_Post_Status_Check( ctx, entry.Post_Status );
++index;
}
}