summaryrefslogtreecommitdiffstats
path: root/rtemsspec
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-03-12 10:21:40 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-03-17 18:35:11 +0100
commitbcbb588fd258705968de1dac155ba81603646a60 (patch)
treef119489761787fa38b172d7b66310aa083ac1462 /rtemsspec
parentspec: Update semaphore specification (diff)
downloadrtems-central-bcbb588fd258705968de1dac155ba81603646a60.tar.bz2
validation: Add default for transition map entries
Diffstat (limited to 'rtemsspec')
-rw-r--r--rtemsspec/tests/spec-validation/action2.yml14
-rw-r--r--rtemsspec/validation.py20
2 files changed, 23 insertions, 11 deletions
diff --git a/rtemsspec/tests/spec-validation/action2.yml b/rtemsspec/tests/spec-validation/action2.yml
index dcb88080..7836b0d9 100644
--- a/rtemsspec/tests/spec-validation/action2.yml
+++ b/rtemsspec/tests/spec-validation/action2.yml
@@ -168,19 +168,15 @@ transition-map:
B:
- Y
- enabled-by: true
- post-conditions:
- A: X
- B: X
- pre-conditions:
- A:
- - X
- B:
- - Z
-- enabled-by: true
post-conditions: SkipReason
pre-conditions:
A:
- Y
B:
- Z
+- enabled-by: true
+ post-conditions:
+ A: X
+ B: X
+ pre-conditions: default
type: requirement
diff --git a/rtemsspec/validation.py b/rtemsspec/validation.py
index 204e7c92..c38cfadf 100644
--- a/rtemsspec/validation.py
+++ b/rtemsspec/validation.py
@@ -618,6 +618,18 @@ class _ActionRequirementTestItem(_TestItem):
" " + ", ".join(pre_cond_not_applicables),
trans_index))
+ def _add_default(self, trans_index: int, transition_map: _TransitionMap,
+ pre_cond_not_applicables: List[str],
+ post_cond: Tuple[int, ...]) -> None:
+ for transition in transition_map:
+ if not transition:
+ transition.append(
+ _Transition(
+ "1", post_cond,
+ " " + ", ".join(pre_cond_not_applicables +
+ ["0"] * self._pre_condition_count),
+ trans_index))
+
def _get_transition_map(self) -> _TransitionMap:
transition_count = 1
for condition in self["pre-conditions"]:
@@ -647,8 +659,12 @@ class _ActionRequirementTestItem(_TestItem):
post_cond = tuple(
len(self._post_state_to_index[index])
for index in range(self._post_condition_count))
- self._add_transitions(trans_index, 0, 0, transition,
- transition_map, info, post_cond)
+ if isinstance(transition["pre-conditions"], dict):
+ self._add_transitions(trans_index, 0, 0, transition,
+ transition_map, info, post_cond)
+ else:
+ assert transition["pre-conditions"] == "default"
+ self._add_default(trans_index, transition_map, info, post_cond)
return transition_map
def _post_condition_enumerators(self, conditions: Any) -> str: