diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-03-22 15:29:06 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-03-22 15:41:33 +0100 |
commit | e0722e93d1826a5e62e54092bb7a415cdbeeb531 (patch) | |
tree | 7eb3420e925a1b75bc15278da39eda397817fb6d | |
parent | validation: Add TransitionMap.get_variants() (diff) | |
download | rtems-central-e0722e93d1826a5e62e54092bb7a415cdbeeb531.tar.bz2 |
validation: Add TransitionMap.skip_idx_to_name()
-rw-r--r-- | rtemsspec/tests/test_validation.py | 2 | ||||
-rw-r--r-- | rtemsspec/validation.py | 19 |
2 files changed, 18 insertions, 3 deletions
diff --git a/rtemsspec/tests/test_validation.py b/rtemsspec/tests/test_validation.py index dba67b87..938762c3 100644 --- a/rtemsspec/tests/test_validation.py +++ b/rtemsspec/tests/test_validation.py @@ -49,6 +49,8 @@ def test_validation(tmpdir): assert len(list(transition_map.get_variants([]))) == 36 assert len(list(transition_map.get_variants(["RTEMS_MULTIPROCESSING" ]))) == 36 + transition_map = TransitionMap(item_cache["/action2"]) + assert transition_map.skip_idx_to_name(1) == "SkipReason" generate(validation_config, item_cache) diff --git a/rtemsspec/validation.py b/rtemsspec/validation.py index 0f44179a..aabdd7b8 100644 --- a/rtemsspec/validation.py +++ b/rtemsspec/validation.py @@ -643,6 +643,12 @@ class TransitionMap: self._post_co_idx_to_co_name = dict( (co_idx, condition["name"]) for co_idx, condition in enumerate(item["post-conditions"])) + self._skip_idx_to_name = dict( + (skip_idx + 1, key) + for skip_idx, key in enumerate(item["skip-reasons"].keys())) + self._skip_name_to_idx = dict( + (key, skip_idx + 1) + for skip_idx, key in enumerate(item["skip-reasons"].keys())) self._entries = {} # type: Dict[str, List[Any]] self._map = self._build_map() self._post_process() @@ -764,6 +770,12 @@ class TransitionMap: """ return self._post_co_idx_st_name_to_st_idx[co_idx][st_name] + def skip_idx_to_name(self, skip_idx: int) -> str: + """ + Maps the skip index the associated skip name index. + """ + return self._skip_idx_to_name[skip_idx] + def _map_post_cond(self, desc_idx: int, map_idx: int, co_idx: int, post_cond: Tuple[Any, ...]) -> Tuple[Any, ...]: if isinstance(post_cond[co_idx], int): @@ -884,9 +896,10 @@ class TransitionMap: f"post-condition state {err}") raise ValueError(msg) from err else: - skip_post_cond = (1, ) + tuple( - self._post_co_idx_st_name_to_st_idx[co_idx]["N/A"] - for co_idx in range(self._post_co_count)) + skip_post_cond = ( + self._skip_name_to_idx[desc["post-conditions"]], ) + tuple( + self._post_co_idx_st_name_to_st_idx[co_idx]["N/A"] + for co_idx in range(self._post_co_count)) if isinstance(desc["pre-conditions"], dict): self._add_transitions(transition_map, desc, desc_idx, skip_post_cond, 0, 0, ()) |