diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-08-13 21:49:52 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-08-16 12:33:36 +0200 |
commit | 5f798f4804a315d870797bd4bfa5ee399cc2eb19 (patch) | |
tree | 4e2a3904af3fdc93dd5b3150ec14bc443da067d5 | |
parent | modules: Update rtems (diff) | |
download | rtems-central-5f798f4804a315d870797bd4bfa5ee399cc2eb19.tar.bz2 |
validation: Simplify pre-condition N/A support
-rw-r--r-- | rtemsspec/tests/test_validation.py | 13 | ||||
-rw-r--r-- | rtemsspec/validation.py | 26 |
2 files changed, 11 insertions, 28 deletions
diff --git a/rtemsspec/tests/test_validation.py b/rtemsspec/tests/test_validation.py index e5fb8901..1fef4bfe 100644 --- a/rtemsspec/tests/test_validation.py +++ b/rtemsspec/tests/test_validation.py @@ -2225,7 +2225,6 @@ void Action2_Run( int *a, int b, int *c ) ++ctx->pcs[ 2 ] ) { Action2_Entry entry; - size_t pcs[ 3 ]; entry = Action2_GetEntry( index ); ++index; @@ -2234,21 +2233,17 @@ void Action2_Run( int *a, int b, int *c ) continue; } - memcpy( pcs, ctx->pcs, sizeof( pcs ) ); - - if ( entry.Pre_A_NA ) { - ctx->pcs[ 0 ] = Action2_Pre_A_NA; - } - Action2_Prepare( ctx ); - Action2_Pre_A_Prepare( ctx, ctx->pcs[ 0 ] ); + Action2_Pre_A_Prepare( + ctx, + entry.Pre_A_NA ? Action2_Pre_A_NA : ctx->pcs[ 0 ] + ); Action2_Pre_B_Prepare( ctx, ctx->pcs[ 1 ] ); Action2_Pre_C_Prepare( ctx, ctx->pcs[ 2 ] ); Action2_Action( ctx ); Action2_Post_A_Check( ctx, entry.Post_A ); Action2_Post_B_Check( ctx, entry.Post_B ); Action2_Cleanup( ctx ); - memcpy( ctx->pcs, pcs, sizeof( ctx->pcs ) ); } } } diff --git a/rtemsspec/validation.py b/rtemsspec/validation.py index 8e14869d..8b76fe99 100644 --- a/rtemsspec/validation.py +++ b/rtemsspec/validation.py @@ -554,30 +554,22 @@ class _ActionRequirementTestItem(_TestItem): def _add_loop_body(self, content: CContent, transition_map: TransitionMap) -> None: - has_pre_co_na = max(transition_map.pre_co_summary[1:]) content.add(f"{self.ident}_Entry entry;") - if has_pre_co_na: - content.append(f"size_t pcs[ {self._pre_co_count} ];") content.call_function("entry =", f"{self.ident}_GetEntry", ["index"]) content.append("++index;") if transition_map.pre_co_summary[0]: with content.condition("entry.Skip"): content.append("continue;") - if has_pre_co_na: - content.call_function(None, "memcpy", - ["pcs", "ctx->pcs", "sizeof( pcs )"]) - for index, pre_co in enumerate(self._item["pre-conditions"]): - if transition_map.pre_co_summary[index + 1]: - name = pre_co["name"] - with content.condition(f"entry.Pre_{name}_NA"): - enum_na = self._pre_co_idx_to_enum[index][-1] - content.append(f"ctx->pcs[ {index} ] = {enum_na};") content.add_blank_line() self._add_call(content, "test-prepare", "Prepare") - for index, enum in enumerate(self._pre_co_idx_to_enum): + for index, pre_co in enumerate(self._item["pre-conditions"]): content.gap = False - content.call_function(None, f"{enum[0]}_Prepare", - ["ctx", f"ctx->pcs[ {index} ]"]) + state = f"ctx->pcs[ {index} ]" + if transition_map.pre_co_summary[index + 1]: + enum_na = self._pre_co_idx_to_enum[index][-1] + state = f"entry.Pre_{pre_co['name']}_NA ? {enum_na} : {state}" + prepare = f"{self._pre_co_idx_to_enum[index][0]}_Prepare" + content.call_function(None, prepare, ["ctx", state]) self._add_call(content, "test-action", "Action") for index, enum in enumerate(self._post_co_idx_to_enum): content.gap = False @@ -585,10 +577,6 @@ class _ActionRequirementTestItem(_TestItem): "ctx", f"entry.{transition_map.get_post_entry_member(index)}" ]) self._add_call(content, "test-cleanup", "Cleanup") - if has_pre_co_na: - content.gap = False - content.call_function(None, "memcpy", - ["ctx->pcs", "pcs", "sizeof( ctx->pcs )"]) def _add_for_loops(self, content: CContent, transition_map: TransitionMap, index: int) -> None: |