From be2614e9ad10cb5864edee7444f185baf46d0181 Mon Sep 17 00:00:00 2001 From: Fernando Macedo Date: Wed, 14 Oct 2026 00:32:29 -0300 Subject: [PATCH 1/6] test: run UML state machine cases generated from the OMG PSSM 1.0 test suite Add a converter from the PSSM 1.0 test suite XMI (ptc/18-11-06) to native YAML cases, the 103 generated cases, the overlays for behaviors with logic and CallEvent tests, and a harness that runs every case on the sync and async engines. Cases the library cannot pass yet are expected failures with a reason code. A drift test regenerates the cases when PSSM_XMI points to the XMI, and a separate CI job downloads it to run that test. Refs #692 Signed-off-by: Fernando Macedo --- .github/workflows/python-package.yml | 29 + .gitignore | 3 + docs/contributing.md | 18 + tests/uml/__init__.py | 0 tests/uml/pssm/README.md | 76 + tests/uml/pssm/__init__.py | 0 .../uml/pssm/cases/Behavior/Behavior_001.yaml | 21 + .../uml/pssm/cases/Behavior/Behavior_002.yaml | 21 + .../pssm/cases/Behavior/Behavior_003-A.yaml | 40 + .../pssm/cases/Behavior/Behavior_003-B.yaml | 30 + .../uml/pssm/cases/Behavior/Behavior_004.yaml | 36 + tests/uml/pssm/cases/Choice/Choice_001.yaml | 38 + tests/uml/pssm/cases/Choice/Choice_002.yaml | 41 + tests/uml/pssm/cases/Choice/Choice_003.yaml | 39 + tests/uml/pssm/cases/Choice/Choice_004.yaml | 40 + tests/uml/pssm/cases/Choice/Choice_005.yaml | 51 + .../uml/pssm/cases/Deferred/Deferred_001.yaml | 54 + .../uml/pssm/cases/Deferred/Deferred_002.yaml | 64 + .../uml/pssm/cases/Deferred/Deferred_003.yaml | 70 + .../pssm/cases/Deferred/Deferred_004-A.yaml | 78 + .../pssm/cases/Deferred/Deferred_004-B.yaml | 83 ++ .../uml/pssm/cases/Deferred/Deferred_005.yaml | 52 + .../pssm/cases/Deferred/Deferred_006-A.yaml | 26 + .../pssm/cases/Deferred/Deferred_006-B.yaml | 30 + .../pssm/cases/Deferred/Deferred_006-C.yaml | 50 + .../uml/pssm/cases/Deferred/Deferred_007.yaml | 51 + .../uml/pssm/cases/Entering/Entering_004.yaml | 39 + .../uml/pssm/cases/Entering/Entering_005.yaml | 42 + .../uml/pssm/cases/Entering/Entering_009.yaml | 38 + .../uml/pssm/cases/Entering/Entering_010.yaml | 65 + .../uml/pssm/cases/Entering/Entering_011.yaml | 69 + tests/uml/pssm/cases/Entry/Entry_002-A.yaml | 49 + tests/uml/pssm/cases/Entry/Entry_002-B.yaml | 56 + tests/uml/pssm/cases/Entry/Entry_002-C.yaml | 40 + tests/uml/pssm/cases/Entry/Entry_002-D.yaml | 46 + tests/uml/pssm/cases/Entry/Entry_002-E.yaml | 67 + tests/uml/pssm/cases/Entry/Entry_002-F.yaml | 60 + tests/uml/pssm/cases/Event/Event_001.yaml | 21 + tests/uml/pssm/cases/Event/Event_002.yaml | 41 + tests/uml/pssm/cases/Event/Event_008.yaml | 34 + tests/uml/pssm/cases/Event/Event_009.yaml | 61 + tests/uml/pssm/cases/Event/Event_010.yaml | 81 + tests/uml/pssm/cases/Event/Event_015.yaml | 38 + tests/uml/pssm/cases/Event/Event_016-A.yaml | 42 + tests/uml/pssm/cases/Event/Event_016-B.yaml | 144 ++ tests/uml/pssm/cases/Event/Event_017-A.yaml | 39 + tests/uml/pssm/cases/Event/Event_017-B.yaml | 55 + tests/uml/pssm/cases/Event/Event_018.yaml | 60 + tests/uml/pssm/cases/Event/Event_019-A.yaml | 36 + tests/uml/pssm/cases/Event/Event_019-B.yaml | 36 + tests/uml/pssm/cases/Event/Event_019-C.yaml | 64 + tests/uml/pssm/cases/Event/Event_019-D.yaml | 37 + tests/uml/pssm/cases/Event/Event_019-E.yaml | 63 + tests/uml/pssm/cases/Exit/Exit_001.yaml | 49 + tests/uml/pssm/cases/Exit/Exit_002.yaml | 42 + tests/uml/pssm/cases/Exit/Exit_003.yaml | 54 + tests/uml/pssm/cases/Exiting/Exiting_001.yaml | 53 + tests/uml/pssm/cases/Exiting/Exiting_002.yaml | 37 + tests/uml/pssm/cases/Exiting/Exiting_003.yaml | 62 + tests/uml/pssm/cases/Exiting/Exiting_004.yaml | 36 + tests/uml/pssm/cases/Exiting/Exiting_005.yaml | 57 + tests/uml/pssm/cases/Final/Final_001.yaml | 65 + tests/uml/pssm/cases/Fork/Fork_001.yaml | 164 +++ tests/uml/pssm/cases/Fork/Fork_002.yaml | 66 + .../uml/pssm/cases/History/History_001-A.yaml | 67 + .../uml/pssm/cases/History/History_001-B.yaml | 84 ++ .../uml/pssm/cases/History/History_001-C.yaml | 107 ++ .../uml/pssm/cases/History/History_001-D.yaml | 78 + .../uml/pssm/cases/History/History_002-A.yaml | 81 + .../uml/pssm/cases/History/History_002-B.yaml | 110 ++ .../uml/pssm/cases/History/History_002-C.yaml | 54 + .../uml/pssm/cases/History/History_002-D.yaml | 73 + tests/uml/pssm/cases/Join/Join_001.yaml | 52 + tests/uml/pssm/cases/Join/Join_002.yaml | 59 + tests/uml/pssm/cases/Join/Join_003.yaml | 64 + .../uml/pssm/cases/Junction/Junction_001.yaml | 48 + .../uml/pssm/cases/Junction/Junction_002.yaml | 49 + .../uml/pssm/cases/Junction/Junction_003.yaml | 119 ++ .../uml/pssm/cases/Junction/Junction_004.yaml | 91 ++ .../uml/pssm/cases/Junction/Junction_005.yaml | 100 ++ .../uml/pssm/cases/Junction/Junction_006.yaml | 65 + .../Other/TransitionExecutionAlgorithm.yaml | 56 + .../cases/Redefinition/Redefinition_001.yaml | 67 + .../cases/Redefinition/Redefinition_002.yaml | 54 + .../cases/Redefinition/Redefinition_003.yaml | 59 + .../cases/Redefinition/Redefinition_004.yaml | 52 + .../cases/Redefinition/Redefinition_005.yaml | 54 + .../cases/Redefinition/Redefinition_006.yaml | 41 + .../pssm/cases/Standalone/Standalone_001.yaml | 106 ++ .../pssm/cases/Standalone/Standalone_002.yaml | 109 ++ .../pssm/cases/Standalone/Standalone_003.yaml | 63 + .../pssm/cases/Terminate/Terminate_001.yaml | 61 + .../pssm/cases/Terminate/Terminate_002.yaml | 64 + .../pssm/cases/Terminate/Terminate_003.yaml | 24 + .../pssm/cases/Transition/Transition_001.yaml | 24 + .../pssm/cases/Transition/Transition_007.yaml | 41 + .../pssm/cases/Transition/Transition_010.yaml | 41 + .../cases/Transition/Transition_011-A.yaml | 56 + .../cases/Transition/Transition_011-B.yaml | 47 + .../cases/Transition/Transition_011-C.yaml | 55 + .../cases/Transition/Transition_011-D.yaml | 68 + .../cases/Transition/Transition_011-E.yaml | 47 + .../pssm/cases/Transition/Transition_015.yaml | 27 + .../pssm/cases/Transition/Transition_016.yaml | 24 + .../pssm/cases/Transition/Transition_017.yaml | 76 + .../pssm/cases/Transition/Transition_019.yaml | 71 + .../pssm/cases/Transition/Transition_020.yaml | 38 + .../pssm/cases/Transition/Transition_022.yaml | 32 + .../pssm/cases/Transition/Transition_023.yaml | 123 ++ tests/uml/pssm/conftest.py | 145 ++ tests/uml/pssm/convert.py | 1299 +++++++++++++++++ tests/uml/pssm/overlays/Choice_001.yaml | 8 + tests/uml/pssm/overlays/Deferred_005.yaml | 5 + tests/uml/pssm/overlays/Deferred_006-A.yaml | 7 + tests/uml/pssm/overlays/Deferred_007.yaml | 15 + tests/uml/pssm/overlays/Event_019-D.yaml | 7 + tests/uml/pssm/overlays/Event_019-E.yaml | 17 + tests/uml/pssm/overlays/Exiting_002.yaml | 6 + tests/uml/pssm/overlays/Standalone_001.yaml | 14 + tests/uml/pssm/overlays/Standalone_003.yaml | 17 + tests/uml/pssm/overlays/Transition_022.yaml | 6 + tests/uml/pssm/test_convert.py | 316 ++++ tests/uml/pssm/test_pssm_cases.py | 330 +++++ tests/uml/pssm/test_pssm_drift.py | 32 + 124 files changed, 8254 insertions(+) create mode 100644 tests/uml/__init__.py create mode 100644 tests/uml/pssm/README.md create mode 100644 tests/uml/pssm/__init__.py create mode 100644 tests/uml/pssm/cases/Behavior/Behavior_001.yaml create mode 100644 tests/uml/pssm/cases/Behavior/Behavior_002.yaml create mode 100644 tests/uml/pssm/cases/Behavior/Behavior_003-A.yaml create mode 100644 tests/uml/pssm/cases/Behavior/Behavior_003-B.yaml create mode 100644 tests/uml/pssm/cases/Behavior/Behavior_004.yaml create mode 100644 tests/uml/pssm/cases/Choice/Choice_001.yaml create mode 100644 tests/uml/pssm/cases/Choice/Choice_002.yaml create mode 100644 tests/uml/pssm/cases/Choice/Choice_003.yaml create mode 100644 tests/uml/pssm/cases/Choice/Choice_004.yaml create mode 100644 tests/uml/pssm/cases/Choice/Choice_005.yaml create mode 100644 tests/uml/pssm/cases/Deferred/Deferred_001.yaml create mode 100644 tests/uml/pssm/cases/Deferred/Deferred_002.yaml create mode 100644 tests/uml/pssm/cases/Deferred/Deferred_003.yaml create mode 100644 tests/uml/pssm/cases/Deferred/Deferred_004-A.yaml create mode 100644 tests/uml/pssm/cases/Deferred/Deferred_004-B.yaml create mode 100644 tests/uml/pssm/cases/Deferred/Deferred_005.yaml create mode 100644 tests/uml/pssm/cases/Deferred/Deferred_006-A.yaml create mode 100644 tests/uml/pssm/cases/Deferred/Deferred_006-B.yaml create mode 100644 tests/uml/pssm/cases/Deferred/Deferred_006-C.yaml create mode 100644 tests/uml/pssm/cases/Deferred/Deferred_007.yaml create mode 100644 tests/uml/pssm/cases/Entering/Entering_004.yaml create mode 100644 tests/uml/pssm/cases/Entering/Entering_005.yaml create mode 100644 tests/uml/pssm/cases/Entering/Entering_009.yaml create mode 100644 tests/uml/pssm/cases/Entering/Entering_010.yaml create mode 100644 tests/uml/pssm/cases/Entering/Entering_011.yaml create mode 100644 tests/uml/pssm/cases/Entry/Entry_002-A.yaml create mode 100644 tests/uml/pssm/cases/Entry/Entry_002-B.yaml create mode 100644 tests/uml/pssm/cases/Entry/Entry_002-C.yaml create mode 100644 tests/uml/pssm/cases/Entry/Entry_002-D.yaml create mode 100644 tests/uml/pssm/cases/Entry/Entry_002-E.yaml create mode 100644 tests/uml/pssm/cases/Entry/Entry_002-F.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_001.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_002.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_008.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_009.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_010.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_015.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_016-A.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_016-B.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_017-A.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_017-B.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_018.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_019-A.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_019-B.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_019-C.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_019-D.yaml create mode 100644 tests/uml/pssm/cases/Event/Event_019-E.yaml create mode 100644 tests/uml/pssm/cases/Exit/Exit_001.yaml create mode 100644 tests/uml/pssm/cases/Exit/Exit_002.yaml create mode 100644 tests/uml/pssm/cases/Exit/Exit_003.yaml create mode 100644 tests/uml/pssm/cases/Exiting/Exiting_001.yaml create mode 100644 tests/uml/pssm/cases/Exiting/Exiting_002.yaml create mode 100644 tests/uml/pssm/cases/Exiting/Exiting_003.yaml create mode 100644 tests/uml/pssm/cases/Exiting/Exiting_004.yaml create mode 100644 tests/uml/pssm/cases/Exiting/Exiting_005.yaml create mode 100644 tests/uml/pssm/cases/Final/Final_001.yaml create mode 100644 tests/uml/pssm/cases/Fork/Fork_001.yaml create mode 100644 tests/uml/pssm/cases/Fork/Fork_002.yaml create mode 100644 tests/uml/pssm/cases/History/History_001-A.yaml create mode 100644 tests/uml/pssm/cases/History/History_001-B.yaml create mode 100644 tests/uml/pssm/cases/History/History_001-C.yaml create mode 100644 tests/uml/pssm/cases/History/History_001-D.yaml create mode 100644 tests/uml/pssm/cases/History/History_002-A.yaml create mode 100644 tests/uml/pssm/cases/History/History_002-B.yaml create mode 100644 tests/uml/pssm/cases/History/History_002-C.yaml create mode 100644 tests/uml/pssm/cases/History/History_002-D.yaml create mode 100644 tests/uml/pssm/cases/Join/Join_001.yaml create mode 100644 tests/uml/pssm/cases/Join/Join_002.yaml create mode 100644 tests/uml/pssm/cases/Join/Join_003.yaml create mode 100644 tests/uml/pssm/cases/Junction/Junction_001.yaml create mode 100644 tests/uml/pssm/cases/Junction/Junction_002.yaml create mode 100644 tests/uml/pssm/cases/Junction/Junction_003.yaml create mode 100644 tests/uml/pssm/cases/Junction/Junction_004.yaml create mode 100644 tests/uml/pssm/cases/Junction/Junction_005.yaml create mode 100644 tests/uml/pssm/cases/Junction/Junction_006.yaml create mode 100644 tests/uml/pssm/cases/Other/TransitionExecutionAlgorithm.yaml create mode 100644 tests/uml/pssm/cases/Redefinition/Redefinition_001.yaml create mode 100644 tests/uml/pssm/cases/Redefinition/Redefinition_002.yaml create mode 100644 tests/uml/pssm/cases/Redefinition/Redefinition_003.yaml create mode 100644 tests/uml/pssm/cases/Redefinition/Redefinition_004.yaml create mode 100644 tests/uml/pssm/cases/Redefinition/Redefinition_005.yaml create mode 100644 tests/uml/pssm/cases/Redefinition/Redefinition_006.yaml create mode 100644 tests/uml/pssm/cases/Standalone/Standalone_001.yaml create mode 100644 tests/uml/pssm/cases/Standalone/Standalone_002.yaml create mode 100644 tests/uml/pssm/cases/Standalone/Standalone_003.yaml create mode 100644 tests/uml/pssm/cases/Terminate/Terminate_001.yaml create mode 100644 tests/uml/pssm/cases/Terminate/Terminate_002.yaml create mode 100644 tests/uml/pssm/cases/Terminate/Terminate_003.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_001.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_007.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_010.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_011-A.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_011-B.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_011-C.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_011-D.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_011-E.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_015.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_016.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_017.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_019.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_020.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_022.yaml create mode 100644 tests/uml/pssm/cases/Transition/Transition_023.yaml create mode 100644 tests/uml/pssm/conftest.py create mode 100644 tests/uml/pssm/convert.py create mode 100644 tests/uml/pssm/overlays/Choice_001.yaml create mode 100644 tests/uml/pssm/overlays/Deferred_005.yaml create mode 100644 tests/uml/pssm/overlays/Deferred_006-A.yaml create mode 100644 tests/uml/pssm/overlays/Deferred_007.yaml create mode 100644 tests/uml/pssm/overlays/Event_019-D.yaml create mode 100644 tests/uml/pssm/overlays/Event_019-E.yaml create mode 100644 tests/uml/pssm/overlays/Exiting_002.yaml create mode 100644 tests/uml/pssm/overlays/Standalone_001.yaml create mode 100644 tests/uml/pssm/overlays/Standalone_003.yaml create mode 100644 tests/uml/pssm/overlays/Transition_022.yaml create mode 100644 tests/uml/pssm/test_convert.py create mode 100644 tests/uml/pssm/test_pssm_cases.py create mode 100644 tests/uml/pssm/test_pssm_drift.py diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index cd9daf70..adbdf174 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -64,3 +64,32 @@ jobs: flags: unittests name: codecov-umbrella verbose: true + + pssm-drift: + # The XMI may not be stored or cached anywhere, see tests/uml/pssm/README.md. + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v7 + - name: Set up Python + uses: actions/setup-python@v7 + with: + python-version: "3.15" + - name: Install uv + uses: astral-sh/setup-uv@v10.2.0 + with: + enable-cache: true + cache-suffix: "pssm-drift" + - name: Install the project + run: uv sync --all-extras --dev + - name: Download the PSSM test suite XMI + run: | + xmi_dir="$(mktemp -d)" + curl --fail --silent --show-error --location --retry 3 \ + --output "$xmi_dir/PSSM_TestSuite.xmi" \ + https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi + echo "PSSM_XMI=$xmi_dir/PSSM_TestSuite.xmi" >> "$GITHUB_ENV" + - name: Compare the committed cases with the converter output + env: + PSSM_REQUIRED: "1" + run: uv run pytest tests/uml/pssm/test_pssm_drift.py --timeout 300 diff --git a/.gitignore b/.gitignore index 4767b73e..c77f414a 100644 --- a/.gitignore +++ b/.gitignore @@ -86,6 +86,9 @@ tmp/ # Local specs specs/ +# Local copy of the OMG PSSM test suite, never committed (see tests/uml/pssm/README.md) +PSSM_TestSuite.xmi + # Environment files (secrets) .env .env.* diff --git a/docs/contributing.md b/docs/contributing.md index 6bf2a3b8..3c3f0d34 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -163,6 +163,24 @@ Before you submit a pull request, check that it meets these guidelines: 3. Consider adding yourself to the contributor's list. 4. The pull request should work for all supported Python versions. +## UML cases based on PSSM + +`tests/uml/pssm/` runs cases generated from the test suite of the OMG Precise Semantics of +UML State Machines (PSSM) 1.0 specification, on both engines. Each case is a native YAML +statechart plus the stimulus and the traces the suite expects. Cases the library cannot +pass yet are listed in `tests/uml/pssm/conftest.py`, each with a reason code; since +`xfail_strict` is on, a change that makes one of them pass must remove it from that list. +The same file lists in `LOWERED` the cases that pass only because the converter lowers a +construct the library cannot spell yet; when that construct gets a native spelling, the +converter stops lowering it and those cases are reclassified. + +The cases are generated by `tests/uml/pssm/convert.py` and must not be edited by hand. The +OMG XMI is never committed: to regenerate the cases, download it, point `PSSM_XMI` at it +and run the converter, as described in +[tests/uml/pssm/README.md](https://github.com/fgmacedo/python-statemachine/blob/main/tests/uml/pssm/README.md). +The `pssm-drift` CI job downloads the XMI and fails if the committed cases differ from the +converter output. + ## Releasing a New Version This project follows [trunk based development](https://trunkbaseddevelopment.com/): `main` is diff --git a/tests/uml/__init__.py b/tests/uml/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/uml/pssm/README.md b/tests/uml/pssm/README.md new file mode 100644 index 00000000..1a439b63 --- /dev/null +++ b/tests/uml/pssm/README.md @@ -0,0 +1,76 @@ +# UML state machine cases based on PSSM + +The cases in `cases/` are generated by `convert.py` from the test suite of the OMG +Precise Semantics of UML State Machines (PSSM) 1.0 specification: + +- Source: +- OMG document number: ptc/18-11-06 +- sha256: `c355b249c356774377a46b60345019d827af1ce417bde88e533aa5f39206ae07` + +The PSSM specification and its test suite are copyright © Object Management Group, Inc. +and the organizations named in the specification's copyright notice. UML and OMG are +trademarks of the Object Management Group, used here only to name the source. + +The repository holds the converter, the harness and the generated cases, never the XMI +itself: the specification's license does not allow posting copies of it on a network +computer, so the XMI is downloaded when needed and never committed, stored or cached. The +cases are *based on* PSSM; passing them is not a conformance claim. + +## Layout + +- `convert.py`: XMI to native YAML, standard library XML parser, deterministic output. +- `cases//.yaml`: one generated case per PSSM test. Do not edit. +- `overlays/.yaml`: hand-written patches the converter applies, for behaviors with logic + (counters, signals sent from inside the machine) and for CallEvent tests. `cases/` is + always exactly the converter output for the XMI plus these overlays. In the generated + statechart, an overlay's native actions run before its trace callback. +- `conftest.py`: the expected failures, per engine, with a reason code, and `LOWERED`: the + cases that pass only because the converter lowers a construct the library cannot spell + yet (for example, a junction flattened into guarded transitions). Those passes do not + show native support for the construct. Every case with a non-empty `requires` is in one + of the two. +- `test_pssm_cases.py`: runs every case on the sync and the async engine. +- `test_pssm_drift.py`: regenerates the cases and compares them with `cases/`. + +## Case format + +Each case is a YAML mapping: + +- `requires`: UML constructs the case uses that the native format cannot spell yet + (`choice`, `junction`, `join`, `fork`, `terminate`, `entry_point`, `exit_point`, + `defer`, `call_event`, `redefinition`, `do_activity_accept`). The statechart is the + closest loadable approximation. +- `expected_traces`: the accepted traces, taken from the suite's executable oracle. +- `stimulus`: what the tester does, in order, starting with `Start`: `{event, kwargs}` + sends a signal, `{call, kwargs}` calls an operation, `{trace}` is a token the tester + traces itself, `trace_result` formats the value a call returned. +- `behaviors`: the trace tokens each callback appends; `{name}` placeholders are filled + with the event data. `on_invoke_` entries are doActivities; in them, + `{send: {event}}` sends an event to the machine and `{accept}` parks the doActivity until + its state is left. +- `statechart`: a native document, loaded untrusted with `statemachine.io.load`. + +The converter lowers UML completion transitions to what the library has today: from a +composite state to `done.state.`, from a state with a doActivity to +`done.invoke.`, from a simple state to an eventless transition. + +## Running + +```bash +timeout 120 uv run pytest tests/uml/pssm -n 4 +``` + +## Regenerating + +Download the XMI to a git-ignored location (any directory outside the repository, or the +repository root, where `PSSM_TestSuite.xmi` is ignored), then: + +```bash +export PSSM_XMI=/path/to/PSSM_TestSuite.xmi +uv run python -m tests.uml.pssm.convert --out tests/uml/pssm/cases +uv run pytest tests/uml/pssm/test_pssm_drift.py +``` + +The converter checks the sha256 above before reading the file. Without `PSSM_XMI` the +drift test is skipped; `PSSM_REQUIRED=1` turns the skip into a failure, which is how the +`pssm-drift` CI job runs it. diff --git a/tests/uml/pssm/__init__.py b/tests/uml/pssm/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/uml/pssm/cases/Behavior/Behavior_001.yaml b/tests/uml/pssm/cases/Behavior/Behavior_001.yaml new file mode 100644 index 00000000..5530ac5b --- /dev/null +++ b/tests/uml/pssm/cases/Behavior/Behavior_001.yaml @@ -0,0 +1,21 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry) +stimulus: +- event: Start +behaviors: + pssm_S1_entry: + - S1(entry) +statechart: + name: Behavior_001 + states: + S1: + initial: true + enter: + - pssm_S1_entry + transitions: + - event: Start + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Behavior/Behavior_002.yaml b/tests/uml/pssm/cases/Behavior/Behavior_002.yaml new file mode 100644 index 00000000..a5387cfe --- /dev/null +++ b/tests/uml/pssm/cases/Behavior/Behavior_002.yaml @@ -0,0 +1,21 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(exit) +stimulus: +- event: Start +behaviors: + pssm_S1_exit: + - S1(exit) +statechart: + name: Behavior_002 + states: + S1: + initial: true + exit: + - pssm_S1_exit + transitions: + - event: Start + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Behavior/Behavior_003-A.yaml b/tests/uml/pssm/cases/Behavior/Behavior_003-A.yaml new file mode 100644 index 00000000..cb23aceb --- /dev/null +++ b/tests/uml/pssm/cases/Behavior/Behavior_003-A.yaml @@ -0,0 +1,40 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- do_activity_accept +expected_traces: +- S1(entry)::S1(doActivityPartI) +- S1(entry) +stimulus: +- event: Start +- event: AnotherSignal +behaviors: + pssm_S1_entry: + - S1(entry) + on_invoke_S1: + - S1(doActivityPartI) + - accept: Continue + pssm_T3_effect: + - T3(effect) +statechart: + name: Behavior_003-A + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + transitions: + - event: done.invoke.S1 + target: error + 'on': + - pssm_T3_effect + - event: AnotherSignal + target: FS1 + FS1: + final: true + error: + transitions: + - target: FS1 diff --git a/tests/uml/pssm/cases/Behavior/Behavior_003-B.yaml b/tests/uml/pssm/cases/Behavior/Behavior_003-B.yaml new file mode 100644 index 00000000..e2c000fa --- /dev/null +++ b/tests/uml/pssm/cases/Behavior/Behavior_003-B.yaml @@ -0,0 +1,30 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- do_activity_accept +expected_traces: +- S1(entry)::S1(doActivityPartI)::S1(doActivityPartII) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + on_invoke_S1: + - S1(doActivityPartI) + - accept: Continue +statechart: + name: Behavior_003-B + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + transitions: + - event: done.invoke.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Behavior/Behavior_004.yaml b/tests/uml/pssm/cases/Behavior/Behavior_004.yaml new file mode 100644 index 00000000..e3b385a1 --- /dev/null +++ b/tests/uml/pssm/cases/Behavior/Behavior_004.yaml @@ -0,0 +1,36 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- do_activity_accept +expected_traces: +- S1(entry)::S1(doActivityPartI)::T3(effect)::S1(doActivityPartII) +stimulus: +- event: Start +- event: AnotherSignal +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + on_invoke_S1: + - S1(doActivityPartI) + - accept: Continue + pssm_T3_effect: + - T3(effect) +statechart: + name: Behavior_004 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + transitions: + - event: done.invoke.S1 + target: FS1 + - event: AnotherSignal + 'on': + - pssm_T3_effect + FS1: + final: true diff --git a/tests/uml/pssm/cases/Choice/Choice_001.yaml b/tests/uml/pssm/cases/Choice/Choice_001.yaml new file mode 100644 index 00000000..bb018787 --- /dev/null +++ b/tests/uml/pssm/cases/Choice/Choice_001.yaml @@ -0,0 +1,38 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- choice +expected_traces: +- T4(effect)::T4(effect)::T4(effect)::T4(effect) +stimulus: +- event: Start +behaviors: + pssm_T4_effect: + - T4(effect) +statechart: + name: Choice_001 + datamodel: + value: '0' + states: + Increment: + enter: + - assign: + location: value + expr: value + 1 + transitions: + - target: FS1 + cond: value == 5 + - target: Increment + cond: value < 5 + 'on': + - pssm_T4_effect + wait: + initial: true + transitions: + - event: Start + target: Increment + 'on': + - assign: + location: value + expr: '0' + FS1: + final: true diff --git a/tests/uml/pssm/cases/Choice/Choice_002.yaml b/tests/uml/pssm/cases/Choice/Choice_002.yaml new file mode 100644 index 00000000..fcd59ac8 --- /dev/null +++ b/tests/uml/pssm/cases/Choice/Choice_002.yaml @@ -0,0 +1,41 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- choice +expected_traces: +- T3(effect) +- T4(effect) +- T5(effect) +stimulus: +- event: Start +behaviors: + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) + pssm_T5_effect: + - T5(effect) +statechart: + name: Choice_002 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + cond: 'True' + 'on': + - pssm_T3_effect + - event: Start + target: S1 + cond: 'True' + 'on': + - pssm_T4_effect + - event: Start + target: S1 + 'on': + - pssm_T5_effect + FS1: + final: true + S1: + transitions: + - target: FS1 diff --git a/tests/uml/pssm/cases/Choice/Choice_003.yaml b/tests/uml/pssm/cases/Choice/Choice_003.yaml new file mode 100644 index 00000000..c80864c1 --- /dev/null +++ b/tests/uml/pssm/cases/Choice/Choice_003.yaml @@ -0,0 +1,39 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- choice +expected_traces: +- T4(effect) +stimulus: +- event: Start +behaviors: + pssm_T3_effect: + - T3(effect) + pssm_T5_effect: + - T5(effect) + pssm_T4_effect: + - T4(effect) +statechart: + name: Choice_003 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + cond: 'False' + 'on': + - pssm_T3_effect + - event: Start + target: S1 + cond: 'False' + 'on': + - pssm_T5_effect + - event: Start + target: S1 + 'on': + - pssm_T4_effect + FS1: + final: true + S1: + transitions: + - target: FS1 diff --git a/tests/uml/pssm/cases/Choice/Choice_004.yaml b/tests/uml/pssm/cases/Choice/Choice_004.yaml new file mode 100644 index 00000000..e30b7a2e --- /dev/null +++ b/tests/uml/pssm/cases/Choice/Choice_004.yaml @@ -0,0 +1,40 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- choice +expected_traces: +- T4(effect) +stimulus: +- event: Start +- event: Data + kwargs: + value: true +behaviors: + pssm_T5_effect: + - T5(effect) + pssm_T4_effect: + - T4(effect) +statechart: + name: Choice_004 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + transitions: + - event: Data + target: S2 + cond: value == False + 'on': + - pssm_T5_effect + - event: Data + target: S2 + cond: value == True + 'on': + - pssm_T4_effect + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Choice/Choice_005.yaml b/tests/uml/pssm/cases/Choice/Choice_005.yaml new file mode 100644 index 00000000..25690407 --- /dev/null +++ b/tests/uml/pssm/cases/Choice/Choice_005.yaml @@ -0,0 +1,51 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- choice +- junction +expected_traces: +- T1.2(guard)::T1.3(guard)::T2(effect)::S1(entry)::T1.4(guard)::T1.5(guard)::S1.1(entry) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_T2_effect: + - T2(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_2_entry: + - S1.2(entry) +statechart: + name: Choice_005 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + S1: + enter: + - pssm_S1_entry + states: + S1_FinalState1: + final: true + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: S1_FinalState1 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: S1_FinalState1 + transitions: + - target: S1_1 + initial: true + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_001.yaml b/tests/uml/pssm/cases/Deferred/Deferred_001.yaml new file mode 100644 index 00000000..4e4017d1 --- /dev/null +++ b/tests/uml/pssm/cases/Deferred/Deferred_001.yaml @@ -0,0 +1,54 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- defer +expected_traces: +- S1(exit)::S2(entry)::T4(effect)::S3(entry) +stimulus: +- event: Start +- event: Continue +- event: AnotherSignal +- event: Pending +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S2_entry: + - S2(entry) + pssm_T4_effect: + - T4(effect) + pssm_T5_effect: + - T5(effect) + pssm_S3_entry: + - S3(entry) +statechart: + name: Deferred_001 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + transitions: + - event: AnotherSignal + target: S2 + S2: + enter: + - pssm_S2_entry + transitions: + - event: Continue + target: S3 + 'on': + - pssm_T4_effect + - event: Pending + target: S3 + 'on': + - pssm_T5_effect + S3: + enter: + - pssm_S3_entry + transitions: + - target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_002.yaml b/tests/uml/pssm/cases/Deferred/Deferred_002.yaml new file mode 100644 index 00000000..d31edb4d --- /dev/null +++ b/tests/uml/pssm/cases/Deferred/Deferred_002.yaml @@ -0,0 +1,64 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- defer +expected_traces: +- S1(exit)::T4(effect)::S2(entry)::T6(effect)::S3(entry) +stimulus: +- event: Start +- event: Continue +- event: AnotherSignal +- event: Continue +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) + pssm_S2_entry: + - S2(entry) + pssm_T5_effect: + - T5(effect) + pssm_T6_effect: + - T6(effect) + pssm_S3_entry: + - S3(entry) +statechart: + name: Deferred_002 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + transitions: + - event: AnotherSignal + target: S2 + 'on': + - pssm_T3_effect + - event: Continue + target: S2 + 'on': + - pssm_T4_effect + S2: + enter: + - pssm_S2_entry + transitions: + - event: Continue + target: S3 + 'on': + - pssm_T5_effect + - event: AnotherSignal + target: S3 + 'on': + - pssm_T6_effect + S3: + enter: + - pssm_S3_entry + transitions: + - target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_003.yaml b/tests/uml/pssm/cases/Deferred/Deferred_003.yaml new file mode 100644 index 00000000..bb560691 --- /dev/null +++ b/tests/uml/pssm/cases/Deferred/Deferred_003.yaml @@ -0,0 +1,70 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- defer +expected_traces: +- S1.1.1(exit)::T1.1.2(effect)::S1.1(exit)::T1.2(effect)::S1.2(exit)::T1.3(effect) +stimulus: +- event: Start +- event: Continue +- event: Continue +- event: AnotherSignal +- event: Pending +behaviors: + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_T1_1_2_effect: + - T1.1.2(effect) + pssm_S1_2_exit: + - S1.2(exit) + pssm_T1_3_effect: + - T1.3(effect) +statechart: + name: Deferred_003 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + transitions: + - event: Continue + target: S1_1_FinalState1 + 'on': + - pssm_T1_1_2_effect + S1_1_FinalState1: + final: true + transitions: + - event: Pending + target: S1_2 + 'on': + - pssm_T1_2_effect + S1_2: + exit: + - pssm_S1_2_exit + transitions: + - event: Continue + target: S1_FinalState1 + 'on': + - pssm_T1_3_effect + S1_FinalState1: + final: true + transitions: + - event: AnotherSignal + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_004-A.yaml b/tests/uml/pssm/cases/Deferred/Deferred_004-A.yaml new file mode 100644 index 00000000..15451535 --- /dev/null +++ b/tests/uml/pssm/cases/Deferred/Deferred_004-A.yaml @@ -0,0 +1,78 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- defer +expected_traces: +- S1.1(exit)::T1.2(effect)::S2.1(exit)::T2.2(effect)::S1(exit)::T4(effect) +stimulus: +- event: Start +- event: Continue +- event: Pending +- event: AnotherSignal +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S2_1_exit: + - S2.1(exit) + pssm_T2_2_effect: + - T2.2(effect) +statechart: + name: Deferred_004-A + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - event: Pending + target: Region1_FinalState1 + 'on': + - pssm_T1_2_effect + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - event: Continue + target: Region2_FinalState1 + 'on': + - pssm_T2_2_effect + Region2_FinalState1: + final: true + transitions: + - event: Continue + target: end + 'on': + - pssm_T3_effect + - event: AnotherSignal + target: end + 'on': + - pssm_T4_effect + FinalState1: + final: true + end: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Deferred/Deferred_004-B.yaml b/tests/uml/pssm/cases/Deferred/Deferred_004-B.yaml new file mode 100644 index 00000000..ab4f656c --- /dev/null +++ b/tests/uml/pssm/cases/Deferred/Deferred_004-B.yaml @@ -0,0 +1,83 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- defer +expected_traces: +- S1.1.1(exit)::T1.1.2(effect)::S1.1(exit)::S2.1(exit)::T2.2(effect)::S1(exit) +stimulus: +- event: Start +- event: AnotherSignal +- event: Continue +- event: Pending +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_T1_1_2_effect: + - T1.1.2(effect) + pssm_S2_1_exit: + - S2.1(exit) + pssm_T2_2_effect: + - T2.2(effect) + pssm_T2_3_effect: + - T2.3(effect) +statechart: + name: Deferred_004-B + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + transitions: + - event: Continue + target: S1_1_FinalState1 + 'on': + - pssm_T1_1_2_effect + S1_1_FinalState1: + final: true + transitions: + - event: done.state.S1_1 + target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - event: AnotherSignal + target: Region2_FinalState1 + 'on': + - pssm_T2_2_effect + - event: Pending + target: Region2_FinalState1 + 'on': + - pssm_T2_3_effect + Region2_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_005.yaml b/tests/uml/pssm/cases/Deferred/Deferred_005.yaml new file mode 100644 index 00000000..5d907501 --- /dev/null +++ b/tests/uml/pssm/cases/Deferred/Deferred_005.yaml @@ -0,0 +1,52 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- defer +expected_traces: +- T3(effect)::S2(entry)::T4(effect)::S2(entry)::T5(effect)::S2(entry) +stimulus: +- event: Start +- event: Continue +- event: AnotherSignal +- event: Pending +behaviors: + pssm_T3_effect: + - T3(effect) + pssm_S2_entry: + - S2(entry) + pssm_T5_effect: + - T5(effect) + pssm_T4_effect: + - T4(effect) +statechart: + name: Deferred_005 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - send: + event: Pending + transitions: + - event: Pending + target: S2 + 'on': + - pssm_T3_effect + S2: + enter: + - pssm_S2_entry + transitions: + - event: AnotherSignal + target: S2 + 'on': + - pssm_T5_effect + - event: Continue + target: S2 + 'on': + - pssm_T4_effect + - event: Pending + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_006-A.yaml b/tests/uml/pssm/cases/Deferred/Deferred_006-A.yaml new file mode 100644 index 00000000..cd1f842a --- /dev/null +++ b/tests/uml/pssm/cases/Deferred/Deferred_006-A.yaml @@ -0,0 +1,26 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- defer +- do_activity_accept +expected_traces: +- S2(doActivity-AnotherSignal) +stimulus: +- event: Start +- event: AnotherSignal +behaviors: + on_invoke_S2: + - accept: AnotherSignal +statechart: + name: Deferred_006-A + states: + S2: + transitions: + - event: done.invoke.S2 + target: FinalState1 + FinalState1: + final: true + S1: + initial: true + transitions: + - event: Start + target: S2 diff --git a/tests/uml/pssm/cases/Deferred/Deferred_006-B.yaml b/tests/uml/pssm/cases/Deferred/Deferred_006-B.yaml new file mode 100644 index 00000000..e1f411cd --- /dev/null +++ b/tests/uml/pssm/cases/Deferred/Deferred_006-B.yaml @@ -0,0 +1,30 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- defer +- do_activity_accept +expected_traces: +- S2(doActivityPartI)::S2(doActivityPartII) +- '' +stimulus: +- event: Start +- event: Pending +- event: AnotherSignal +behaviors: + on_invoke_S2: + - accept: AnotherSignal +statechart: + name: Deferred_006-B + states: + S2: + transitions: + - event: done.invoke.S2 + target: FinalState1 + - event: AnotherSignal + target: FinalState1 + FinalState1: + final: true + S1: + initial: true + transitions: + - event: Start + target: S2 diff --git a/tests/uml/pssm/cases/Deferred/Deferred_006-C.yaml b/tests/uml/pssm/cases/Deferred/Deferred_006-C.yaml new file mode 100644 index 00000000..40d12c84 --- /dev/null +++ b/tests/uml/pssm/cases/Deferred/Deferred_006-C.yaml @@ -0,0 +1,50 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- defer +- do_activity_accept +expected_traces: +- S1.2(doActivity)::S1.1(doActivity) +- S1.1(doActivity)::S1.2(doActivity) +stimulus: +- event: Start +- event: Continue +- event: Continue +behaviors: + on_invoke_S1_1: + - accept: Continue + on_invoke_S1_2: + - accept: Continue +statechart: + name: Deferred_006-C + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + transitions: + - event: done.invoke.S1_1 + target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S1_2: + initial: true + transitions: + - event: done.invoke.S1_2 + target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_007.yaml b/tests/uml/pssm/cases/Deferred/Deferred_007.yaml new file mode 100644 index 00000000..00e6b81f --- /dev/null +++ b/tests/uml/pssm/cases/Deferred/Deferred_007.yaml @@ -0,0 +1,51 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- call_event +- defer +expected_traces: +- S1(exit)::T3(effect)::T4(effect)[in=true][out=false]::[out=false] +stimulus: +- event: Start +- call: op + kwargs: + p1: true + trace_result: '[out={result}]' +- event: Continue +behaviors: + pssm_S1_exit: + - S1(exit) + on_invoke_S1: + - send: + event: Continue + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect)[in={p1}] +statechart: + name: Deferred_007 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + transitions: + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + S2: + transitions: + - event: op + target: S3 + 'on': + - pssm_T4_effect + S3: + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Entering/Entering_004.yaml b/tests/uml/pssm/cases/Entering/Entering_004.yaml new file mode 100644 index 00000000..e9dadfa5 --- /dev/null +++ b/tests/uml/pssm/cases/Entering/Entering_004.yaml @@ -0,0 +1,39 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::S1(exit) +stimulus: +- event: Start +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) +statechart: + name: Entering_004 + states: + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true + waiting: + initial: true + transitions: + - event: Start + target: S1 diff --git a/tests/uml/pssm/cases/Entering/Entering_005.yaml b/tests/uml/pssm/cases/Entering/Entering_005.yaml new file mode 100644 index 00000000..cd2c1f3d --- /dev/null +++ b/tests/uml/pssm/cases/Entering/Entering_005.yaml @@ -0,0 +1,42 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T2(effect)::S1(entry)::S1.1(entry)::S1.1.1(entry) +stimulus: +- event: Start +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_1_entry: + - S1.1.1(entry) + pssm_T2_effect: + - T2(effect) +statechart: + name: Entering_005 + states: + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + states: + S1_1_1: + initial: true + enter: + - pssm_S1_1_1_entry + transitions: + - target: FS1_1_1 + FS1_1_1: + final: true + waiting: + initial: true + transitions: + - event: Start + target: S1_1_1 + 'on': + - pssm_T2_effect diff --git a/tests/uml/pssm/cases/Entering/Entering_009.yaml b/tests/uml/pssm/cases/Entering/Entering_009.yaml new file mode 100644 index 00000000..ed832553 --- /dev/null +++ b/tests/uml/pssm/cases/Entering/Entering_009.yaml @@ -0,0 +1,38 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +expected_traces: +- T2(effect)::S1(entry)::T1.1(effect)::S1.1(entry) +stimulus: +- event: Start +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T2_effect: + - T2(effect) + pssm_T1_1_effect: + - T1.1(effect) +statechart: + name: Entering_009 + states: + S1: + enter: + - pssm_S1_entry + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: FS1 + FS1: + final: true + waiting: + initial: true + transitions: + - event: Start + target: S1_1 + 'on': + - pssm_T2_effect + - pssm_T1_1_effect diff --git a/tests/uml/pssm/cases/Entering/Entering_010.yaml b/tests/uml/pssm/cases/Entering/Entering_010.yaml new file mode 100644 index 00000000..9a913d9d --- /dev/null +++ b/tests/uml/pssm/cases/Entering/Entering_010.yaml @@ -0,0 +1,65 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::S1.1(entry)::T2.1(effect)::S2.1(entry) +- S1(entry)::T2.1(effect)::S2.1(entry)::S1.1(entry) +- S1(entry)::T2.1(effect)::S1.1(entry)::S2.1(entry) +stimulus: +- event: Start +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_1_effect: + - T1.1(effect) + pssm_S2_1_entry: + - S2.1(entry) + pssm_T2_1_effect: + - T2.1(effect) +statechart: + name: Entering_010 + states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 + S1: + parallel: true + enter: + - pssm_S1_entry + states: + S1_Region1: + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + S1_Region2: + states: + S2_1: + enter: + - pssm_S2_1_entry + transitions: + - target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - target: S2_1 + initial: true + 'on': + - pssm_T2_1_effect + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Entering/Entering_011.yaml b/tests/uml/pssm/cases/Entering/Entering_011.yaml new file mode 100644 index 00000000..9d9c11e9 --- /dev/null +++ b/tests/uml/pssm/cases/Entering/Entering_011.yaml @@ -0,0 +1,69 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::T1.1(effect)::T2.1(effect)::S1.1(entry)::S1.2(entry) +- S1(entry)::T2.1(effect)::S1.2(entry)::T1.1(effect)::S1.1(entry) +- S1(entry)::T1.1(effect)::S1.1(entry)::T2.1(effect)::S1.2(entry) +- S1(entry)::T2.1(effect)::T1.1(effect)::S1.1(entry)::S1.2(entry) +- S1(entry)::T1.1(effect)::T2.1(effect)::S1.2(entry)::S1.1(entry) +- S1(entry)::T2.1(effect)::T1.1(effect)::S1.2(entry)::S1.1(entry) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_2_entry: + - S1.2(entry) + pssm_T2_1_effect: + - T2.1(effect) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_1_effect: + - T1.1(effect) +statechart: + name: Entering_011 + states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + enter: + - pssm_S1_entry + states: + S1_Region1: + states: + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + transitions: + - target: S1_2 + initial: true + 'on': + - pssm_T2_1_effect + S1_Region2: + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Entry/Entry_002-A.yaml b/tests/uml/pssm/cases/Entry/Entry_002-A.yaml new file mode 100644 index 00000000..576267f5 --- /dev/null +++ b/tests/uml/pssm/cases/Entry/Entry_002-A.yaml @@ -0,0 +1,49 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +expected_traces: +- S1.1(entry)::S2.1(entry) +- S2.1(entry)::S1.1(entry) +stimulus: +- event: Start +behaviors: + pssm_S1_1_entry: + - S1.1(entry) + pssm_S2_1_entry: + - S2.1(entry) +statechart: + name: Entry_002-A + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: FSR1 + FSR1: + final: true + S1_Region2: + states: + S2_1: + initial: true + enter: + - pssm_S2_1_entry + transitions: + - target: FSR2 + FSR2: + final: true + transitions: + - event: done.state.S1 + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Entry/Entry_002-B.yaml b/tests/uml/pssm/cases/Entry/Entry_002-B.yaml new file mode 100644 index 00000000..2ea4e6b0 --- /dev/null +++ b/tests/uml/pssm/cases/Entry/Entry_002-B.yaml @@ -0,0 +1,56 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +expected_traces: +- S2.1(entry)::S1.2(entry) +- S1.2(entry)::S2.1(entry) +stimulus: +- event: Start +behaviors: + pssm_S2_1_entry: + - S2.1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_2_entry: + - S1.2(entry) +statechart: + name: Entry_002-B + states: + wait: + initial: true + transitions: + - event: Start + target: S1_2 + S1: + parallel: true + states: + S1_Region1: + states: + S2_1: + initial: true + enter: + - pssm_S2_1_entry + transitions: + - target: FSR2 + FSR2: + final: true + S1_Region2: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: FSR1 + FSR1: + final: true + transitions: + - event: done.state.S1 + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Entry/Entry_002-C.yaml b/tests/uml/pssm/cases/Entry/Entry_002-C.yaml new file mode 100644 index 00000000..f077b41b --- /dev/null +++ b/tests/uml/pssm/cases/Entry/Entry_002-C.yaml @@ -0,0 +1,40 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +expected_traces: +- T2(effect)::S1(entry)::T1.1(effect) +stimulus: +- event: Start +behaviors: + pssm_T2_effect: + - T2(effect) + pssm_T1_1_effect: + - T1.1(effect) + pssm_S1_entry: + - S1(entry) +statechart: + name: Entry_002-C + states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 + 'on': + - pssm_T2_effect + - pssm_T1_1_effect + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + transitions: + - target: S1_FS1 + S1_FS1: + final: true + transitions: + - event: done.state.S1 + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Entry/Entry_002-D.yaml b/tests/uml/pssm/cases/Entry/Entry_002-D.yaml new file mode 100644 index 00000000..3a98f259 --- /dev/null +++ b/tests/uml/pssm/cases/Entry/Entry_002-D.yaml @@ -0,0 +1,46 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +expected_traces: +- T2(effect)::S1(entry)::T1.1(effect)::T1.2(effect) +stimulus: +- event: Start +behaviors: + pssm_T2_effect: + - T2(effect) + pssm_S1_entry: + - S1(entry) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_1_effect: + - T1.1(effect) +statechart: + name: Entry_002-D + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + S1: + enter: + - pssm_S1_entry + states: + S1_1: + transitions: + - target: S1_FS1 + 'on': + - pssm_T1_2_effect + S1_FS1: + final: true + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + - event: done.state.S1 + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Entry/Entry_002-E.yaml b/tests/uml/pssm/cases/Entry/Entry_002-E.yaml new file mode 100644 index 00000000..7cd7a396 --- /dev/null +++ b/tests/uml/pssm/cases/Entry/Entry_002-E.yaml @@ -0,0 +1,67 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +expected_traces: +- S2(entry)::S2(exit) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S2_1_entry: + - S2.1(effect) + pssm_S2_entry: + - S2(entry) + pssm_S2_exit: + - S2(exit) +statechart: + name: Entry_002-E + states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 S2_1 + cond: + - 'True' + - 'False' + - event: Continue + target: S2 + S1: + parallel: true + enter: + - pssm_S1_entry + states: + S1_Region1: + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: FSR1 + FSR1: + final: true + S1_Region2: + states: + S2_1: + enter: + - pssm_S2_1_entry + transitions: + - target: FSR2 + FSR2: + final: true + transitions: + - event: done.state.S1 + target: FS1 + FS1: + final: true + S2: + enter: + - pssm_S2_entry + exit: + - pssm_S2_exit + transitions: + - target: FS1 diff --git a/tests/uml/pssm/cases/Entry/Entry_002-F.yaml b/tests/uml/pssm/cases/Entry/Entry_002-F.yaml new file mode 100644 index 00000000..477ec6cf --- /dev/null +++ b/tests/uml/pssm/cases/Entry/Entry_002-F.yaml @@ -0,0 +1,60 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +expected_traces: +- S1(entry)[in=8]::S1.1(entry)[in=8] +stimulus: +- event: Start +- event: IntegerData + kwargs: + value: 8 +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry)[in={value}] + pssm_S1_1_entry: + - S1.1(entry)[in={value}] + pssm_S1_2_entry: + - S1.2(entry)[in={value}] + pssm_T4_effect: + - T4(effect) +statechart: + name: Entry_002-F + states: + S1: + enter: + - pssm_S1_entry + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: S1_FinalState1 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + wait: + initial: true + transitions: + - event: IntegerData + target: S1_1 + cond: value < 10 + - event: IntegerData + target: S1_2 + cond: value < 5 + - event: Continue + target: S2 + 'on': + - pssm_T4_effect + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Event/Event_001.yaml b/tests/uml/pssm/cases/Event/Event_001.yaml new file mode 100644 index 00000000..393216a0 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_001.yaml @@ -0,0 +1,21 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- wait(exit) +stimulus: +- event: Start +behaviors: + pssm_wait_exit: + - wait(exit) +statechart: + name: Event_001 + states: + wait: + initial: true + exit: + - pssm_wait_exit + transitions: + - event: Start + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_002.yaml b/tests/uml/pssm/cases/Event/Event_002.yaml new file mode 100644 index 00000000..5e420f04 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_002.yaml @@ -0,0 +1,41 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::S1.1(entry)::S1(exit) +stimulus: +- event: Start +- event: AnotherSignal +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) +statechart: + name: Event_002 + states: + Waiting: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - event: Continue + target: S2_2 + S2_2: {} + transitions: + - event: AnotherSignal + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_008.yaml b/tests/uml/pssm/cases/Event/Event_008.yaml new file mode 100644 index 00000000..e21a5a88 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_008.yaml @@ -0,0 +1,34 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T2(effect)::T3(effect) +stimulus: +- event: Start +- event: AnotherSignal +- event: Continue +behaviors: + pssm_T2_effect: + - T2(effect) + pssm_T3_effect: + - T3(effect) +statechart: + name: Event_008 + states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + S1: + transitions: + - target: S2 + 'on': + - pssm_T3_effect + S2: + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_009.yaml b/tests/uml/pssm/cases/Event/Event_009.yaml new file mode 100644 index 00000000..6bc429b5 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_009.yaml @@ -0,0 +1,61 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T1.2(effect)::T2.2(effect) +- T2.2(effect)::T1.2(effect) +stimulus: +- event: Start +- event: Continue +- event: Pending +behaviors: + pssm_T3_effect: + - T3(effect) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T2_2_effect: + - T2.2(effect) +statechart: + name: Event_009 + states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + transitions: + - event: Continue + target: Region1_FinalState1 + 'on': + - pssm_T1_2_effect + Region1_FinalState1: + final: true + S1_Region2: + states: + S1_2: + initial: true + transitions: + - event: Continue + target: Region2_FinalState1 + 'on': + - pssm_T2_2_effect + Region2_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + - event: Pending + target: invalid + 'on': + - pssm_T3_effect + FinalState1: + final: true + invalid: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Event/Event_010.yaml b/tests/uml/pssm/cases/Event/Event_010.yaml new file mode 100644 index 00000000..d40efc07 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_010.yaml @@ -0,0 +1,81 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T2(effect)::S1(entry)::S1.1(entry)::T1.3(effect)::S1.3(entry) +- T2(effect)::S1(entry)::S1.1(entry)::T1.2(effect)::S1.2(entry) +- T3(effect)::S2(entry) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_T2_effect: + - T2(effect) + pssm_T3_effect: + - T3(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_3_effect: + - T1.3(effect) + pssm_S1_2_entry: + - S1.2(entry) + pssm_S1_3_entry: + - S1.3(entry) + pssm_S2_entry: + - S2(entry) +statechart: + name: Event_010 + states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + - event: Start + target: S2 + 'on': + - pssm_T3_effect + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - event: Continue + target: S1_2 + 'on': + - pssm_T1_2_effect + - event: Continue + target: S1_3 + 'on': + - pssm_T1_3_effect + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: S1_FinalState1 + S1_3: + enter: + - pssm_S1_3_entry + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + S2: + enter: + - pssm_S2_entry + transitions: + - target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_015.yaml b/tests/uml/pssm/cases/Event/Event_015.yaml new file mode 100644 index 00000000..a50dd176 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_015.yaml @@ -0,0 +1,38 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T1.3(effect) +- T1.2(effect) +stimulus: +- event: Start +behaviors: + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_3_effect: + - T1.3(effect) +statechart: + name: Event_015 + states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + S1: + states: + S1_1: + initial: true + transitions: + - target: FS1_2 + 'on': + - pssm_T1_2_effect + - target: FS1_2 + 'on': + - pssm_T1_3_effect + FS1_2: + final: true + transitions: + - event: done.state.S1 + target: FSR1 + FSR1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_016-A.yaml b/tests/uml/pssm/cases/Event/Event_016-A.yaml new file mode 100644 index 00000000..398eb164 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_016-A.yaml @@ -0,0 +1,42 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T1.2(effect)::T3(effect) +stimulus: +- event: Start +- event: Continue +- event: Continue +behaviors: + pssm_T3_effect: + - T3(effect) + pssm_T1_2_effect: + - T1.2(effect) +statechart: + name: Event_016-A + states: + S1: + states: + S1_1: + initial: true + transitions: + - event: Continue + target: FS1_1 + 'on': + - pssm_T1_2_effect + FS1_1: + final: true + transitions: + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + S2: + transitions: + - target: FS1 + FS1: + final: true + wait: + initial: true + transitions: + - event: Start + target: S1 diff --git a/tests/uml/pssm/cases/Event/Event_016-B.yaml b/tests/uml/pssm/cases/Event/Event_016-B.yaml new file mode 100644 index 00000000..73b2cda2 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_016-B.yaml @@ -0,0 +1,144 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T2.1.2(effect)::T2.2.2(effect)::T1.3(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) +- T2.2.2(effect)::T2.1.2(effect)::T1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) +- T2.2.2(effect)::T2.1.2(effect)::T1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) +- T2.2.2(effect)::T2.1.2(effect)::T1.3(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) +- T2.1.2(effect)::T1.3(effect)::T2.2.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) +- T1.3(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) +- T2.1.2(effect)::T2.2.2(effect)::T1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) +- T2.2.2(effect)::T1.3(effect)::T2.1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) +- T2.1.2(effect)::T1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) +- T2.2.2(effect)::T1.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) +- T2.2.2(effect)::T2.1.2(effect)::T1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) +- T2.1.2(effect)::T2.2.2(effect)::T1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) +- T1.3(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) +- T1.2(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) +- T2.1.2(effect)::T2.2.2(effect)::T1.3(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) +- T1.2(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) +- T1.2(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) +- T2.2.2(effect)::T2.1.2(effect)::T1.3(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) +- T1.2(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) +- T1.2(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) +- T2.2.2(effect)::T1.3(effect)::T2.1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) +- T1.2(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) +- T2.1.2(effect)::T1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) +- T1.3(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) +- T1.3(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) +- T2.1.2(effect)::T1.3(effect)::T2.2.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) +- T2.2.2(effect)::T2.1.2(effect)::T1.3(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) +- T2.2.2(effect)::T1.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) +- T2.2.2(effect)::T1.3(effect)::T2.1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) +- T2.1.2(effect)::T1.3(effect)::T2.2.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) +- T2.1.2(effect)::T2.2.2(effect)::T1.3(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) +- T1.3(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) +- T2.1.2(effect)::T1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) +- T2.1.2(effect)::T2.2.2(effect)::T1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) +- T1.3(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) +- T2.2.2(effect)::T1.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) +stimulus: +- event: Start +- event: Continue +- event: Continue +- event: Continue +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_3_effect: + - T1.3(effect) + pssm_S1_2_exit: + - S1.2(exit) + pssm_S2_1_exit: + - S2.1(exit) + pssm_T2_2_effect: + - T2.2(effect) + pssm_T2_3_effect: + - T2.3(effect) + pssm_T2_4_effect: + - T2.4(effect) + pssm_T2_1_2_effect: + - T2.1.2(effect) + pssm_T2_2_2_effect: + - T2.2.2(effect) +statechart: + name: Event_016-B + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + states: {} + transitions: + - event: Continue + target: S1_2 + 'on': + - pssm_T1_2_effect + - event: Continue + target: S1_2 + 'on': + - pssm_T1_3_effect + S1_2: + exit: + - pssm_S1_2_exit + S1_Region2: + states: + S2_1: + initial: true + parallel: true + exit: + - pssm_S2_1_exit + states: + S2_1_Region1: + states: + S2_1_1: + initial: true + transitions: + - event: Continue + target: Region1_FinalState1 + 'on': + - pssm_T2_1_2_effect + Region1_FinalState1: + final: true + S2_1_Region2: + states: + S2_2_1: + initial: true + transitions: + - event: Continue + target: Region2_FinalState1 + 'on': + - pssm_T2_2_2_effect + Region2_FinalState1: + final: true + transitions: + - event: Continue + target: S2_2 + 'on': + - pssm_T2_2_effect + - event: Continue + target: S2_2 + 'on': + - pssm_T2_3_effect + - event: Continue + target: S2_2 + 'on': + - pssm_T2_4_effect + S2_2: {} + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_017-A.yaml b/tests/uml/pssm/cases/Event/Event_017-A.yaml new file mode 100644 index 00000000..84ca0a7a --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_017-A.yaml @@ -0,0 +1,39 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T3(effect) +stimulus: +- event: Start +- event: Data + kwargs: + value: true +behaviors: + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) +statechart: + name: Event_017-A + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + transitions: + - event: Data + target: S2 + cond: value == True + 'on': + - pssm_T3_effect + - event: Data + target: S2 + cond: value == False + 'on': + - pssm_T4_effect + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Event/Event_017-B.yaml b/tests/uml/pssm/cases/Event/Event_017-B.yaml new file mode 100644 index 00000000..1cddaa5d --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_017-B.yaml @@ -0,0 +1,55 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(effect)[in=true]::S1.1(entry)[in=true]::S1.1(doActivity)[in=true]::S1.1(exit)[in=false]::T1.2(effect)[in=false] +- S1(effect)[in=true]::S1.1(entry)[in=true]::S1.1(exit)[in=false]::T1.2(effect)[in=false] +stimulus: +- event: Start +- event: Data + kwargs: + value: true +- event: Data + kwargs: + value: false +- event: Continue +behaviors: + pssm_S1_entry: + - S1(effect)[in={value}] + pssm_S1_1_entry: + - S1.1(entry)[in={value}] + pssm_S1_1_exit: + - S1.1(exit)[in={value}] + on_invoke_S1_1: + - S1.1(doActivity)[in={value}] + pssm_T1_2_effect: + - T1.2(effect)[in={value}] +statechart: + name: Event_017-B + states: + wait: + initial: true + transitions: + - event: Data + target: S1 + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - event: Data + target: S1_FinalState1 + 'on': + - pssm_T1_2_effect + S1_FinalState1: + final: true + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_018.yaml b/tests/uml/pssm/cases/Event/Event_018.yaml new file mode 100644 index 00000000..5e1aaff0 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_018.yaml @@ -0,0 +1,60 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1.1.1(exit)::S1.1(exit)::S1(exit)::T3(effect)::S2(entry)::S1.2(entry) +stimulus: +- event: Start +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_T3_effect: + - T3(effect) + pssm_S2_entry: + - S2(entry) + pssm_S1_2_entry: + - S1.2(entry) +statechart: + name: Event_018 + states: + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + transitions: + - target: S1_2 + 'on': + - pssm_T3_effect + wait: + initial: true + transitions: + - event: Start + target: S1 + S2: + enter: + - pssm_S2_entry + states: + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: FS1_2 + FS1_2: + final: true + transitions: + - event: done.state.S2 + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_019-A.yaml b/tests/uml/pssm/cases/Event/Event_019-A.yaml new file mode 100644 index 00000000..e4c10989 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_019-A.yaml @@ -0,0 +1,36 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(exit)::Call(op)::End::S2(entry) +stimulus: +- event: Start +- call: op +- trace: End +- event: Continue +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T2_effect: + - Call(op) + pssm_S2_exit: + - S2(entry) +statechart: + name: Event_019-A + states: + S1: + initial: true + exit: + - pssm_S1_exit + transitions: + - event: op + target: S2 + 'on': + - pssm_T2_effect + S2: + exit: + - pssm_S2_exit + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_019-B.yaml b/tests/uml/pssm/cases/Event/Event_019-B.yaml new file mode 100644 index 00000000..22f3db20 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_019-B.yaml @@ -0,0 +1,36 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(exit)[in=42][in=input]::T2(effect)[in=42][in=input]::S2(entry)[in=42][in=input] +stimulus: +- event: Start +- call: op + kwargs: + p1: 42 + p2: input +behaviors: + pssm_S1_exit: + - S1(exit)[in={p1}][in={p2}] + pssm_T2_effect: + - T2(effect)[in={p1}][in={p2}] + pssm_S2_entry: + - S2(entry)[in={p1}][in={p2}] +statechart: + name: Event_019-B + states: + S1: + initial: true + exit: + - pssm_S1_exit + transitions: + - event: op + target: S2 + 'on': + - pssm_T2_effect + S2: + enter: + - pssm_S2_entry + transitions: + - target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_019-C.yaml b/tests/uml/pssm/cases/Event/Event_019-C.yaml new file mode 100644 index 00000000..960a72f7 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_019-C.yaml @@ -0,0 +1,64 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)[in=42][in=input]::S1.1(entry)[in=42][in=input]::S1.1.1(entry)[in=42][in=input]::S1.1.1(exit)[in=true]::T1.1.2(effect)[in=true] +stimulus: +- event: Start +- call: op1 + kwargs: + p1: 42 + p2: input +- call: op2 + kwargs: + p1: true +behaviors: + pssm_S1_entry: + - S1(entry)[in={p1}][in={p2}] + pssm_S1_1_entry: + - S1.1(entry)[in={p1}][in={p2}] + pssm_S1_1_1_entry: + - S1.1.1(entry)[in={p1}][in={p2}] + pssm_S1_1_1_exit: + - S1.1.1(exit)[in={p1}] + pssm_T1_1_2_effect: + - T1.1.2(effect)[in={p1}] +statechart: + name: Event_019-C + states: + wait: + initial: true + transitions: + - event: op1 + target: S1 + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + states: + S1_1_1: + initial: true + enter: + - pssm_S1_1_1_entry + exit: + - pssm_S1_1_1_exit + transitions: + - event: op2 + target: S1_1_FinalState1 + 'on': + - pssm_T1_1_2_effect + S1_1_FinalState1: + final: true + transitions: + - event: done.state.S1_1 + target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_019-D.yaml b/tests/uml/pssm/cases/Event/Event_019-D.yaml new file mode 100644 index 00000000..ebc78a77 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_019-D.yaml @@ -0,0 +1,37 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- call_event +expected_traces: +- S1(entry)::T2(effect)[out=output]::[out=output]::S2(exit) +stimulus: +- event: Start +- call: op + trace_result: '[out={result}]' +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_T2_effect: + - T2(effect)[out=output] + pssm_S2_exit: + - S2(exit) +statechart: + name: Event_019-D + states: + S1: + initial: true + enter: + - pssm_S1_entry + transitions: + - event: op + target: S2 + 'on': + - pssm_T2_effect + S2: + exit: + - pssm_S2_exit + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_019-E.yaml b/tests/uml/pssm/cases/Event/Event_019-E.yaml new file mode 100644 index 00000000..c66e1aa9 --- /dev/null +++ b/tests/uml/pssm/cases/Event/Event_019-E.yaml @@ -0,0 +1,63 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- call_event +expected_traces: +- S2.1.1(entry)[in=true][in=true][out=false][out=false]::S1.1(entry)[in=true][in=true][out=true][out=true]::[out=true][out=true] +- S1.1(entry)[in=true][in=true][out=true][out=true]::S2.1.1(entry)[in=true][in=true][out=false][out=false]::[out=false][out=false] +stimulus: +- event: Start +- call: or + kwargs: + left: true + right: true + trace_result: '[out={result}]' +- event: Continue +behaviors: + pssm_S1_1_entry: + - S1.1(entry)[in={left}][in={right}] + pssm_S2_1_1_entry: + - S2.1.1(entry)[in={left}][in={right}] +statechart: + name: Event_019-E + states: + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + states: + S2_1_1: + initial: true + enter: + - pssm_S2_1_1_entry + transitions: + - target: S2_1_FinalState1 + S2_1_FinalState1: + final: true + transitions: + - event: done.state.S2_1 + target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - event: Continue + target: FinalState1 + wait: + initial: true + transitions: + - event: or + target: S1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Exit/Exit_001.yaml b/tests/uml/pssm/cases/Exit/Exit_001.yaml new file mode 100644 index 00000000..aa6f6240 --- /dev/null +++ b/tests/uml/pssm/cases/Exit/Exit_001.yaml @@ -0,0 +1,49 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- exit_point +expected_traces: +- S1.1.1(exit)::S1.1(exit)::T1.2(effect)::S1(exit)::T3(effect) +stimulus: +- event: Start +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T3_effect: + - T3(effect) +statechart: + name: Exit_001 + states: + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + transitions: + - target: S2 + 'on': + - pssm_T1_2_effect + - pssm_T3_effect + S2: + transitions: + - target: FinalState1 + FinalState1: + final: true + wait: + initial: true + transitions: + - event: Start + target: S1 diff --git a/tests/uml/pssm/cases/Exit/Exit_002.yaml b/tests/uml/pssm/cases/Exit/Exit_002.yaml new file mode 100644 index 00000000..db4da313 --- /dev/null +++ b/tests/uml/pssm/cases/Exit/Exit_002.yaml @@ -0,0 +1,42 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- exit_point +expected_traces: +- T1.2(effect)::T2.2(effect) +- T2.2(effect)::T1.2(effect) +stimulus: +- event: Start +behaviors: + pssm_T1_2_effect: + - T1.2(effect) + pssm_T2_2_effect: + - T2.2(effect) +statechart: + name: Exit_002 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + transitions: + - target: FS1 + 'on': + - pssm_T1_2_effect + S1_Region2: + states: + S2_1: + initial: true + transitions: + - target: FS1 + 'on': + - pssm_T2_2_effect + FS1: + final: true diff --git a/tests/uml/pssm/cases/Exit/Exit_003.yaml b/tests/uml/pssm/cases/Exit/Exit_003.yaml new file mode 100644 index 00000000..04db1c8e --- /dev/null +++ b/tests/uml/pssm/cases/Exit/Exit_003.yaml @@ -0,0 +1,54 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- exit_point +expected_traces: +- T1.2(effect)::S1(exit)::T5(effect) +- T1.2(effect)::S1(exit)::T3(effect) +stimulus: +- event: Start +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) + pssm_T5_effect: + - T5(effect) +statechart: + name: Exit_003 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + transitions: + - target: S3 + cond: 'True' + 'on': + - pssm_T1_2_effect + - pssm_T3_effect + - target: S3 + cond: 'False' + 'on': + - pssm_T1_2_effect + - pssm_T4_effect + - target: S3 + cond: 'True' + 'on': + - pssm_T1_2_effect + - pssm_T5_effect + FS1: + final: true + S3: + transitions: + - target: FS1 diff --git a/tests/uml/pssm/cases/Exiting/Exiting_001.yaml b/tests/uml/pssm/cases/Exiting/Exiting_001.yaml new file mode 100644 index 00000000..542364e0 --- /dev/null +++ b/tests/uml/pssm/cases/Exiting/Exiting_001.yaml @@ -0,0 +1,53 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S2.1(exit)::S1.1.1(exit)::S1.1(exit)::S1(exit) +- S1.1.1(exit)::S2.1(exit)::S1.1(exit)::S1(exit) +- S1.1.1(exit)::S1.1(exit)::S2.1(exit)::S1(exit) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_S2_1_exit: + - S2.1(exit) +statechart: + name: Exiting_001 + states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + S1_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - event: Continue + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Exiting/Exiting_002.yaml b/tests/uml/pssm/cases/Exiting/Exiting_002.yaml new file mode 100644 index 00000000..cea57d32 --- /dev/null +++ b/tests/uml/pssm/cases/Exiting/Exiting_002.yaml @@ -0,0 +1,37 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- do_activity_accept +expected_traces: +- S1(doActivityPartI)::S1(exit) +stimulus: +- event: Start +- event: Continue +- event: Continue +behaviors: + pssm_S1_exit: + - S1(exit) + on_invoke_S1: + - S1(doActivityPartI) + - accept: AnotherSignal +statechart: + name: Exiting_002 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - send: + event: AnotherSignal + - pssm_S1_exit + transitions: + - event: Continue + target: end + FinalState1: + final: true + end: + transitions: + - event: Continue + target: FinalState1 diff --git a/tests/uml/pssm/cases/Exiting/Exiting_003.yaml b/tests/uml/pssm/cases/Exiting/Exiting_003.yaml new file mode 100644 index 00000000..0d407d1b --- /dev/null +++ b/tests/uml/pssm/cases/Exiting/Exiting_003.yaml @@ -0,0 +1,62 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1.1.1(exit)::S1.2.1(exit)::S1.1(exit)::S1(exit) +- S1.2.1(exit)::S1.1.1(exit)::S1.1(exit)::S1(exit) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_S1_2_1_exit: + - S1.2.1(exit) +statechart: + name: Exiting_003 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + parallel: true + exit: + - pssm_S1_1_exit + states: + S1_1_Region1: + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + transitions: + - event: Pending + target: FSR1 + FSR1: + final: true + S1_1_Region2: + states: + S1_2_1: + initial: true + exit: + - pssm_S1_2_1_exit + transitions: + - event: Pending + target: FSR2 + FSR2: + final: true + transitions: + - event: Continue + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Exiting/Exiting_004.yaml b/tests/uml/pssm/cases/Exiting/Exiting_004.yaml new file mode 100644 index 00000000..8ba9f597 --- /dev/null +++ b/tests/uml/pssm/cases/Exiting/Exiting_004.yaml @@ -0,0 +1,36 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- exit_point +expected_traces: +- S1.1(exit)::T1.2(effect)::S1(exit) +stimulus: +- event: Start +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) +statechart: + name: Exiting_004 + states: + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - target: FS1 + 'on': + - pssm_T1_2_effect + FS1: + final: true + waiting: + initial: true + transitions: + - event: Start + target: S1 diff --git a/tests/uml/pssm/cases/Exiting/Exiting_005.yaml b/tests/uml/pssm/cases/Exiting/Exiting_005.yaml new file mode 100644 index 00000000..74703ea7 --- /dev/null +++ b/tests/uml/pssm/cases/Exiting/Exiting_005.yaml @@ -0,0 +1,57 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1.1(exit)::S2.1(exit)::S1(exit) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S2_1_exit: + - S2.1(exit) + pssm_T2_2_effect: + - T1.2(effect) +statechart: + name: Exiting_005 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - target: FSR1 + FSR1: + final: true + S1_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - event: Pending + target: FSR2 + 'on': + - pssm_T2_2_effect + FSR2: + final: true + transitions: + - event: Continue + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Final/Final_001.yaml b/tests/uml/pssm/cases/Final/Final_001.yaml new file mode 100644 index 00000000..47de43a8 --- /dev/null +++ b/tests/uml/pssm/cases/Final/Final_001.yaml @@ -0,0 +1,65 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1.1.1(exit)::T1.1.2(effect)::S1.1(exit)::T1.2(effect)::S2.1(exit) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_T1_1_2_effect: + - T1.1.2(effect) + pssm_S2_1_exit: + - S2.1(exit) +statechart: + name: Final_001 + states: + root: + initial: true + parallel: true + states: + root_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + transitions: + - target: S1_1_FinalState1 + 'on': + - pssm_T1_1_2_effect + S1_1_FinalState1: + final: true + transitions: + - event: done.state.S1_1 + target: Region1_FinalState1 + 'on': + - pssm_T1_2_effect + Region1_FinalState1: + final: true + root_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - event: Continue + target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - event: done.state.root + target: root_done + root_done: + final: true diff --git a/tests/uml/pssm/cases/Fork/Fork_001.yaml b/tests/uml/pssm/cases/Fork/Fork_001.yaml new file mode 100644 index 00000000..e640d98e --- /dev/null +++ b/tests/uml/pssm/cases/Fork/Fork_001.yaml @@ -0,0 +1,164 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- exit_point +- fork +expected_traces: +- T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) +- T3(effect)::S1(entry)::T4(effect)::S1.1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry) +- T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::T3(effect)::S1.3(entry)::S1.1(entry) +- T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::T3(effect)::S1.2(entry)::S1.1(entry) +- T3(effect)::S1(entry)::S1.1(entry)::T4(effect)::T3.1(effect)::S1.3(entry)::S1.2(entry) +- T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry)::T3(effect)::S1.1(entry) +- T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) +- T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::T3(effect)::S1.3(entry)::S1.1(entry) +- T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) +- T4(effect)::S1(entry)::T3(effect)::S1.2(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry) +- T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::T3(effect)::S1.1(entry)::S1.2(entry) +- T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::T3(effect)::S1.1(entry)::S1.3(entry) +- T4(effect)::T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry) +- T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) +- T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) +- T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) +- T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) +- T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) +- T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) +- T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) +- T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::T4(effect)::S1.3(entry)::S1.2(entry) +- T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry)::T4(effect)::S1.2(entry) +- T3(effect)::T4(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry) +- T4(effect)::T3(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry) +- T3(effect)::S1(entry)::T4(effect)::S1.2(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry) +- T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) +- T3(effect)::S1(entry)::T4(effect)::S1.2(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry) +- T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::T4(effect)::S1.1(entry)::S1.2(entry) +- T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) +- T3(effect)::T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry) +- T4(effect)::S1(entry)::T3(effect)::S1.1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry) +- T4(effect)::T3(effect)::S1(entry)::S1.2(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry) +- T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) +- T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) +- T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) +- T4(effect)::S1(entry)::S1.2(entry)::T3(effect)::T3.1(effect)::S1.3(entry)::S1.1(entry) +- T3(effect)::S1(entry)::T4(effect)::S1.1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry) +- T4(effect)::S1(entry)::T3(effect)::S1.1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry) +- T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::T4(effect)::S1.2(entry)::S1.1(entry) +- T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) +- T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry)::T4(effect)::S1.2(entry) +- T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) +- T4(effect)::T3(effect)::S1(entry)::S1.1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry) +- T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry)::T3(effect)::S1.1(entry) +- T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::T4(effect)::S1.2(entry)::S1.3(entry) +- T4(effect)::S1(entry)::S1.2(entry)::T3(effect)::S1.1(entry)::T3.1(effect)::S1.3(entry) +- T4(effect)::T3(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry) +- T4(effect)::S1(entry)::S1.2(entry)::T3(effect)::T3.1(effect)::S1.1(entry)::S1.3(entry) +- T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry)::T4(effect)::S1.2(entry) +- T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) +- T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) +- T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) +- T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) +- T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) +- T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::T3(effect)::S1.1(entry)::S1.3(entry) +- T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) +- T4(effect)::S1(entry)::T3(effect)::S1.1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry) +- T4(effect)::S1(entry)::T3(effect)::S1.2(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry) +- T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) +- T3(effect)::S1(entry)::S1.1(entry)::T4(effect)::S1.2(entry)::T3.1(effect)::S1.3(entry) +- T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) +- T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) +- T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) +- T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::T4(effect)::S1.3(entry)::S1.2(entry) +- T3(effect)::T4(effect)::S1(entry)::S1.2(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry) +- T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) +- T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) +- T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry)::T3(effect)::S1.1(entry) +- T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) +- T3(effect)::T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry) +- T4(effect)::S1(entry)::T3(effect)::S1.2(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry) +- T3(effect)::S1(entry)::S1.1(entry)::T4(effect)::T3.1(effect)::S1.2(entry)::S1.3(entry) +- T3(effect)::T4(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry) +- T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::T4(effect)::S1.2(entry)::S1.3(entry) +- T3(effect)::S1(entry)::T4(effect)::S1.2(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry) +- T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) +- T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) +- T4(effect)::T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry) +- T3(effect)::T4(effect)::S1(entry)::S1.1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry) +- T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) +- T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) +- T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) +- T3(effect)::S1(entry)::T4(effect)::S1.1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry) +- T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) +stimulus: +- event: Start +behaviors: + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_2_entry: + - S1.2(entry) + pssm_T2_1_effect: + - T2.1(effect) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_1_effect: + - T1.1(effect) + pssm_S1_3_entry: + - S1.3(entry) + pssm_T3_1_effect: + - T3.1(effect) +statechart: + name: Fork_001 + states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 S1_2 + 'on': + - pssm_T3_effect + - pssm_T4_effect + S1: + parallel: true + enter: + - pssm_S1_entry + states: + S1_Region1: + states: + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: FinalState1 + transitions: + - target: S1_2 + initial: true + 'on': + - pssm_T2_1_effect + S1_Region2: + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: FinalState1 + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + S1_Region3: + states: + S1_3: + enter: + - pssm_S1_3_entry + transitions: + - target: FinalState1 + transitions: + - target: S1_3 + initial: true + 'on': + - pssm_T3_1_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Fork/Fork_002.yaml b/tests/uml/pssm/cases/Fork/Fork_002.yaml new file mode 100644 index 00000000..a576c324 --- /dev/null +++ b/tests/uml/pssm/cases/Fork/Fork_002.yaml @@ -0,0 +1,66 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- fork +expected_traces: +- T2(effect)::S1(entry)::T2.2(effect)::T2.1(effect)::S1.1(entry) +- T2(effect)::S1(entry)::T2.1(effect)::S1.1(entry)::T2.2(effect) +- T2(effect)::S1(entry)::T2.1(effect)::T2.2(effect)::S1.1(entry) +- T2(effect)::S1(entry)::T2.2(effect)::S1.1(entry)::T2.1(effect) +stimulus: +- event: Start +behaviors: + pssm_T2_effect: + - T2(effect) + pssm_T2_1_effect: + - T2.1(effect) + pssm_T2_2_effect: + - T2.2(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) +statechart: + name: Fork_002 + states: + wait: + initial: true + transitions: + - event: Start + target: S1_1_1 S1_2_1 + 'on': + - pssm_T2_effect + - pssm_T2_1_effect + - pssm_T2_2_effect + S1: + enter: + - pssm_S1_entry + states: + S1_1: + parallel: true + enter: + - pssm_S1_1_entry + states: + S1_1_Region1: + states: + S1_1_1: + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_1_Region2: + states: + S1_2_1: + transitions: + - target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - event: done.state.S1_1 + target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_001-A.yaml b/tests/uml/pssm/cases/History/History_001-A.yaml new file mode 100644 index 00000000..1a025159 --- /dev/null +++ b/tests/uml/pssm/cases/History/History_001-A.yaml @@ -0,0 +1,67 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::S1.1(entry)::S1.1.1(entry)::S1.1.2(entry)::T3(effect)::S1(entry)::S1.1(entry)::S1.1.2(entry) +stimulus: +- event: Start +- event: AnotherSignal +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_T3_effect: + - T3(effect) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_1_entry: + - S1.1.1(entry) + pssm_S1_1_2_entry: + - S1.1.2(entry) +statechart: + name: History_001-A + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + states: + S1_1_1: + initial: true + enter: + - pssm_S1_1_1_entry + transitions: + - target: S1_1_2 + S1_1_2: + enter: + - pssm_S1_1_2_entry + transitions: + - event: Continue + target: S1_1_FinalState1 + S1_1_FinalState1: + final: true + transitions: + - event: done.state.S1_1 + target: S1_FinalState1 + S1_FinalState1: + final: true + history: + DeepHistory1: + type: deep + transitions: + - event: AnotherSignal + target: DeepHistory1 + 'on': + - pssm_T3_effect + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_001-B.yaml b/tests/uml/pssm/cases/History/History_001-B.yaml new file mode 100644 index 00000000..fd27cc30 --- /dev/null +++ b/tests/uml/pssm/cases/History/History_001-B.yaml @@ -0,0 +1,84 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::T1.4(effect)::S1.2(entry)::S1.2.1(entry)::S1.2(exit)::S1(entry)::S1.2(entry)::S1.2.1(entry)::T1.2.2(effect)::S1.2.2(entry)::S1.2(exit) +stimulus: +- event: Start +- event: AnotherSignal +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_2_entry: + - S1.2(entry) + pssm_S1_2_exit: + - S1.2(exit) + pssm_S1_2_1_entry: + - S1.2.1(entry) + pssm_T1_2_2_effect: + - T1.2.2(effect) + pssm_S1_2_2_entry: + - S1.2.2(entry) + pssm_T1_4_effect: + - T1.4(effect) +statechart: + name: History_001-B + states: + wait: + initial: true + transitions: + - event: Start + target: DeepHistory1 + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + exit: + - pssm_S1_2_exit + states: + S1_2_1: + initial: true + enter: + - pssm_S1_2_1_entry + transitions: + - event: Continue + target: S1_2_2 + 'on': + - pssm_T1_2_2_effect + S1_2_2: + enter: + - pssm_S1_2_2_entry + transitions: + - target: S1_2_FinalState1 + S1_2_FinalState1: + final: true + transitions: + - event: done.state.S1_2 + target: S1_FinalState1 + S1_FinalState1: + final: true + history: + DeepHistory1: + type: deep + transitions: + - target: S1_2 + 'on': + - pssm_T1_4_effect + transitions: + - event: AnotherSignal + target: DeepHistory1 + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_001-C.yaml b/tests/uml/pssm/cases/History/History_001-C.yaml new file mode 100644 index 00000000..f95d32f8 --- /dev/null +++ b/tests/uml/pssm/cases/History/History_001-C.yaml @@ -0,0 +1,107 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.2(entry)::S1(exit) +- S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.2(entry)::S1(exit) +- S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S1.1(exit)::S2.2.2(entry)::S1.2(entry)::S1(exit) +- S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit) +- S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S2.2(entry)::S1.2(entry)::S2.2.2(entry)::S1(exit) +- S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S2.2(entry)::S2.2.2(entry)::S1.2(entry)::S1(exit) +- S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S1.1(exit)::S2.2.2(entry)::S1.2(entry)::S1(exit) +- S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.2(entry)::S1(exit) +- S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit) +- S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S2.2(entry)::S2.2.2(entry)::S1.2(entry)::S1(exit) +- S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S2.2(entry)::S1.2(entry)::S2.2.2(entry)::S1(exit) +- S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.2(entry)::S1(exit) +stimulus: +- event: Start +- event: AnotherSignal +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_2_entry: + - S1.2(entry) + pssm_S2_2_entry: + - S2.2(entry) + pssm_S2_2_1_exit: + - S2.2.1(exit) + pssm_S2_2_2_entry: + - S2.2.2(entry) +statechart: + name: History_001-C + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - event: Continue + target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + transitions: + - target: S2_2 + S2_2: + enter: + - pssm_S2_2_entry + states: + S2_2_1: + initial: true + exit: + - pssm_S2_2_1_exit + transitions: + - target: S2_2_2 + S2_2_2: + enter: + - pssm_S2_2_2_entry + transitions: + - event: Continue + target: S2_2_FinalState1 + S2_2_FinalState1: + final: true + transitions: + - event: done.state.S2_2 + target: Region2_FinalState1 + Region2_FinalState1: + final: true + history: + DeepHistory1: + type: deep + transitions: + - event: AnotherSignal + target: S2 + - event: done.state.S1 + target: FinalState1 + S2: + transitions: + - target: DeepHistory1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_001-D.yaml b/tests/uml/pssm/cases/History/History_001-D.yaml new file mode 100644 index 00000000..33df91de --- /dev/null +++ b/tests/uml/pssm/cases/History/History_001-D.yaml @@ -0,0 +1,78 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::S1.1(entry)::T1.2(effect)::S1.2(entry)::S1(exit)::T3(effect)::S1(entry)::S1.2(entry)::S1(exit)::S2(entry) +stimulus: +- event: Start +- event: AnotherSignal +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S1_2_entry: + - S1.2(entry) + pssm_T3_effect: + - T3(effect) + pssm_S2_entry: + - S2(entry) +statechart: + name: History_001-D + states: + root: + initial: true + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: S1_2 + 'on': + - pssm_T1_2_effect + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - event: Continue + target: S1_FinalState1 + - event: AnotherSignal + target: DeepHistory1 + 'on': + - pssm_T3_effect + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: S2 + S2: + enter: + - pssm_S2_entry + transitions: + - target: FinalState1 + FinalState1: + final: true + history: + DeepHistory1: + type: deep + transitions: + - event: done.state.root + target: root_done + root_done: + final: true diff --git a/tests/uml/pssm/cases/History/History_002-A.yaml b/tests/uml/pssm/cases/History/History_002-A.yaml new file mode 100644 index 00000000..583013fa --- /dev/null +++ b/tests/uml/pssm/cases/History/History_002-A.yaml @@ -0,0 +1,81 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::S1.1(exit)::S1.2(entry)::S1.2.1(exit)::T1.2.2(effect)::S1.2.2(entry)::S1(exit)::T3(effect)::S1(entry)::S1.2(entry)::S1.2.1(exit)::T1.2.2(effect)::S1.2.2(entry)::S1(exit) +stimulus: +- event: Start +- event: AnotherSignal +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_T3_effect: + - T3(effect) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_2_entry: + - S1.2(entry) + pssm_S1_2_1_exit: + - S1.2.1(exit) + pssm_T1_2_2_effect: + - T1.2.2(effect) + pssm_S1_2_2_entry: + - S1.2.2(entry) +statechart: + name: History_002-A + states: + wait: + initial: true + transitions: + - target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + states: + S1_2_1: + initial: true + exit: + - pssm_S1_2_1_exit + transitions: + - target: S1_2_2 + 'on': + - pssm_T1_2_2_effect + S1_2_2: + enter: + - pssm_S1_2_2_entry + transitions: + - event: Continue + target: S1_2_FinalState1 + S1_2_FinalState1: + final: true + transitions: + - event: done.state.S1_2 + target: S1_FinalState1 + S1_FinalState1: + final: true + history: + ShallowHistory1: + type: shallow + transitions: + - event: AnotherSignal + target: ShallowHistory1 + 'on': + - pssm_T3_effect + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_002-B.yaml b/tests/uml/pssm/cases/History/History_002-B.yaml new file mode 100644 index 00000000..714e13c1 --- /dev/null +++ b/tests/uml/pssm/cases/History/History_002-B.yaml @@ -0,0 +1,110 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit)::T3(effect)::S1(entry)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit) +- S1(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit)::T3(effect)::S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit) +- S1(entry)::S1.1(exit)::S1.2(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit)::T3(effect)::S1(entry)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit) +- S1(entry)::S1.1(exit)::S1.2(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit)::T3(effect)::S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit) +- S1(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit)::T3(effect)::S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit) +- S1(entry)::S1.1(exit)::S1.2(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit)::T3(effect)::S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit) +stimulus: +- event: Start +- event: AnotherSignal +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_T3_effect: + - T3(effect) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_2_entry: + - S1.2(entry) + pssm_S2_1_exit: + - S2.1(exit) + pssm_S2_2_entry: + - S2.2(entry) + pssm_S2_2_1_exit: + - S2.2.1(exit) + pssm_T2_2_2_effect: + - T2.2.2(effect) + pssm_S2_2_2_entry: + - S2.2.2(entry) +statechart: + name: History_002-B + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - event: Continue + target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - target: S2_2 + S2_2: + enter: + - pssm_S2_2_entry + states: + S2_2_1: + initial: true + exit: + - pssm_S2_2_1_exit + transitions: + - target: S2_2_2 + 'on': + - pssm_T2_2_2_effect + S2_2_2: + enter: + - pssm_S2_2_2_entry + transitions: + - event: Continue + target: S2_2_FinalState1 + S2_2_FinalState1: + final: true + transitions: + - event: done.state.S2_2 + target: Region2_FinalState1 + Region2_FinalState1: + final: true + history: + ShallowHistory1: + type: shallow + transitions: + - event: done.state.S1 + target: FinalState1 + - event: AnotherSignal + target: ShallowHistory1 + 'on': + - pssm_T3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_002-C.yaml b/tests/uml/pssm/cases/History/History_002-C.yaml new file mode 100644 index 00000000..0de024bb --- /dev/null +++ b/tests/uml/pssm/cases/History/History_002-C.yaml @@ -0,0 +1,54 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::S1.1(entry)::T1.2(effect)::S1.2(entry)::S1(exit) +stimulus: +- event: Start +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S1_2_entry: + - S1.2(entry) +statechart: + name: History_002-C + states: + wait: + initial: true + transitions: + - event: Start + target: ShallowHistory1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: S1_2 + 'on': + - pssm_T1_2_effect + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + history: + ShallowHistory1: + type: shallow + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_002-D.yaml b/tests/uml/pssm/cases/History/History_002-D.yaml new file mode 100644 index 00000000..a36763f6 --- /dev/null +++ b/tests/uml/pssm/cases/History/History_002-D.yaml @@ -0,0 +1,73 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::T1.1(effect)::S1.1(entry)::S1(exit)::T1.2(effect)::S1(exit)::T3(effect)::S1(entry)::T1.3(effect)::S1.2(entry)::S1(exit) +stimulus: +- event: Start +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_T3_effect: + - T3(effect) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S1_2_entry: + - S1.2(entry) + pssm_T1_3_effect: + - T1.3(effect) + pssm_T1_1_effect: + - T1.1(effect) +statechart: + name: History_002-D + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_2_effect + S1_FinalState1: + final: true + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: FinalState1 + history: + ShallowHistory1: + type: shallow + transitions: + - target: S1_2 + 'on': + - pssm_T1_3_effect + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + - event: done.state.S1 + target: ShallowHistory1 + 'on': + - pssm_T3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Join/Join_001.yaml b/tests/uml/pssm/cases/Join/Join_001.yaml new file mode 100644 index 00000000..27a45fc8 --- /dev/null +++ b/tests/uml/pssm/cases/Join/Join_001.yaml @@ -0,0 +1,52 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- join +expected_traces: +- S1.1(exit)::T2.3(effect)::S2.1(exit)::S1(exit)::T2.4(effect) +- S1.2(exit)::T2.4(effect)::S1.1(exit)::S1(exit)::T2.4(effect) +stimulus: +- event: Start +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S2_1_exit: + - S2.1(exit) + pssm_T2_4_effect: + - T2.4(effect) + pssm_S1_1_exit: + - S1.1(exit) + pssm_T2_3_effect: + - T2.3(effect) +statechart: + name: Join_001 + states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 S2_1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S2_1: + exit: + - pssm_S2_1_exit + transitions: + - target: FinalState1 + 'on': + - pssm_T2_4_effect + S1_Region2: + states: + S1_1: + exit: + - pssm_S1_1_exit + transitions: + - target: FinalState1 + 'on': + - pssm_T2_3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Join/Join_002.yaml b/tests/uml/pssm/cases/Join/Join_002.yaml new file mode 100644 index 00000000..d212fa83 --- /dev/null +++ b/tests/uml/pssm/cases/Join/Join_002.yaml @@ -0,0 +1,59 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- join +expected_traces: +- T1.2(effect)::T2.2(effect)::S1(exit)::T3(effect)::S2(entry) +- T2.2(effect)::T1.2(effect)::S1(exit)::T3(effect)::S2(entry) +stimulus: +- event: Start +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T2_2_effect: + - T2.2(effect) + pssm_T3_effect: + - T3(effect) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S2_entry: + - S2(entry) +statechart: + name: Join_002 + states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 + S1: + exit: + - pssm_S1_exit + states: + S1_1: + parallel: true + states: + S1_1_Region1: + states: + S1_2_1: + initial: true + transitions: + - target: S2 + 'on': + - pssm_T2_2_effect + - pssm_T3_effect + S1_1_Region2: + states: + S1_1_1: + initial: true + transitions: + - target: S2 + 'on': + - pssm_T1_2_effect + - pssm_T3_effect + FinalState1: + final: true + S2: + enter: + - pssm_S2_entry + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Join/Join_003.yaml b/tests/uml/pssm/cases/Join/Join_003.yaml new file mode 100644 index 00000000..f68c4844 --- /dev/null +++ b/tests/uml/pssm/cases/Join/Join_003.yaml @@ -0,0 +1,64 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- join +expected_traces: +- T1.4(effect)::T5(effect) +- T1.2(effect)::T5(effect) +stimulus: +- event: Start +- event: AnotherSignal +behaviors: + pssm_T5_effect: + - T5(effect) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T3_effect: + - T3(effect) + pssm_T1_4_effect: + - T1.4(effect) +statechart: + name: Join_003 + datamodel: + value: None + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + transitions: + - target: S2 + cond: value != None and (value <10) + 'on': + - pssm_T1_2_effect + - pssm_T3_effect + S1_Region2: + states: + S1_2: + initial: true + transitions: + - target: S2 + cond: value != None and (value <10) + 'on': + - pssm_T1_4_effect + - pssm_T3_effect + transitions: + - event: AnotherSignal + target: S3 + 'on': + - pssm_T5_effect + S2: + transitions: + - target: FinalState1 + FinalState1: + final: true + S3: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Junction/Junction_001.yaml b/tests/uml/pssm/cases/Junction/Junction_001.yaml new file mode 100644 index 00000000..af4c7731 --- /dev/null +++ b/tests/uml/pssm/cases/Junction/Junction_001.yaml @@ -0,0 +1,48 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- junction +expected_traces: +- S1(entry)::T1.1(effect)::T1.2(effect)::S1(exit) +stimulus: +- event: Start +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_T1_1_effect: + - T1.1(effect) + pssm_T1_2_effect: + - T1.2(effect) +statechart: + name: Junction_001 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + transitions: + - target: S1_FinalState1 + S1_2: + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + - pssm_T1_2_effect + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Junction/Junction_002.yaml b/tests/uml/pssm/cases/Junction/Junction_002.yaml new file mode 100644 index 00000000..814f462c --- /dev/null +++ b/tests/uml/pssm/cases/Junction/Junction_002.yaml @@ -0,0 +1,49 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- junction +expected_traces: +- T3(effect) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_T3_effect: + - T3(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) +statechart: + name: Junction_002 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + transitions: + - target: S1_FinalState1 + S1_2: + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Junction/Junction_003.yaml b/tests/uml/pssm/cases/Junction/Junction_003.yaml new file mode 100644 index 00000000..7c375edf --- /dev/null +++ b/tests/uml/pssm/cases/Junction/Junction_003.yaml @@ -0,0 +1,119 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- junction +expected_traces: +- T1.3(effect)::T3.1.1(effect)::T3.1.1.2(effect)::T1.6(effect) +- T1.4(effect)::T1.4.1(effect)::T1.8(effect) +stimulus: +- event: Start +behaviors: + pssm_T1_3_effect: + - T1.3(effect) + pssm_T3_1_1_effect: + - T3.1.1(effect) + pssm_T3_1_1_1_effect: + - T3.1.1.1(effect) + pssm_T3_1_1_2_effect: + - T3.1.1.2(effect) + pssm_T3_1_2_effect: + - T3.1.2(effect) + pssm_T1_4_effect: + - T1.4(effect) + pssm_T1_4_2_effect: + - T1.4.2(effect) + pssm_T1_4_1_effect: + - T1.4.1(effect) + pssm_T1_9_effect: + - T1.9(effect) + pssm_T1_5_effect: + - T1.5(effect) + pssm_T1_6_effect: + - T1.6(effect) + pssm_T1_7_effect: + - T1.7(effect) + pssm_T1_8_effect: + - T1.8(effect) +statechart: + name: Junction_003 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + states: + S1_1: + initial: true + transitions: + - target: S1_2 + cond: + - 'True' + - 'True' + - 'False' + 'on': + - pssm_T1_3_effect + - pssm_T3_1_1_effect + - pssm_T3_1_1_1_effect + - target: S1_3 + cond: + - 'True' + - 'True' + - 'True' + 'on': + - pssm_T1_3_effect + - pssm_T3_1_1_effect + - pssm_T3_1_1_2_effect + - target: S1_4 + cond: + - 'True' + - 'False' + 'on': + - pssm_T1_3_effect + - pssm_T3_1_2_effect + - target: S1_6 + cond: + - 'True' + - 'False' + 'on': + - pssm_T1_4_effect + - pssm_T1_4_2_effect + - target: S1_5 + cond: + - 'True' + - 'True' + 'on': + - pssm_T1_4_effect + - pssm_T1_4_1_effect + S1_6: + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_9_effect + S1_2: + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_5_effect + S1_3: + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_6_effect + S1_4: + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_7_effect + S1_5: + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_8_effect + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Junction/Junction_004.yaml b/tests/uml/pssm/cases/Junction/Junction_004.yaml new file mode 100644 index 00000000..d9cb0f1f --- /dev/null +++ b/tests/uml/pssm/cases/Junction/Junction_004.yaml @@ -0,0 +1,91 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- junction +expected_traces: +- T3(effect) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_2_exit: + - S1.2(exit) + pssm_T1_1_effect: + - T1.1(effect) + pssm_S2_1_entry: + - S2.1(entry) + pssm_S2_2_entry: + - S2.2(entry) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_3_effect: + - T1.3(effect) + pssm_T3_effect: + - T3(effect) +statechart: + name: Junction_004 + states: + S1: + parallel: true + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + enter: + - pssm_S1_1_entry + S1_2: + exit: + - pssm_S1_2_exit + transitions: + - event: Continue + target: Region1_FinalState1 + Region1_FinalState1: + final: true + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + S1_Region2: + states: + S2_1: + enter: + - pssm_S2_1_entry + transitions: + - target: FinalState1 + S2_2: + enter: + - pssm_S2_2_entry + transitions: + - target: FinalState1 + wait: + initial: true + transitions: + - event: Start + target: S1_1 + cond: 'False' + 'on': + - pssm_T1_2_effect + - event: Start + target: S1_2 + cond: 'True' + 'on': + - pssm_T1_3_effect + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Junction/Junction_005.yaml b/tests/uml/pssm/cases/Junction/Junction_005.yaml new file mode 100644 index 00000000..f11a4d5e --- /dev/null +++ b/tests/uml/pssm/cases/Junction/Junction_005.yaml @@ -0,0 +1,100 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- junction +expected_traces: +- S1(entry)::T2.1(effect)::T1.3(effect)::S2.1(entry)::S1.2(exit)::S1(exit) +- S1(entry)::T2.1(effect)::S2.1(entry)::T1.3(effect)::S1.2(exit)::S1(exit) +- S1(entry)::T1.3(effect)::T2.1(effect)::S2.1(entry)::S1.2(exit)::S1(exit) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_2_exit: + - S1.2(exit) + pssm_T1_1_effect: + - T1.1(effect) + pssm_S2_1_entry: + - S2.1(entry) + pssm_S2_2_entry: + - S2.2(entry) + pssm_T2_1_effect: + - T2.1(effect) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_3_effect: + - T1.3(effect) + pssm_T3_effect: + - T3(effect) +statechart: + name: Junction_005 + states: + S1: + parallel: true + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + enter: + - pssm_S1_1_entry + S1_2: + exit: + - pssm_S1_2_exit + transitions: + - event: Continue + target: Region1_FinalState1 + Region1_FinalState1: + final: true + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + S1_Region2: + states: + S2_1: + enter: + - pssm_S2_1_entry + transitions: + - target: FinalState1 + S2_2: + enter: + - pssm_S2_2_entry + transitions: + - target: FinalState1 + transitions: + - target: S2_1 + initial: true + 'on': + - pssm_T2_1_effect + wait: + initial: true + transitions: + - event: Start + target: S1_1 + cond: 'False' + 'on': + - pssm_T1_2_effect + - event: Start + target: S1_2 + cond: 'True' + 'on': + - pssm_T1_3_effect + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Junction/Junction_006.yaml b/tests/uml/pssm/cases/Junction/Junction_006.yaml new file mode 100644 index 00000000..a0b772f7 --- /dev/null +++ b/tests/uml/pssm/cases/Junction/Junction_006.yaml @@ -0,0 +1,65 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +- exit_point +- junction +expected_traces: +- T1.1(effect)[in=true]::T1.3(effect)[in=true]::T1.7(effect) +stimulus: +- event: Start +- event: Data + kwargs: + value: true +behaviors: + pssm_T1_4_effect: + - T1.4(effect) + pssm_T1_6_effect: + - T1.6(effect) + pssm_T1_7_effect: + - T1.7(effect) + pssm_T1_1_effect: + - T1.1(effect)[in={value}] + pssm_T1_3_effect: + - T1.3(effect)[in={value}] + pssm_T1_2_effect: + - T1.2(effect)[in={value}] +statechart: + name: Junction_006 + states: + S1: + states: + S1_2: + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_4_effect + S1_3: + transitions: + - target: S1_FinalState1 + cond: 'False' + 'on': + - pssm_T1_6_effect + - target: FinalState1 + 'on': + - pssm_T1_7_effect + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + wait: + initial: true + transitions: + - event: Data + target: S1_3 + cond: value == True + 'on': + - pssm_T1_1_effect + - pssm_T1_3_effect + - event: Data + target: S1_2 + 'on': + - pssm_T1_1_effect + - pssm_T1_2_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Other/TransitionExecutionAlgorithm.yaml b/tests/uml/pssm/cases/Other/TransitionExecutionAlgorithm.yaml new file mode 100644 index 00000000..70355f5d --- /dev/null +++ b/tests/uml/pssm/cases/Other/TransitionExecutionAlgorithm.yaml @@ -0,0 +1,56 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +- exit_point +expected_traces: +- S1.1(exit)::T1.2(effect)::S1(exit)::T2(effect)::S2(entry)::S2.1(entry)::T2.1(effect) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T2_effect: + - T2(effect) + pssm_T2_1_effect: + - T2.1(effect) + pssm_S2_entry: + - S2(entry) + pssm_S2_1_entry: + - S2.1(entry) +statechart: + name: TransitionExecutionAlgorithm + states: + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - event: Continue + target: S2_1_1 + 'on': + - pssm_T1_2_effect + - pssm_T2_effect + - pssm_T2_1_effect + S2: + enter: + - pssm_S2_entry + states: + S2_1: + enter: + - pssm_S2_1_entry + states: + S2_1_1: {} + Waiting: + initial: true + transitions: + - event: Start + target: S1 diff --git a/tests/uml/pssm/cases/Redefinition/Redefinition_001.yaml b/tests/uml/pssm/cases/Redefinition/Redefinition_001.yaml new file mode 100644 index 00000000..1d77561b --- /dev/null +++ b/tests/uml/pssm/cases/Redefinition/Redefinition_001.yaml @@ -0,0 +1,67 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- redefinition +expected_traces: +- S2(entry)-redefined::T3(effect)::S3(entry)-redefined::T4(effect)::S4(entry)::T5(effect)::S2(entry)-redefined::T3(effect)::S3(entry)-redefined +stimulus: +- event: Start +- event: Continue +- event: AnotherSignal +behaviors: + pssm_S2_entry: + - S2(entry)-redefined + pssm_T3_effect: + - T3(effect) + pssm_S3_entry: + - S3(entry)-redefined + pssm_T4_effect_2: + - T4(effect) + pssm_S4_entry: + - S4(entry) + pssm_T5_effect: + - T5(effect) +statechart: + name: Redefinition_001 + states: + S1: + initial: true + transitions: + - event: Start + target: S2 + S2: + enter: + - pssm_S2_entry + states: + S2_1: + initial: true + transitions: + - target: S2_2 + S2_2: + transitions: + - target: S2_FinalState1 + S2_FinalState1: + final: true + transitions: + - event: done.state.S2 + target: S3 + 'on': + - pssm_T3_effect + S3: + enter: + - pssm_S3_entry + transitions: + - event: AnotherSignal + target: FinalState1 + - event: Continue + target: S4 + 'on': + - pssm_T4_effect_2 + FinalState1: + final: true + S4: + enter: + - pssm_S4_entry + transitions: + - target: S2 + 'on': + - pssm_T5_effect diff --git a/tests/uml/pssm/cases/Redefinition/Redefinition_002.yaml b/tests/uml/pssm/cases/Redefinition/Redefinition_002.yaml new file mode 100644 index 00000000..e0c35bae --- /dev/null +++ b/tests/uml/pssm/cases/Redefinition/Redefinition_002.yaml @@ -0,0 +1,54 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- redefinition +expected_traces: +- T2(effect)::S1(entry)-redefined-prime::S1.1(entry)-redefined-second::T1.2(effect)::S1.2(exit) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_T2_effect: + - T2(effect) + pssm_S1_entry: + - S1(entry)-redefined-prime + pssm_S1_1_entry: + - S1.1(entry)-redefined-second + pssm_T1_2_effect: + - T1.2(effect) + pssm_S1_2_exit: + - S1.2(exit) +statechart: + name: Redefinition_002 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - event: Continue + target: S1_2 + 'on': + - pssm_T1_2_effect + S1_2: + exit: + - pssm_S1_2_exit + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Redefinition/Redefinition_003.yaml b/tests/uml/pssm/cases/Redefinition/Redefinition_003.yaml new file mode 100644 index 00000000..449b1968 --- /dev/null +++ b/tests/uml/pssm/cases/Redefinition/Redefinition_003.yaml @@ -0,0 +1,59 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- redefinition +expected_traces: +- S1(entry)-redefined-second::T3(effect)::S2(entry)-redefined-second::S1(entry)-redefined-second::T4(effect)::S2(entry)-redefined-second::S1(entry)-redefined-second::T6(effect)::S2(entry)-redefined-second +stimulus: +- event: Start +- event: Continue +- event: AnotherSignal +- event: AnotherSignal +- event: AnotherSignal +- event: Pending +- event: Continue +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry)-redefined-second + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) + pssm_T6_effect: + - T6(effect) + pssm_S2_entry: + - S2(entry)-redefined-second +statechart: + name: Redefinition_003 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + transitions: + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + - event: AnotherSignal + target: S2 + 'on': + - pssm_T4_effect + - event: Pending + target: S2 + 'on': + - pssm_T6_effect + S2: + enter: + - pssm_S2_entry + transitions: + - event: AnotherSignal + target: S1 + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Redefinition/Redefinition_004.yaml b/tests/uml/pssm/cases/Redefinition/Redefinition_004.yaml new file mode 100644 index 00000000..7e01df64 --- /dev/null +++ b/tests/uml/pssm/cases/Redefinition/Redefinition_004.yaml @@ -0,0 +1,52 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- redefinition +expected_traces: +- S1.1(entry)-redefined-prime::T1.2(effect)-redefined-prime::S1.2(entry)-redefined-prime::S1.1(entry)-redefined-prime::T1.2(effect)-redefined-prime::S1.2(entry)-redefined-prime +stimulus: +- event: Start +- event: Continue +- event: Pending +- event: AnotherSignal +- event: Continue +behaviors: + pssm_S1_1_entry: + - S1.1(entry)-redefined-prime + pssm_T1_2__effect: + - T1.2(effect)-redefined-prime + pssm_S1_2_entry: + - S1.2(entry)-redefined-prime +statechart: + name: Redefinition_004 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - event: AnotherSignal Continue + target: S1_2 + 'on': + - pssm_T1_2__effect + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - event: Pending + target: S1_1 + - event: Continue + target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Redefinition/Redefinition_005.yaml b/tests/uml/pssm/cases/Redefinition/Redefinition_005.yaml new file mode 100644 index 00000000..e2ca2cf1 --- /dev/null +++ b/tests/uml/pssm/cases/Redefinition/Redefinition_005.yaml @@ -0,0 +1,54 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- redefinition +expected_traces: +- T2(effect)::S1(entry)::S1(doActivity)::S1(exit)::T3(effect)-redefined::S2(entry)-redefined-prime::S2(doActivity)-redefined-prime::S2(exit)-redefined-prime +stimulus: +- event: Start +behaviors: + pssm_T2__effect: + - T2(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + on_invoke_S1: + - S1(doActivity) + pssm_T3__effect: + - T3(effect)-redefined + pssm_S2_entry: + - S2(entry)-redefined-prime + pssm_S2_exit: + - S2(exit)-redefined-prime + on_invoke_S2: + - S2(doActivity)-redefined-prime +statechart: + name: Redefinition_005 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2__effect + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + transitions: + - event: done.invoke.S1 + target: S2 + 'on': + - pssm_T3__effect + S2: + enter: + - pssm_S2_entry + exit: + - pssm_S2_exit + transitions: + - event: done.invoke.S2 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Redefinition/Redefinition_006.yaml b/tests/uml/pssm/cases/Redefinition/Redefinition_006.yaml new file mode 100644 index 00000000..d8909a75 --- /dev/null +++ b/tests/uml/pssm/cases/Redefinition/Redefinition_006.yaml @@ -0,0 +1,41 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- defer +- redefinition +expected_traces: +- S1.1(exit)-redefined-prime::S1(exit) +stimulus: +- event: Start +- event: Continue +- event: AnotherSignal +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit)-redefined-prime +statechart: + name: Redefinition_006 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - event: AnotherSignal + target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Standalone/Standalone_001.yaml b/tests/uml/pssm/cases/Standalone/Standalone_001.yaml new file mode 100644 index 00000000..4c0bda53 --- /dev/null +++ b/tests/uml/pssm/cases/Standalone/Standalone_001.yaml @@ -0,0 +1,106 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- choice +- entry_point +- exit_point +expected_traces: +- T2(effect)::S1.2(entry)::T1.6(effect)::S1.2(entry)::T1.7(effect)::S2.2(doActivity)::S2.1(entry) +- T2(effect)::S1.2(entry)::T1.6(effect)::S1.2(entry)::T1.7(effect)::S2.1(entry)::S2.2(doActivity) +stimulus: +- event: Start +- event: Continue +- event: Continue +behaviors: + pssm_T2_effect: + - T2(effect) + pssm_S1_2_entry: + - S1.2(entry) + pssm_T1_7_effect: + - T1.7(effect) + pssm_T1_6_effect: + - T1.6(effect) + pssm_S1_3_entry: + - S1.3(entry) + pssm_S2_1_entry: + - S2.1(entry) + on_invoke_S2_2: + - S2.2(doActivity) +statechart: + name: Standalone_001 + datamodel: + balance: None + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - assign: + location: balance + expr: '150' + - pssm_T2_effect + S1: + states: + S1_2: + enter: + - assign: + location: balance + expr: balance - 100 + - pssm_S1_2_entry + transitions: + - target: S2 + cond: balance != None and (balance <= 0) + 'on': + - pssm_T1_7_effect + - target: S1_1 + 'on': + - pssm_T1_6_effect + S1_3: + enter: + - assign: + location: balance + expr: balance - 50 + - pssm_S1_3_entry + transitions: + - target: S2 + cond: balance != None and (balance <= 0) + 'on': + - pssm_T1_7_effect + - target: S1_1 + 'on': + - pssm_T1_6_effect + S1_1: + initial: true + transitions: + - event: Continue + target: S1_2 + - event: AnotherSignal + target: S1_3 + FS1: + final: true + S2: + parallel: true + states: + S2_Region1: + states: + S2_1: + initial: true + enter: + - pssm_S2_1_entry + transitions: + - target: FSR1 + FSR1: + final: true + S2_Region2: + states: + S2_2: + initial: true + transitions: + - event: done.invoke.S2_2 + target: FSR2 + FSR2: + final: true + transitions: + - event: done.state.S2 + target: FS1 diff --git a/tests/uml/pssm/cases/Standalone/Standalone_002.yaml b/tests/uml/pssm/cases/Standalone/Standalone_002.yaml new file mode 100644 index 00000000..c94ea69f --- /dev/null +++ b/tests/uml/pssm/cases/Standalone/Standalone_002.yaml @@ -0,0 +1,109 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +- exit_point +- junction +expected_traces: +- S1(entry)::S1.1(entry)::S1.1(exit)::S1(exit)::T1.3(effect)[in=5]::S2(entry)[in=5]::S2(exit)[in=5]::T2.1(effect)[in=5] +- S1(entry)::S1.1(entry)::S1.1(exit)::S1(exit)::T1.3(effect)[in=5]::S2(entry)[in=5]::S2.2(entry)[in=5]::S2(exit)[in=5]::T2.1(effect)[in=5] +stimulus: +- event: Start +- event: IntegerData + kwargs: + value: 20 +- event: IntegerData + kwargs: + value: 5 +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_3_effect: + - T1.3(effect)[in={value}] + pssm_T2_2_effect: + - T2.2(effect)[in={value}] + pssm_T2_1_effect: + - T2.1(effect)[in={value}] + pssm_T1_1_effect: + - T1.1(effect) + pssm_S2_entry: + - S2(entry)[in={value}] + pssm_S2_exit: + - S2(exit)[in={value}] + pssm_S2_1_entry: + - S2.1(entry)[in={value}] + pssm_S2_2_entry: + - S2.2(entry)[in={value}] +statechart: + name: Standalone_002 + states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - target: S1 + - event: IntegerData + target: S2_2 S2_1 + cond: value == 10 + 'on': + - pssm_T1_3_effect + - pssm_T2_2_effect + - event: IntegerData + target: S2_2 end + cond: value == 5 + 'on': + - pssm_T1_3_effect + - pssm_T2_1_effect + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + FinalState1: + final: true + S2: + parallel: true + enter: + - pssm_S2_entry + exit: + - pssm_S2_exit + states: + S2_Region1: + states: + S2_1: + enter: + - pssm_S2_1_entry + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + S2_Region2: + states: + S2_2: + enter: + - pssm_S2_2_entry + transitions: + - target: Region2_FinalState1 + Region2_FinalState1: + final: true + end: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Standalone/Standalone_003.yaml b/tests/uml/pssm/cases/Standalone/Standalone_003.yaml new file mode 100644 index 00000000..8e6b58b9 --- /dev/null +++ b/tests/uml/pssm/cases/Standalone/Standalone_003.yaml @@ -0,0 +1,63 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- call_event +expected_traces: +- S2.1.1(entry)[in=true][in=true][out=false][out=false]::S1.1(entry)[in=true][in=true][out=true][out=true]::[out=true][out=true] +- S1.1(entry)[in=true][in=true][out=true][out=true]::S2.1.1(entry)[in=true][in=true][out=false][out=false]::[out=false][out=false] +stimulus: +- event: Start +- call: or + kwargs: + left: true + right: true + trace_result: '[out={result}]' +- event: Continue +behaviors: + pssm_S1_1_entry: + - S1.1(entry)[in={left}][in={right}] + pssm_S2_1_1_entry: + - S2.1.1(entry)[in={left}][in={right}] +statechart: + name: Standalone_003 + states: + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + states: + S2_1_1: + initial: true + enter: + - pssm_S2_1_1_entry + transitions: + - target: S2_1_FinalState1 + S2_1_FinalState1: + final: true + transitions: + - event: done.state.S2_1 + target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - event: Continue + target: FinalState1 + wait: + initial: true + transitions: + - event: or + target: S1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Terminate/Terminate_001.yaml b/tests/uml/pssm/cases/Terminate/Terminate_001.yaml new file mode 100644 index 00000000..60385267 --- /dev/null +++ b/tests/uml/pssm/cases/Terminate/Terminate_001.yaml @@ -0,0 +1,61 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- terminate +expected_traces: +- S1(entry)::S2.1(entry)::S1.1(entry)::S2.1(exit) +- S1(entry)::S1.1(entry)::S2.1(entry)::S2.1(exit) +stimulus: +- event: Start +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S2_1_entry: + - S2.1(entry) + pssm_S2_1_exit: + - S2.1(exit) +statechart: + name: Terminate_001 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + enter: + - pssm_S2_1_entry + exit: + - pssm_S2_1_exit + transitions: + - target: Terminate1 + Terminate1: + final: true diff --git a/tests/uml/pssm/cases/Terminate/Terminate_002.yaml b/tests/uml/pssm/cases/Terminate/Terminate_002.yaml new file mode 100644 index 00000000..8dcbab60 --- /dev/null +++ b/tests/uml/pssm/cases/Terminate/Terminate_002.yaml @@ -0,0 +1,64 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- do_activity_accept +- terminate +expected_traces: +- S1(entry)::S1.1(entry)::S2.1(entry) +- S1(entry)::S1.1(entry)::S1.1(doActivityPartI)::S2.1(entry) +- S1(entry)::S2.1(entry)::S1.1(entry)::S1.1(doActivityPartI) +- S1(entry)::S2.1(entry)::S1.1(entry) +- S1(entry)::S1.1(entry)::S2.1(entry)::S1.1(doActivityPartI) +stimulus: +- event: Start +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + on_invoke_S1_1: + - S1.1(doActivityPartI) + - accept: Continue + pssm_S2_1_entry: + - S2.1(entry) +statechart: + name: Terminate_002 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - event: done.invoke.S1_1 + target: FinalState1 + FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + enter: + - pssm_S2_1_entry + transitions: + - target: Terminate1 + Terminate1: + final: true diff --git a/tests/uml/pssm/cases/Terminate/Terminate_003.yaml b/tests/uml/pssm/cases/Terminate/Terminate_003.yaml new file mode 100644 index 00000000..b64de068 --- /dev/null +++ b/tests/uml/pssm/cases/Terminate/Terminate_003.yaml @@ -0,0 +1,24 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- terminate +expected_traces: +- T2(effect) +stimulus: +- event: Start +behaviors: + pssm_T2_effect: + - T2(effect) +statechart: + name: Terminate_003 + states: + wait: + initial: true + transitions: + - event: Start + target: Terminate1 + 'on': + - pssm_T2_effect + S1: + states: {} + Terminate1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_001.yaml b/tests/uml/pssm/cases/Transition/Transition_001.yaml new file mode 100644 index 00000000..4b46a966 --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_001.yaml @@ -0,0 +1,24 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T2(effect) +stimulus: +- event: Start +behaviors: + pssm_T2_effect: + - T2(effect) +statechart: + name: Transition_001 + states: + S1: + initial: true + transitions: + - event: Start + target: S2 + 'on': + - pssm_T2_effect + S2: + transitions: + - target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_007.yaml b/tests/uml/pssm/cases/Transition/Transition_007.yaml new file mode 100644 index 00000000..781b74c3 --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_007.yaml @@ -0,0 +1,41 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T1(effect)::T2(effect)::T3(effect) +stimulus: +- event: Start +- event: AnotherSignal +- event: Continue +- event: Continue +behaviors: + pssm_T1_effect: + - T1(effect) + pssm_T3_effect: + - T3(effect) + pssm_T2_effect: + - T2(effect) +statechart: + name: Transition_007 + states: + S1: + initial: true + transitions: + - event: AnotherSignal + target: S3 + 'on': + - pssm_T1_effect + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + S3: + transitions: + - event: Continue AnotherSignal + target: S1 + 'on': + - pssm_T2_effect + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Transition/Transition_010.yaml b/tests/uml/pssm/cases/Transition/Transition_010.yaml new file mode 100644 index 00000000..207e3f9f --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_010.yaml @@ -0,0 +1,41 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- Waiting(exit)::S1(entry)::IT::IT::S1(exit) +stimulus: +- event: Start +- event: AnotherSignal +- event: AnotherSignal +- event: Continue +behaviors: + pssm_Waiting_exit: + - Waiting(exit) + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_IT_effect: + - IT +statechart: + name: Transition_010 + states: + Waiting: + initial: true + exit: + - pssm_Waiting_exit + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + transitions: + - event: AnotherSignal + 'on': + - pssm_IT_effect + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_011-A.yaml b/tests/uml/pssm/cases/Transition/Transition_011-A.yaml new file mode 100644 index 00000000..80323068 --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_011-A.yaml @@ -0,0 +1,56 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1.1(entry)::S1.1(exit)::T1.3(effect)::S1.2(entry)::S1(exit) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T1_3_effect: + - T1.3(effect) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_2_entry: + - S1.2(entry) +statechart: + name: Transition_011-A + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - event: Pending + target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + - event: Continue + target: S1_2 + internal: true + 'on': + - pssm_T1_3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_011-B.yaml b/tests/uml/pssm/cases/Transition/Transition_011-B.yaml new file mode 100644 index 00000000..d9c15dcb --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_011-B.yaml @@ -0,0 +1,47 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +expected_traces: +- S1(entry)::S1.1(entry)::T1.3(effect)::S1(exit) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_3_effect: + - T1.3(effect) +statechart: + name: Transition_011-B + states: + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - event: Continue + target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + wait: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T1_3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_011-C.yaml b/tests/uml/pssm/cases/Transition/Transition_011-C.yaml new file mode 100644 index 00000000..ba6c867d --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_011-C.yaml @@ -0,0 +1,55 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::S1.1(entry)::S1.1(exit)::S1.2(exit)::T1.3(effect)::S1(exit) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_2_entry: + - S1.2(exit) + pssm_T1_3_effect: + - T1.3(effect) +statechart: + name: Transition_011-C + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - event: Continue + target: S1 + 'on': + - pssm_T1_3_effect + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_011-D.yaml b/tests/uml/pssm/cases/Transition/Transition_011-D.yaml new file mode 100644 index 00000000..fd909150 --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_011-D.yaml @@ -0,0 +1,68 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- exit_point +expected_traces: +- S1.1(entry)::S2.1(entry)::T3(effect)::S1.1(exit)::S2.1(exit)::S1(exit) +- S1.1(entry)::S2.1(entry)::T3(effect)::S2.1(exit)::S1.1(exit)::S1(exit) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T3_effect: + - T3(effect) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S2_1_entry: + - S2.1(entry) + pssm_S2_1_exit: + - S2.1(exit) +statechart: + name: Transition_011-D + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - event: Pending + target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + enter: + - pssm_S2_1_entry + exit: + - pssm_S2_1_exit + transitions: + - event: Pending + target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - event: Continue + target: FinalState1 + 'on': + - pssm_T3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_011-E.yaml b/tests/uml/pssm/cases/Transition/Transition_011-E.yaml new file mode 100644 index 00000000..15c4a9d0 --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_011-E.yaml @@ -0,0 +1,47 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +- exit_point +expected_traces: +- S1(entry)::S1.1(entry)::T1.3(effect)::S1.1(exit)::S1(exit) +stimulus: +- event: Start +behaviors: + pssm_T1_3_effect: + - T1.3(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) +statechart: + name: Transition_011-E + states: + wait: + initial: true + transitions: + - event: Start + target: FinalState1 + 'on': + - pssm_T1_3_effect + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_015.yaml b/tests/uml/pssm/cases/Transition/Transition_015.yaml new file mode 100644 index 00000000..9ee55f6c --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_015.yaml @@ -0,0 +1,27 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::S1(doActivity) +stimulus: +- event: Start +behaviors: + pssm_S1_entry: + - S1(entry) + on_invoke_S1: + - S1(doActivity) +statechart: + name: Transition_015 + states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + transitions: + - event: done.invoke.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_016.yaml b/tests/uml/pssm/cases/Transition/Transition_016.yaml new file mode 100644 index 00000000..4ca94963 --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_016.yaml @@ -0,0 +1,24 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T2(effect) +stimulus: +- event: Start +behaviors: + pssm_T2_effect: + - T2(effect) +statechart: + name: Transition_016 + states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + S1: + transitions: + - target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_017.yaml b/tests/uml/pssm/cases/Transition/Transition_017.yaml new file mode 100644 index 00000000..568905be --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_017.yaml @@ -0,0 +1,76 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T2(effect)::S1(entry)::T2.2(effect)::T3.2(effect)::S3.1(doActivity)::T3.1.2(effect) +- T2(effect)::S1(entry)::S3.1(doActivity)::T3.1.2(effect)::T2.2(effect)::T3.2(effect) +- T2(effect)::S1(entry)::T3.1.2(effect)::S3.1(doActivity)::T2.2(effect)::T3.2(effect) +- T2(effect)::S1(entry)::T2.2(effect)::T3.1.2(effect)::S3.1(doActivity)::T3.2(effect) +- T2(effect)::S1(entry)::T3.1.2(effect)::T2.2(effect)::S3.1(doActivity)::T3.2(effect) +- T2(effect)::S1(entry)::S3.1(doActivity)::T2.2(effect)::T3.1.2(effect)::T3.2(effect) +- T2(effect)::S1(entry)::T2.2(effect)::S3.1(doActivity)::T3.1.2(effect)::T3.2(effect) +- T2(effect)::S1(entry)::T2.2(effect)::T3.2(effect)::T3.1.2(effect)::S3.1(doActivity) +stimulus: +- event: Start +behaviors: + pssm_T2_effect: + - T2(effect) + pssm_S1_entry: + - S1(entry) + pssm_T2_2_effect: + - T2.2(effect) + on_invoke_S3_1: + - S3.1(doActivity) + pssm_T3_2_effect: + - T3.2(effect) + pssm_T3_1_2_effect: + - T3.1.2(effect) +statechart: + name: Transition_017 + states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + S1: + parallel: true + enter: + - pssm_S1_entry + states: + S1_Region2: + states: + Region2_FinalState1: + final: true + S2_1: + initial: true + transitions: + - target: Region2_FinalState1 + 'on': + - pssm_T2_2_effect + S1_Region3: + states: + S3_1: + initial: true + states: + S3_1_1: + initial: true + transitions: + - target: S3_1_FinalState1 + 'on': + - pssm_T3_1_2_effect + S3_1_FinalState1: + final: true + transitions: + - event: done.state.S3_1 + target: Region3_FinalState1 + 'on': + - pssm_T3_2_effect + Region3_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_019.yaml b/tests/uml/pssm/cases/Transition/Transition_019.yaml new file mode 100644 index 00000000..592161e3 --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_019.yaml @@ -0,0 +1,71 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- join +expected_traces: +- S2.1(exit)::T2.2(effect)::S1.1(exit)::T1.2(effect)::T2.3(effect)::T1.3(effect) +- S1.1(exit)::T1.2(effect)::S2.1(exit)::T2.2(effect)::T1.3(effect)::T2.3(effect) +- S2.1(exit)::S1.1(exit)::T1.2(effect)::T2.2(effect)::T1.3(effect)::T2.3(effect) +- S1.1(exit)::S2.1(exit)::T1.2(effect)::T2.2(effect)::T1.3(effect)::T2.3(effect) +- S2.1(exit)::S1.1(exit)::T2.2(effect)::T1.2(effect)::T2.3(effect)::T1.3(effect) +- S1.1(exit)::S2.1(exit)::T2.2(effect)::T1.2(effect)::T2.3(effect)::T1.3(effect) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_3_effect: + - T1.3(effect) + pssm_S2_1_exit: + - S2.1(exit) + pssm_T2_2_effect: + - T2.2(effect) + pssm_T2_3_effect: + - T2.3(effect) +statechart: + name: Transition_019 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - event: Continue + target: S1_2 + 'on': + - pssm_T1_2_effect + S1_2: + transitions: + - target: FinalState1 + 'on': + - pssm_T1_3_effect + S1_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - event: Continue + target: S2_2 + 'on': + - pssm_T2_2_effect + S2_2: + transitions: + - target: FinalState1 + 'on': + - pssm_T2_3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_020.yaml b/tests/uml/pssm/cases/Transition/Transition_020.yaml new file mode 100644 index 00000000..5e7152e5 --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_020.yaml @@ -0,0 +1,38 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- S1(entry)::T4(effect) +stimulus: +- event: Start +- event: Continue +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) +statechart: + name: Transition_020 + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + transitions: + - event: Continue + target: end + 'on': + - pssm_T3_effect + - target: end + 'on': + - pssm_T4_effect + FinalState1: + final: true + end: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Transition/Transition_022.yaml b/tests/uml/pssm/cases/Transition/Transition_022.yaml new file mode 100644 index 00000000..13b197c3 --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_022.yaml @@ -0,0 +1,32 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: [] +expected_traces: +- T3::T3::T3::T3::T3 +stimulus: +- event: Start +behaviors: + pssm_T3_effect: + - T3 +statechart: + name: Transition_022 + datamodel: + count: '0' + states: + Incrementing: + transitions: + - target: FS1 + cond: count == 5 + - target: Incrementing + cond: count < 5 + 'on': + - assign: + location: count + expr: count + 1 + - pssm_T3_effect + FS1: + final: true + Waiting: + initial: true + transitions: + - event: Start + target: Incrementing diff --git a/tests/uml/pssm/cases/Transition/Transition_023.yaml b/tests/uml/pssm/cases/Transition/Transition_023.yaml new file mode 100644 index 00000000..e0b0bd73 --- /dev/null +++ b/tests/uml/pssm/cases/Transition/Transition_023.yaml @@ -0,0 +1,123 @@ +# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. +requires: +- entry_point +- exit_point +- junction +expected_traces: +- S1(entry)::S1.1(entry)::S1.1(exit)::S1(exit)::T1.3(effect)::S2(entry)::S2.1(entry)::S2.3(entry)::T2.1(effect)[in=5]::S2(exit)::T2.2(effect)[in=5] +- S1(entry)::S1.1(entry)::S1.1(exit)::S1(exit)::T1.3(effect)::S2(entry)::S2.3(entry)::S2.1(entry)::T2.1(effect)[in=5]::S2(exit)::T2.2(effect)[in=5] +stimulus: +- event: Start +- event: Continue +- event: IntegerData + kwargs: + value: 20 +- event: IntegerData + kwargs: + value: 5 +behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_3_effect: + - T1.3(effect) + pssm_T1_1_effect: + - T1.1(effect) + pssm_S2_entry: + - S2(entry) + pssm_S2_exit: + - S2(exit) + pssm_S2_2_entry: + - S2.2(entry) + pssm_S2_1_entry: + - S2.1(entry) + pssm_T2_1_effect: + - T2.1(effect)[in={value}] + pssm_T2_3_effect: + - T2.3(effect)[in={value}] + pssm_T2_2_effect: + - T2.2(effect)[in={value}] + pssm_S2_3_entry: + - S2.3(entry) +statechart: + name: Transition_023 + states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - target: S1 + cond: 'False' + - event: Continue + target: S2_3 S2_1 + 'on': + - pssm_T1_3_effect + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + FinalState1: + final: true + S2: + parallel: true + enter: + - pssm_S2_entry + exit: + - pssm_S2_exit + states: + S2_Region1: + states: + S2_2: + enter: + - pssm_S2_2_entry + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + S2_1: + enter: + - pssm_S2_1_entry + transitions: + - event: IntegerData + target: S2_2 + cond: value==10 + 'on': + - pssm_T2_1_effect + - pssm_T2_3_effect + - event: IntegerData + target: end + cond: value == 5 + 'on': + - pssm_T2_1_effect + - pssm_T2_2_effect + S2_Region2: + states: + S2_3: + enter: + - pssm_S2_3_entry + transitions: + - target: Region2_FinalState1 + Region2_FinalState1: + final: true + end: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/conftest.py b/tests/uml/pssm/conftest.py new file mode 100644 index 00000000..90bba79f --- /dev/null +++ b/tests/uml/pssm/conftest.py @@ -0,0 +1,145 @@ +from pathlib import Path + +import pytest + +CASES_DIR = Path(__file__).parent / "cases" + +# Reason codes come from the UML/PSSM plan tracked in #692: `conflict:K` (UML and the +# library disagree by design), `bug:B` (library bug), `requires:` (no native +# spelling yet), `suite-defect:`, `unclassified`. A reason lists every blocker. +# `lowered:` in LOWERED marks a pass that relies on the converter's lowering. +XFAIL_BOTH = { + "Behavior_003-B": "requires:do_activity_accept: doActivity waits for an event", + "Behavior_004": "requires:do_activity_accept: doActivity waits for an event", + "Choice_005": "requires:choice, requires:junction: guards with side effects", + "Deferred_001": "requires:defer: deferred event is not recalled", + "Deferred_003": "requires:defer: deferred event is not recalled", + "Deferred_004-A": "requires:defer: deferred event is not recalled", + "Deferred_004-B": "requires:defer: deferred event is not recalled", + "Deferred_005": "requires:defer: deferred event is not recalled", + "Deferred_006-A": "requires:do_activity_accept, requires:defer: doActivity waits for an event", + "Deferred_006-C": "requires:do_activity_accept, requires:defer: doActivity waits for an event", + "Deferred_007": "requires:call_event, requires:defer: return value of a call", + "Entering_004": "conflict:K13: region without initial gets a default entry", + "Entering_009": "requires:entry_point: entry point effect runs after the state entry", + "Entry_002-C": "requires:entry_point: entry point effect runs after the state entry", + "Event_019-D": "requires:call_event: return value of a call", + "Event_019-E": "requires:call_event: out parameters of a call", + "Exit_001": "requires:exit_point: exit point effect runs before the state exit", + "Exit_002": "requires:exit_point: exit points of orthogonal regions", + "Exit_003": "requires:exit_point: exit point effect runs before the state exit", + "Exiting_004": "requires:exit_point: exit point effect runs before the state exit", + "Fork_002": "requires:fork: fork branch effects interleave with entries", + "History_001-A": "bug:B2: effect into a restored history runs twice", + "History_002-A": "bug:B2: effect into a restored history runs twice", + "History_002-B": ( + "bug:B2, unclassified: effect into a restored history runs twice; completions of " + "two regions share one microstep" + ), + "History_002-C": "bug:B1: history without stored value nor default empties the config", + "History_002-D": "conflict:K10: history restores a final state, completion loops", + "Join_001": "requires:join: join effects run after all exits", + "Join_002": "requires:join: join effects run after all exits", + "Join_003": "requires:join: join guard evaluated once per incoming transition", + "Junction_002": "requires:junction: no branch enabled", + "Junction_004": "requires:junction: initial junction picks a branch statically", + "Junction_005": "requires:junction: effect and entry order", + "TransitionExecutionAlgorithm": ( + "requires:exit_point, requires:entry_point: exit point effect order" + ), + "Standalone_002": ( + "requires:entry_point, requires:exit_point, requires:junction: entry point re-entry loops" + ), + "Standalone_003": "requires:call_event: out parameters of a call", + "Terminate_001": "requires:terminate: terminate runs no exit behaviors", + "Terminate_002": ( + "requires:terminate, requires:do_activity_accept: terminate runs no exit behaviors" + ), + "Transition_011-B": "requires:entry_point: entry point effect runs after the state entry", + "Transition_011-C": "conflict:K13: container re-entered with default entry", + "Transition_011-D": "requires:exit_point: exit point effect order", + "Transition_011-E": ( + "requires:entry_point, requires:exit_point: entry and exit points on the same state" + ), + "Transition_017": ( + "conflict:K2, conflict:K14: composite completion does not wait for its doActivity, " + "which never starts" + ), + "Transition_019": "requires:join: join effects run after all exits", + "Transition_023": ( + "requires:junction, requires:entry_point, requires:exit_point: junction effect runs " + "after the exits" + ), +} +LOWERED = { + "Behavior_003-A": "lowered:do_activity_accept: doActivity parked by the harness", + "Choice_001": "lowered:choice: flattened into guarded transitions", + "Choice_002": "lowered:choice: flattened into guarded transitions", + "Choice_003": "lowered:choice: flattened into guarded transitions", + "Choice_004": "lowered:choice: flattened into guarded transitions", + "Deferred_002": "lowered:defer: the trace does not depend on the deferral", + "Deferred_006-B": ( + "lowered:defer, lowered:do_activity_accept: the trace does not depend on the deferral" + ), + "Entry_002-A": "lowered:entry_point: flattened into transitions to the inner targets", + "Entry_002-B": "lowered:entry_point: flattened into transitions to the inner targets", + "Entry_002-D": "lowered:entry_point: flattened into transitions to the inner targets", + "Entry_002-E": "lowered:entry_point: flattened into transitions to the inner targets", + "Entry_002-F": "lowered:entry_point: flattened into transitions to the inner targets", + "Exiting_002": "lowered:do_activity_accept: doActivity parked by the harness", + "Fork_001": "lowered:fork, lowered:exit_point: one multi-target transition", + "Junction_001": "lowered:junction: flattened into guarded transitions", + "Junction_003": "lowered:junction: flattened into guarded transitions", + "Junction_006": ( + "lowered:junction, lowered:entry_point, lowered:exit_point: " + "flattened into guarded transitions" + ), + "Redefinition_001": "lowered:redefinition: merged into one machine by the converter", + "Redefinition_002": "lowered:redefinition: merged into one machine by the converter", + "Redefinition_003": "lowered:redefinition: merged into one machine by the converter", + "Redefinition_004": "lowered:redefinition: merged into one machine by the converter", + "Redefinition_005": "lowered:redefinition: merged into one machine by the converter", + "Redefinition_006": ( + "lowered:redefinition, lowered:defer: merged into one machine by the converter" + ), + "Standalone_001": ( + "lowered:choice, lowered:entry_point, lowered:exit_point: " + "flattened into guarded transitions" + ), + "Terminate_003": "lowered:terminate: mapped to a top-level final state", +} +"""Cases that pass only because the converter lowers a construct the library lacks. + +They are not marked: they guard against regressions like any passing case, but they do not +show native support. When a construct gets a native spelling, the converter stops lowering +it and each of these cases is reclassified. +""" +XFAIL_SYNC_ONLY: dict[str, str] = {} +XFAIL_ASYNC_ONLY: dict[str, str] = {} + +XFAIL_SYNC = {**XFAIL_BOTH, **XFAIL_SYNC_ONLY} +XFAIL_ASYNC = {**XFAIL_BOTH, **XFAIL_ASYNC_ONLY} + + +CASE_TIMEOUT_S = 30 + + +def case_marks(case_id: str, is_async: bool) -> "list[pytest.MarkDecorator]": + marks = [pytest.mark.timeout(CASE_TIMEOUT_S)] + xfail = XFAIL_ASYNC if is_async else XFAIL_SYNC + if case_id in xfail: + marks.append(pytest.mark.xfail(reason=xfail[case_id])) + return marks + + +def pytest_generate_tests(metafunc): + if "pssm_case" not in metafunc.fixturenames: + return + is_async = "async" in metafunc.function.__name__ + metafunc.parametrize( + "pssm_case", + [ + pytest.param(path, id=path.stem, marks=case_marks(path.stem, is_async)) + for path in sorted(CASES_DIR.glob("*/*.yaml")) + ], + ) diff --git a/tests/uml/pssm/convert.py b/tests/uml/pssm/convert.py new file mode 100644 index 00000000..89032e1f --- /dev/null +++ b/tests/uml/pssm/convert.py @@ -0,0 +1,1299 @@ +"""Convert the OMG PSSM 1.0 test suite XMI into native YAML cases. + +Usage:: + + uv run python -m tests.uml.pssm.convert --xmi PSSM_TestSuite.xmi --out tests/uml/pssm/cases + +``--xmi`` defaults to ``$PSSM_XMI``. The file must match :data:`XMI_SHA256`. + +Behaviors are read from the compiled activities, never from their Alf text. The only Alf the +converter reads is the body of an opaque guard, which wins over the guard's compiled behavior. +See ``README.md`` for the case format. +""" + +import argparse +import ast +import hashlib +import os +import re +import sys +import xml.etree.ElementTree as ET +from collections import defaultdict +from dataclasses import dataclass +from dataclasses import field +from pathlib import Path +from typing import Any + +import yaml + +XMI_URL = "https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi" +XMI_SHA256 = "c355b249c356774377a46b60345019d827af1ce417bde88e533aa5f39206ae07" +HEADER = ( + "# Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite " + f"(ptc/18-11-06, {XMI_URL}). Do not edit.\n" +) + +HERE = Path(__file__).parent +OVERLAYS_DIR = HERE / "overlays" + +_XMI = "{http://www.omg.org/spec/XMI/20131001}" +_PASS_THROUGH = {"junction", "choice", "entryPoint", "exitPoint", "join"} +_HISTORY = {"deepHistory": "deep", "shallowHistory": "shallow"} +_REQUIRES_BY_KIND = { + "junction": "junction", + "choice": "choice", + "join": "join", + "terminate": "terminate", + "entryPoint": "entry_point", + "exitPoint": "exit_point", +} +_SCAFFOLD = { + "InitialNode", + "ActivityFinalNode", + "ForkNode", + "MergeNode", + "JoinNode", + "DecisionNode", + "ReadSelfAction", + "ValueSpecificationAction", + "ReadStructuralFeatureAction", + "TestIdentityAction", + "ActivityParameterNode", +} +_OVERLAY_KEYS = {"behaviors", "stimulus"} +_STATE_KEY_ORDER = ( + "initial", + "final", + "parallel", + "enter", + "exit", + "states", + "history", + "transitions", +) +_TRANSITION_KEY_ORDER = ("event", "target", "internal", "initial", "cond", "on") + + +class ConversionError(Exception): + """The XMI holds something the converter cannot translate and no overlay covers.""" + + +class Unsupported(Exception): + """A behavior uses an action the symbolic evaluator does not model.""" + + +@dataclass(frozen=True) +class Sym: + """Symbolic value produced while evaluating a compiled activity.""" + + kind: str + value: Any = None + + +SELF = Sym("self") + + +@dataclass +class Vertex: + element: ET.Element + name: str + kind: str + owner: "Region | None" + regions: "list[Region]" = field(default_factory=list) + connection_points: "list[Vertex]" = field(default_factory=list) + entry: "ET.Element | None" = None + exit: "ET.Element | None" = None + do_activity: "ET.Element | None" = None + defers: bool = False + native_id: str = "" + point_of: "Vertex | None" = None + + +@dataclass +class Region: + element: ET.Element + name: str + owner: "Vertex | None" + vertices: "list[Vertex]" = field(default_factory=list) + + +@dataclass +class Transition: + element: ET.Element + name: str + source: Vertex + target: Vertex + kind: str + triggers: list + guard: "ET.Element | None" + effect: "ET.Element | None" + + +@dataclass +class Machine: + regions: "list[Region]" + transitions: "list[Transition]" + points: "list[Vertex]" = field(default_factory=list) + redefined: bool = False + + +class Xmi: + """Index over the XMI tree: ids, parents and incoming activity edges.""" + + def __init__(self, root: ET.Element): + self.root = root + self.ids: dict[str, ET.Element] = {} + self.parent: dict[ET.Element, ET.Element] = {} + self.order: dict[ET.Element, int] = {} + self.incoming: dict[str, list[str]] = defaultdict(list) + for index, element in enumerate(root.iter()): + self.order[element] = index + xmi_id = element.get(_XMI + "id") + if xmi_id: + self.ids[xmi_id] = element + for child in element: + self.parent[child] = element + if element.tag == "edge": + self.incoming[element.get("target", "")].append(element.get("source", "")) + + @staticmethod + def type(element: "ET.Element | None") -> str: + if element is None: + return "" + return (element.get(_XMI + "type") or "").removeprefix("uml:") + + @staticmethod + def id(element: ET.Element) -> str: + return element.get(_XMI + "id") or "" + + @staticmethod + def child(element: ET.Element, tag: str) -> ET.Element: + found = element.find(tag) + if found is None: + raise ConversionError(f"{Xmi.id(element)} has no {tag}") + return found + + @staticmethod + def attr(element: ET.Element, name: str) -> str: + value = element.get(name) + if value is None: + raise ConversionError(f"{Xmi.id(element)} has no {name}") + return value + + def ref(self, element: "ET.Element | None", attr: str) -> "ET.Element | None": + refs = self.refs(element, attr) if element is not None else [] + return refs[0] if refs else None + + def required_ref(self, element: ET.Element, attr: str) -> ET.Element: + found = self.ref(element, attr) + if found is None: + raise ConversionError(f"{self.id(element)} has no {attr}") + return found + + def refs(self, element: ET.Element, attr: str) -> "list[ET.Element]": + found = [self.ids[x] for x in (element.get(attr) or "").split() if x in self.ids] + for child in element.findall(attr): + idref = child.get(_XMI + "idref") + if idref in self.ids: + found.append(self.ids[idref]) + return found + + def name_of(self, element: "ET.Element | None") -> str: + return (element.get("name") or "") if element is not None else "" + + +def sanitize(name: str) -> str: + ident = re.sub(r"\W", "_", name) + return ident if ident and not ident[0].isdigit() else f"_{ident}" + + +class ActivityEvaluator: + """Symbolic execution of compiled fUML activities. + + It collects ``trace`` calls in control-flow order and turns their ``segment`` argument + into a token template: literal text plus ``{name}`` placeholders for event data. + """ + + def __init__(self, xmi: Xmi): + self.x = xmi + self.reads: set[Sym] = set() + + def ordered_nodes(self, container: ET.Element) -> "list[ET.Element]": + nodes = [c for c in container if c.tag == "node"] + direct = {self.x.id(n): n for n in nodes} + + def lift(element: "ET.Element | None") -> "ET.Element | None": + while element is not None and self.x.id(element) not in direct: + element = self.x.parent.get(element) + return element + + successors: dict[str, set[str]] = defaultdict(set) + indegree: dict[str, int] = defaultdict(int) + for edge in container.iter("edge"): + src = lift(self.x.ids.get(edge.get("source", ""))) + dst = lift(self.x.ids.get(edge.get("target", ""))) + if src is None or dst is None or src is dst: + continue + src_id, dst_id = self.x.id(src), self.x.id(dst) + if dst_id not in successors[src_id]: + successors[src_id].add(dst_id) + indegree[dst_id] += 1 + ready = [n for n in nodes if indegree[self.x.id(n)] == 0] + result = [] + while ready: + ready.sort(key=self.x.order.__getitem__) + node = ready.pop(0) + result.append(node) + for nxt in successors[self.x.id(node)]: + indegree[nxt] -= 1 + if indegree[nxt] == 0: + ready.append(direct[nxt]) + if len(result) != len(nodes): + raise Unsupported(f"cyclic flow in {self.x.name_of(container)!r}") + return result + + def run(self, activity: ET.Element) -> list: + """Return the steps of a behavior: ``("trace", template)``, ``("send", signal)``...""" + env = { + self.x.id(p): Sym("param", p.get("name")) + for p in activity.findall("ownedParameter") + if p.get("direction", "in") in ("in", "inout") + } + steps: list = [] + self._execute(activity, env, steps) + return steps + + def _execute(self, container: ET.Element, env: "dict[str, Sym]", steps: list) -> None: # noqa: C901 + for node in self.ordered_nodes(container): + kind = self.x.type(node) + if kind in _SCAFFOLD: + continue + if kind == "StructuredActivityNode": + self._execute(node, env, steps) + elif kind == "CallOperationAction": + operation = self.x.ref(node, "operation") + name = self.x.name_of(operation) + if name != "trace": + steps.append(("logic", f"call {name}")) + continue + (segment,) = node.findall("argument") + steps.append(("trace", self.template(self.value(segment, env)))) + elif kind == "CallBehaviorAction": + behavior = self.x.ref(node, "behavior") + if behavior is None: + continue + if self.x.name_of(behavior) == "formatParameterValue": + continue + params = [ + p + for p in behavior.findall("ownedParameter") + if p.get("direction", "in") in ("in", "inout") + ] + args = node.findall("argument") + inner = { + self.x.id(p): self.value(a, env) for p, a in zip(params, args, strict=True) + } + self._execute(behavior, inner, steps) + elif kind == "SendSignalAction": + steps.append(("send", self.x.name_of(self.x.ref(node, "signal")))) + elif kind == "AcceptEventAction": + events = [self.x.required_ref(t, "event") for t in node.findall("trigger")] + signals = [self.x.name_of(self.x.ref(e, "signal")) for e in events] + steps.append(("accept", " ".join(signals))) + else: + steps.append(("logic", kind)) + + def value(self, element: ET.Element, env: "dict[str, Sym]") -> Sym: # noqa: C901 + sources = self.x.incoming.get(self.x.id(element)) + if sources: + return self.value(self.x.ids[sources[0]], env) + kind = self.x.type(element) + if kind == "ActivityParameterNode": + return env[self.x.attr(element, "parameter")] + action = self.x.parent[element] + action_kind = self.x.type(action) + if action_kind == "ValueSpecificationAction": + return literal(action.find("value")) + if action_kind == "ReadSelfAction": + return SELF + if action_kind == "ReadStructuralFeatureAction": + owner = self.value(self.x.child(action, "object"), env) + feature = self.x.name_of(self.x.ref(action, "structuralFeature")) + if owner == SELF: + self.reads.add(Sym("attr", feature)) + return Sym("attr", feature) + if owner.kind == "param": + self.reads.add(Sym("kw", feature)) + return Sym("kw", feature) + raise Unsupported(f"read of {feature!r} on {owner}") + if action_kind == "TestIdentityAction": + first = self.value(self.x.child(action, "first"), env) + second = self.value(self.x.child(action, "second"), env) + return Sym("expr", f"{self.expr(first)} == {self.expr(second)}") + if ( + action_kind == "CallBehaviorAction" + and self.x.name_of(self.x.ref(action, "behavior")) == "formatParameterValue" + ): + return self._format_parameter_value(action, env) + if action_kind == "CallBehaviorAction" and self.x.ref(action, "behavior") is None: + href = self.x.child(action, "behavior").get("href", "") + function = href.rsplit("-", 1)[-1] + args = [self.value(a, env) for a in action.findall("argument")] + if function == "Concat": + return Sym("str", self.template(args[0]) + self.template(args[1])) + if function == "ToString": + return Sym("str", self.template(args[0])) + raise Unsupported(f"library function {function}") + raise Unsupported(f"value from {action_kind}") + + def _format_parameter_value(self, action: ET.Element, env: "dict[str, Sym]") -> Sym: + """Model of the suite's ``Util::Tracing::formatParameterValue`` helper.""" + direction, value = (self.value(a, env) for a in action.findall("argument")) + if direction.kind != "lit" or direction.value not in (None, True, False): + raise Unsupported("formatParameterValue with a computed direction") + prefix = "[out=" if direction.value is False else "[in=" + return Sym("str", prefix + self.template(value) + "]") + + @staticmethod + def template(sym: Sym) -> str: + if sym.kind == "lit": + value = sym.value + if isinstance(value, bool): + return "true" if value else "false" + return str(value).replace("{", "{{").replace("}", "}}") + if sym.kind in ("kw", "param"): + return "{" + str(sym.value) + "}" + if sym.kind == "str": + return str(sym.value) + raise Unsupported(f"cannot format {sym}") + + @staticmethod + def expr(sym: Sym) -> str: + if sym.kind == "lit": + return repr(sym.value) + if sym.kind in ("kw", "attr", "expr"): + return str(sym.value) + raise Unsupported(f"cannot express {sym}") + + +def literal(spec: "ET.Element | None") -> Sym: + kind = Xmi.type(spec) if spec is not None else "LiteralNull" + raw = spec.get("value") if spec is not None else None + if kind == "LiteralString": + return Sym("lit", raw or "") + if kind == "LiteralInteger": + return Sym("lit", int(raw or 0)) + if kind == "LiteralBoolean": + return Sym("lit", raw == "true") + if kind == "LiteralNull": + return Sym("lit", None) + raise Unsupported(f"literal {kind}") + + +class Guards: + """Translate UML guards into native ``cond`` expressions.""" + + _ALF = [ + (re.compile(r"\btrue\b"), "True"), + (re.compile(r"\bfalse\b"), "False"), + (re.compile(r"&&"), " and "), + (re.compile(r"\|\|"), " or "), + (re.compile(r"!(?!=)"), " not "), + ] + + def __init__(self, xmi: Xmi, evaluator: ActivityEvaluator): + self.x = xmi + self.evaluator = evaluator + self.attrs: set[str] = set() + self.kwargs: set[str] = set() + + def translate(self, constraint: "ET.Element | None") -> "str | None": + """Return a Python expression, ``"else"``, or ``None`` when there is no guard.""" + if constraint is None: + return None + spec = self.x.child(constraint, "specification") + kind = Xmi.type(spec) + if kind == "LiteralBoolean": + return "True" if spec.get("value") == "true" else "False" + if kind == "Expression" and spec.get("symbol") == "else": + return "else" + if kind == "OpaqueExpression": + body = spec.findtext("body") + if body is not None: + return self._from_alf(body) + behavior = self.x.ref(spec, "behavior") + if behavior is not None: + return self._from_behavior(behavior) + raise ConversionError(f"unsupported guard {kind} on {self.x.id(constraint)}") + + def _from_alf(self, body: str) -> str: + def attr(match: re.Match) -> str: + self.attrs.add(match.group(1)) + return str(match.group(1)) + + def kwarg(match: re.Match) -> str: + self.kwargs.add(match.group(2)) + return str(match.group(2)) + + expr = re.sub(r"\bthis\.(\w+)", attr, body.strip()) + expr = re.sub(r"\b(evt|data|sig)\.(\w+)", kwarg, expr) + for pattern, replacement in self._ALF: + expr = pattern.sub(replacement, expr) + expr = " ".join(expr.split()) + try: + ast.parse(expr, mode="eval") + except SyntaxError as err: + raise ConversionError(f"cannot translate guard body {body!r}") from err + return expr + + def _from_behavior(self, behavior: ET.Element) -> str: + returns = [ + node + for node in behavior.iter("node") + if Xmi.type(node) == "ActivityParameterNode" + and self.x.required_ref(node, "parameter").get("direction") == "return" + ] + env = { + self.x.id(p): Sym("param", p.get("name")) + for p in behavior.findall("ownedParameter") + if p.get("direction", "in") == "in" + } + self.evaluator.reads.clear() + expr = self.evaluator.expr(self.evaluator.value(returns[0], env)) + for read in self.evaluator.reads: + (self.attrs if read.kind == "attr" else self.kwargs).add(read.value) + return expr + + +class MachineReader: + """Read a (possibly redefined) UML state machine into the converter's tree.""" + + def __init__(self, xmi: Xmi): + self.x = xmi + self.by_id: dict[str, Vertex] = {} + self.regions: dict[str, Region] = {} + + def read(self, sm: ET.Element) -> Machine: + base = self._base_of(sm) + if base is None: + points = [self._vertex(p, None) for p in sm.findall("connectionPoint")] + regions = [self._region(r, None) for r in sm.findall("region")] + transitions = self._transitions(sm) + return Machine(regions=regions, transitions=transitions, points=points) + machine = self.read(base) + machine.redefined = True + for region_el in sm.findall("region"): + self._extend_region(region_el, None, machine.regions) + derived = self._transitions(sm) + inherited = {self.x.id(t.element): t for t in machine.transitions} + for transition in derived: + for redefined in self.x.refs(transition.element, "redefinedTransition"): + base_transition = inherited.pop(self.x.id(redefined)) + transition.triggers = base_transition.triggers + transition.triggers + if transition.guard is None: + transition.guard = base_transition.guard + if transition.effect is None: + transition.effect = base_transition.effect + machine.transitions = list(inherited.values()) + derived + return machine + + def _base_of(self, sm: ET.Element) -> "ET.Element | None": + for attr in ("redefinedBehavior", "extendedStateMachine"): + base = self.x.ref(sm, attr) + if base is not None and self.x.type(base) == "StateMachine": + return base + for region in sm.iter("region"): + extended = self.x.ref(region, "extendedRegion") + if extended is not None: + owner = extended + while self.x.type(owner) != "StateMachine": + owner = self.x.parent[owner] + if owner is not sm: + return owner + return None + + def _extend_region(self, region_el, owner, siblings) -> None: + extended = self.x.ref(region_el, "extendedRegion") + if extended is None: + siblings.append(self._region(region_el, owner)) + return + region = self.regions[self.x.id(extended)] + self.regions[self.x.id(region_el)] = region + for vertex_el in region_el.findall("subvertex"): + redefined = self.x.ref(vertex_el, "redefinedState") + name = vertex_el.get("name") + current = next( + ( + v + for v in region.vertices + if (redefined is not None and v.element is redefined) + or v.name.rstrip("'") == name.rstrip("'") + ), + None, + ) + if current is None: + region.vertices.append(self._vertex(vertex_el, region)) + continue + self.by_id[self.x.id(vertex_el)] = current + for attr in ("entry", "exit"): + behavior = vertex_el.find(attr) + if behavior is not None: + setattr(current, attr, behavior) + if vertex_el.find("doActivity") is not None: + current.do_activity = vertex_el.find("doActivity") + current.defers = current.defers or bool(vertex_el.findall("deferrableTrigger")) + for point in vertex_el.findall("connectionPoint"): + current.connection_points.append(self._vertex(point, None, current)) + for sub_el in vertex_el.findall("region"): + self._extend_region(sub_el, current, current.regions) + + def _region(self, element: ET.Element, owner: "Vertex | None") -> Region: + region = Region(element=element, name=element.get("name") or "", owner=owner) + self.regions[self.x.id(element)] = region + region.vertices = [self._vertex(v, region) for v in element.findall("subvertex")] + return region + + def _vertex( + self, element: ET.Element, owner: "Region | None", point_of: "Vertex | None" = None + ) -> Vertex: + kind = self.x.type(element) + if kind == "Pseudostate": + kind = element.get("kind", "initial") + elif kind == "FinalState": + kind = "final" + else: + kind = "state" + vertex = Vertex(element=element, name=element.get("name") or "", kind=kind, owner=owner) + self.by_id[self.x.id(element)] = vertex + if point_of is not None: + vertex.owner = point_of.owner + vertex.point_of = point_of + vertex.entry = element.find("entry") + vertex.exit = element.find("exit") + vertex.do_activity = element.find("doActivity") + vertex.defers = bool(element.findall("deferrableTrigger")) + vertex.regions = [self._region(r, vertex) for r in element.findall("region")] + vertex.connection_points = [ + self._vertex(p, owner, vertex) for p in element.findall("connectionPoint") + ] + return vertex + + def _transitions(self, sm: ET.Element) -> "list[Transition]": + result = [] + for element in sm.iter("transition"): + result.append( + Transition( + element=element, + name=element.get("name") or "", + source=self.by_id[self.x.attr(element, "source")], + target=self.by_id[self.x.attr(element, "target")], + kind=element.get("kind", "external"), + triggers=element.findall("trigger"), + guard=self.x.ref(element, "guard"), + effect=element.find("effect"), + ) + ) + return result + + +@dataclass +class CompoundPath: + """Transitions chained through pseudostates, from a state to its final targets.""" + + segments: "list[Transition]" + targets: "list[Vertex]" + + +class CaseBuilder: + """Build one case: native statechart, behaviors, stimulus and requirements.""" + + def __init__(self, xmi: Xmi, test_id: str, package: ET.Element, overlay: dict): + self.x = xmi + self.test_id = test_id + self.package = package + self.overlay_behaviors: dict = dict(overlay.get("behaviors") or {}) + self.used_overlays: set[str] = set() + self.evaluator = ActivityEvaluator(xmi) + self.guards = Guards(xmi, self.evaluator) + self.requires: set[str] = set() + self.behaviors: dict[str, list] = {} + self.effect_names: dict[int, str] = {} + self.null_attrs: set[str] = set() + self.root_finals: list[Vertex] = [] + self.outgoing: dict[int, list[Transition]] = defaultdict(list) + self.used_ids: set[str] = set() + + def target_class(self) -> ET.Element: + for element in self.package: + if self.x.type(element) == "StateMachine": + return element + behavior = self.x.ref(element, "classifierBehavior") + if behavior is not None and self.x.type(behavior) == "StateMachine": + return element + raise ConversionError(f"{self.test_id}: no state machine class") + + def build(self) -> dict: + target = self.target_class() + sm = target + if self.x.type(target) != "StateMachine": + sm = self.x.ref(target, "classifierBehavior") # type: ignore[assignment] + machine = MachineReader(self.x).read(sm) + if machine.redefined: + self.requires.add("redefinition") + self._name_vertices(machine) + for t in machine.transitions: + self.outgoing[id(t.source)].append(t) + document: dict = {"name": self.test_id} + datamodel = self._datamodel(target) + states = self._root_states(machine) + if datamodel: + document["datamodel"] = datamodel + document["states"] = canonical_states(states) + clash = self.guards.kwargs & (self.guards.attrs | set(datamodel)) + if clash: + raise ConversionError( + f"{self.test_id}: {sorted(clash)} would be both a datamodel name and an event " + "kwarg (bug B8 makes that ambiguous)" + ) + unused = set(self.overlay_behaviors) - self.used_overlays + if unused: + raise ConversionError(f"{self.test_id}: unused overlay entries {sorted(unused)}") + return document + + @staticmethod + def _qualified_names(machine: Machine) -> "list[tuple[Vertex, list[str]]]": + """Every vertex with its name path; regions count only where they are orthogonal.""" + paths: list[tuple[Vertex, list[str]]] = [(p, [p.name]) for p in machine.points] + + def walk(regions: "list[Region]", prefix: "list[str]") -> None: + many = len(regions) > 1 + for region in regions: + region_prefix = [*prefix, region.name] if many else prefix + for vertex in region.vertices: + if vertex.kind != "initial": + paths.append((vertex, [*region_prefix, vertex.name])) + for point in vertex.connection_points: + paths.append((point, [*region_prefix, vertex.name, point.name])) + walk(vertex.regions, [*region_prefix, vertex.name]) + + walk(machine.regions, []) + return paths + + def _name_vertices(self, machine: Machine) -> None: + """Give each vertex the shortest unique suffix of its name path as its native id.""" + paths = self._qualified_names(machine) + depth = {id(v): 1 for v, _ in paths} + full = {id(v): len(path) for v, path in paths} + while True: + names: dict[str, list[Vertex]] = defaultdict(list) + for vertex, path in paths: + names[sanitize("_".join(path[-depth[id(vertex)] :]))].append(vertex) + clashes = [vs for vs in names.values() if len(vs) > 1] + growable = [v for vs in clashes for v in vs if depth[id(v)] < full[id(v)]] + if not growable: + break + for vertex in growable: + depth[id(vertex)] += 1 + for name, vertices in names.items(): + for index, vertex in enumerate(vertices): + vertex.native_id = name if index == 0 else f"{name}_{index + 1}" + self.used_ids.add(vertex.native_id) + + def _unique(self, base: str) -> str: + name, counter = base, 2 + while name in self.used_ids: + name, counter = f"{base}_{counter}", counter + 1 + self.used_ids.add(name) + return name + + def _datamodel(self, target: ET.Element) -> dict: + datamodel: dict[str, str] = {} + for attribute in target.findall("ownedAttribute"): + primitive = attribute.find("type") + if primitive is None or "PrimitiveTypes" not in primitive.get("href", ""): + continue + name = self.x.attr(attribute, "name") + default = attribute.find("defaultValue") + if default is None: + self.null_attrs.add(name) + datamodel[name] = "None" + continue + datamodel[name] = repr(literal(default).value) + return datamodel + + def _root_states(self, machine: Machine) -> dict: + if len(machine.regions) == 1: + region = machine.regions[0] + states = self._region_states(region) + holder = {"states": states} + initial = self._initial_transitions(region, holder) + history = self._history(region) + if initial or history: + wrapper: dict = {"initial": True, "states": states} + if history: + wrapper["history"] = history + wrapper["transitions"] = initial + states = self._root_wrapper(wrapper) + else: + regions = self._regions_states(machine.regions, None) + states = self._root_wrapper({"initial": True, "parallel": True, "states": regions}) + for vertex in self.root_finals: + states[vertex.native_id] = {"final": True} + return states + + def _root_wrapper(self, wrapper: dict) -> dict: + """Wrap the top level in one state whose completion terminates the machine.""" + root_id, done_id = self._unique("root"), self._unique("root_done") + transitions = wrapper.setdefault("transitions", []) + transitions.append({"event": f"done.state.{root_id}", "target": done_id}) + return {root_id: wrapper, done_id: {"final": True}} + + def _regions_states(self, regions: "list[Region]", owner: "Vertex | None") -> dict: + result = {} + for region in regions: + prefix = owner.native_id if owner is not None else "root" + region_id = self._unique(f"{prefix}_{sanitize(region.name)}") + compound: dict = {"states": self._region_states(region)} + initial = self._initial_transitions(region, compound) + if initial: + compound["transitions"] = initial + history = self._history(region) + if history: + compound["history"] = history + result[region_id] = compound + return result + + def _region_states(self, region: Region) -> dict: + return { + vertex.native_id: self._state(vertex) + for vertex in region.vertices + if vertex.kind in ("state", "final") + } + + def _initial_transitions(self, region: Region, holder: dict) -> list: + initials = [v for v in region.vertices if v.kind == "initial"] + if not initials: + return [] + (transition,) = self.outgoing[id(initials[0])] + result = [] + for path in self._initial_paths(transition): + effects = self._effects(path) + targets = path.targets + direct = ( + len(targets) == 1 + and targets[0].native_id in holder["states"] + and targets[0].kind != "terminate" + ) + if direct and not effects and len(path.segments) == 1: + holder["states"][targets[0].native_id]["initial"] = True + continue + item = {"target": self._target(targets), "initial": True} + if effects: + item["on"] = effects + result.append(item) + return result + + def _initial_paths(self, transition: Transition) -> "list[CompoundPath]": + """Initial transitions take no guard: keep the first path not statically disabled.""" + paths = self._paths(transition) + if len(paths) == 1: + return paths + enabled = [ + path + for path in paths + if all(self.guards.translate(s.guard) != "False" for s in path.segments) + ] + return enabled[:1] + + def _state(self, vertex: Vertex) -> dict: + if vertex.kind == "final": + return {"final": True} + state: dict = {} + if vertex.defers: + self.requires.add("defer") + entry = self._behavior(vertex.entry, f"pssm_{vertex.native_id}_entry") + if entry: + state["enter"] = entry + exit_ = self._behavior(vertex.exit, f"pssm_{vertex.native_id}_exit") + if exit_: + state["exit"] = exit_ + if vertex.do_activity is not None: + self._do_activity(vertex) + transitions = [ + self._transition(path) for t in self.outgoing[id(vertex)] for path in self._paths(t) + ] + transitions = self._substates_into(state, vertex) + transitions + if transitions: + state["transitions"] = transitions + return state + + def _substates_into(self, state: dict, vertex: Vertex) -> list: + """Fill the substates of a composite state; return its initial transitions.""" + if len(vertex.regions) > 1: + state["parallel"] = True + state["states"] = self._regions_states(vertex.regions, vertex) + return [] + if not vertex.regions: + return [] + region = vertex.regions[0] + state["states"] = self._region_states(region) + history = self._history(region) + if history: + state["history"] = history + return self._initial_transitions(region, state) + + def _history(self, region: Region) -> dict: + result = {} + for vertex in region.vertices: + if vertex.kind not in _HISTORY: + continue + item: dict = {"type": _HISTORY[vertex.kind]} + defaults = [] + for t in self.outgoing[id(vertex)]: + for path in self._paths(t): + default: dict = {"target": self._target(path.targets)} + effects = self._effects(path) + if effects: + default["on"] = effects + defaults.append(default) + if defaults: + item["transitions"] = defaults + result[vertex.native_id] = item + return result + + def _paths(self, transition: Transition) -> "list[CompoundPath]": + target = transition.target + if target.kind in _PASS_THROUGH: + self.requires.add(_REQUIRES_BY_KIND[target.kind]) + branches = self.outgoing[id(target)] + if not branches and target.kind == "entryPoint" and target.point_of is not None: + return [CompoundPath([transition], [target.point_of])] + if not branches and target.kind == "exitPoint" and target.owner is None: + return [self._root_final(transition, target)] + if not branches: + raise ConversionError( + f"{self.test_id}: {target.kind} without outgoing transitions" + ) + regions = {id(b.target.owner) for b in branches} + if target.kind == "entryPoint" and len(regions) == len(branches) > 1: + return self._fork(transition, branches) + ordered = [b for b in branches if not self._is_else(b)] + [ + b for b in branches if self._is_else(b) + ] + return [ + CompoundPath([transition, *p.segments], p.targets) + for branch in ordered + for p in self._paths(branch) + ] + if target.kind == "fork": + branches = self.outgoing[id(target)] + if any(b.effect is not None for b in branches): + self.requires.add("fork") + return self._fork(transition, branches) + if target.kind == "terminate": + self.requires.add("terminate") + return [self._root_final(transition, target)] + return [CompoundPath([transition], [target])] + + def _root_final(self, transition: Transition, target: Vertex) -> CompoundPath: + if target not in self.root_finals: + self.root_finals.append(target) + return CompoundPath([transition], [target]) + + def _fork(self, transition: Transition, branches: "list[Transition]") -> "list[CompoundPath]": + combined = [CompoundPath([transition], [])] + for branch in branches: + combined = [ + CompoundPath(done.segments + path.segments, done.targets + path.targets) + for done in combined + for path in self._paths(branch) + ] + return combined + + def _is_else(self, transition: Transition) -> bool: + return self.guards.translate(transition.guard) == "else" + + def _target(self, targets: "list[Vertex]") -> str: + return " ".join(t.native_id for t in targets) + + def _effects(self, path: CompoundPath) -> list: + effects: list = [] + for segment in path.segments: + effects.extend(self._behavior(segment.effect, self._effect_name(segment))) + return effects + + def _effect_name(self, transition: Transition) -> str: + key = id(transition) + if key not in self.effect_names: + self.effect_names[key] = self._unique(f"pssm_{sanitize(transition.name)}_effect") + return self.effect_names[key] + + def _guard_into(self, item: dict, path: CompoundPath) -> None: + conds = [] + for segment in path.segments: + expr = self.guards.translate(segment.guard) + if expr not in (None, "else"): + conds.append(self._null_safe(expr)) + if conds: + item["cond"] = conds[0] if len(conds) == 1 else conds + + def _null_safe(self, expr: str) -> str: + """An Alf comparison with an empty operand is false; Python's would raise.""" + for name in sorted(self.null_attrs): + if re.search(rf"\b{name}\b", expr): + expr = f"{name} != None and ({expr})" + return expr + + def _transition(self, path: CompoundPath) -> dict: + first = path.segments[0] + item: dict = {} + events = [self._event(trigger) for trigger in first.triggers] + if events: + item["event"] = " ".join(events) + else: + completion = self._completion_event(first.source) + if completion: + item["event"] = completion + if first.kind != "internal" or len(path.segments) > 1: + item["target"] = self._target(path.targets) + if first.kind == "local" and len(path.segments) == 1: + item["internal"] = True + self._guard_into(item, path) + effects = self._effects(path) + if effects: + item["on"] = effects + return item + + def _completion_event(self, source: Vertex) -> "str | None": + if source.regions: + return f"done.state.{source.native_id}" + if source.do_activity is not None: + return f"done.invoke.{source.native_id}" + return None + + def _event(self, trigger: ET.Element) -> str: + event = self.x.required_ref(trigger, "event") + kind = self.x.type(event) + if kind == "SignalEvent": + return self.x.name_of(self.x.ref(event, "signal")) + if kind == "CallEvent": + operation = self.x.required_ref(event, "operation") + outputs = [ + p + for p in operation.findall("ownedParameter") + if p.get("direction") in ("out", "inout", "return") + ] + if outputs: + self.requires.add("call_event") + return self.x.name_of(operation) + raise ConversionError(f"{self.test_id}: unsupported trigger {kind}") + + def _overlay_steps(self, behavior: ET.Element) -> "list | None": + key = self.x.id(behavior) + if key not in self.overlay_behaviors: + return None + self.used_overlays.add(key) + return list(self.overlay_behaviors[key]) + + def _steps(self, behavior: ET.Element) -> list: + steps = self._overlay_steps(behavior) + if steps is not None: + return steps + try: + raw = self.evaluator.run(behavior) + except Unsupported as err: + raise ConversionError( + f"{self.test_id}: behavior {self.x.id(behavior)} needs an overlay ({err})" + ) from err + if any(kind == "send" and arg == "End" for kind, arg in raw): + return [] + logic = [f"{kind} {arg}" for kind, arg in raw if kind in ("logic", "send")] + if logic: + raise ConversionError( + f"{self.test_id}: behavior {self.x.id(behavior)} needs an overlay ({logic})" + ) + return [{"trace": arg} if kind == "trace" else {"accept": arg} for kind, arg in raw] + + def _behavior(self, behavior: "ET.Element | None", name: str) -> list: + """Callback refs and native actions for an entry, exit or effect behavior.""" + if behavior is None: + return [] + actions: list = [] + tokens: list = [] + for step in self._steps(behavior): + if "trace" in step: + tokens.append(step["trace"]) + elif "accept" in step: + raise ConversionError(f"{self.test_id}: accept outside a doActivity") + else: + actions.append(step) + if tokens: + self.behaviors[name] = tokens + actions.append(name) + return actions + + def _do_activity(self, vertex: Vertex) -> None: + items: list = [] + for step in self._steps(vertex.do_activity): # type: ignore[arg-type] + if "accept" in step: + self.requires.add("do_activity_accept") + items.append({"accept": step["accept"]}) + break + if "trace" not in step and "send" not in step: + raise ConversionError(f"{self.test_id}: doActivity step {step} unsupported") + items.append(step["trace"] if "trace" in step else step) + self.behaviors[f"on_invoke_{vertex.native_id}"] = items + + +class StimulusReader: + """Read the Tester classifier behavior into an ordered stimulus list.""" + + def __init__(self, xmi: Xmi, evaluator: ActivityEvaluator, test_id: str): + self.x = xmi + self.evaluator = evaluator + self.test_id = test_id + + def read(self, tester: ET.Element) -> list: + behavior = self.x.ref(tester, "classifierBehavior") + stimulus: list = [{"event": "Start"}] + if behavior is not None: + self._walk(behavior, stimulus) + return stimulus + + def _walk(self, container: ET.Element, stimulus: list) -> None: + for node in self.evaluator.ordered_nodes(container): + kind = self.x.type(node) + if kind == "StructuredActivityNode": + self._walk(node, stimulus) + elif kind == "SendSignalAction": + signal = self.x.required_ref(node, "signal") + item: dict = {"event": self.x.name_of(signal)} + kwargs = self._kwargs(node, self._attributes(signal)) + if kwargs: + item["kwargs"] = kwargs + stimulus.append(item) + elif kind == "CallOperationAction" and self._is_trace(node): + (segment,) = node.findall("argument") + sym = self.evaluator.value(segment, {}) + if sym.kind != "lit": + raise ConversionError(f"{self.test_id}: tester traces a computed value") + stimulus.append({"trace": sym.value}) + elif kind == "CallOperationAction": + operation = self.x.required_ref(node, "operation") + params = [ + p + for p in operation.findall("ownedParameter") + if p.get("direction", "in") in ("in", "inout") + ] + item = {"call": self.x.name_of(operation)} + kwargs = self._kwargs(node, params) + if kwargs: + item["kwargs"] = kwargs + stimulus.append(item) + elif kind in _SCAFFOLD or kind == "AcceptEventAction": + continue + else: + raise ConversionError(f"{self.test_id}: tester uses {kind}; add an overlay") + + def _is_trace(self, node: ET.Element) -> bool: + return self.x.name_of(self.x.ref(node, "operation")) == "trace" + + def _attributes(self, signal: ET.Element) -> "list[ET.Element]": + inherited = [] + for generalization in signal.findall("generalization"): + general = self.x.ref(generalization, "general") + if general is not None: + inherited.extend(self._attributes(general)) + return inherited + signal.findall("ownedAttribute") + + def _kwargs(self, node: ET.Element, names: "list[ET.Element]") -> dict: + kwargs = {} + for param, arg in zip(names, node.findall("argument"), strict=True): + sym = self.evaluator.value(arg, {}) + if sym.kind != "lit": + raise ConversionError(f"{self.test_id}: non-literal stimulus argument") + kwargs[param.get("name")] = sym.value + return kwargs + + +class Suite: + """The whole test suite: test packages, oracle and conversion.""" + + def __init__(self, root: ET.Element): + self.x = Xmi(root) + self.evaluator = ActivityEvaluator(self.x) + model = next(e for e in root if Xmi.type(e) == "Model") + self.tests: list[tuple[str, str, ET.Element]] = [] + for category in model: + if Xmi.type(category) != "Package" or category.get("name") == "Util": + continue + for package in category: + if Xmi.type(package) == "Package": + cat, num = self.x.attr(category, "name"), self.x.attr(package, "name") + test_id = num if cat == "Other" else f"{cat}_{num}" + self.tests.append((cat, test_id, package)) + self.oracle = self._oracle() + + def _test_of(self, element: ET.Element) -> "str | None": + packages = {id(p): tid for _, tid, p in self.tests} + while element is not None: + if id(element) in packages: + return packages[id(element)] + element = self.x.parent.get(element) # type: ignore[assignment] + return None + + def _origin_classifier(self, pin: ET.Element) -> "ET.Element | None": + element: "ET.Element | None" = pin + while element is not None: + sources = self.x.incoming.get(self.x.id(element)) + if sources: + element = self.x.ids[sources[0]] + continue + action = self.x.parent.get(element) + kind = self.x.type(action) + if action is None: + return None + if kind == "CreateObjectAction": + return self.x.ref(action, "classifier") + if kind == "CallOperationAction": + element = action.find("target") + elif kind in ("ClearStructuralFeatureAction", "AddStructuralFeatureValueAction"): + element = action.find("object") + else: + return None + return None + + def _oracle(self) -> "dict[str, list[str]]": + oracle: dict[str, list[str]] = defaultdict(list) + for activity in self.x.root.iter(): + if self.x.type(activity) != "Activity": + continue + if not (activity.get("name") or "").endswith("Tests"): + continue + for write in activity.iter("node"): + if self.x.type(write) != "AddStructuralFeatureValueAction": + continue + feature = self.x.ref(write, "structuralFeature") + if self.x.name_of(feature) != "expectedTraces": + continue + statement = write + while self.x.type(statement) != "StructuredActivityNode" or not re.match( + r"\d+:", statement.get("name") or "" + ): + statement = self.x.parent[statement] + values = [ + self.x.child(v, "value").get("value") or "" + for v in statement.iter("node") + if self.x.type(v) == "ValueSpecificationAction" + and Xmi.type(v.find("value")) == "LiteralString" + ] + classifier = self._origin_classifier(self.x.child(write, "object")) + test_id = self._test_of(classifier) if classifier is not None else None + if test_id is None or len(values) != 1: + raise ConversionError(f"cannot map expected trace in {statement.get('name')}") + oracle[test_id].append(values[0]) + return oracle + + def convert(self, test_id: str, package: ET.Element, overlay: dict) -> dict: + builder = CaseBuilder(self.x, test_id, package, overlay) + statechart = builder.build() + if "stimulus" in overlay: + stimulus = overlay["stimulus"] + else: + tester = next( + c for c in package if Xmi.type(c) == "Class" and "Tester" in (c.get("name") or "") + ) + stimulus = StimulusReader(self.x, self.evaluator, test_id).read(tester) + if any("trace_result" in s for s in stimulus): + builder.requires.add("call_event") + if test_id not in self.oracle: + raise ConversionError(f"{test_id}: no expected traces") + return { + "requires": sorted(builder.requires), + "expected_traces": self.oracle[test_id], + "stimulus": stimulus, + "behaviors": builder.behaviors, + "statechart": statechart, + } + + +def canonical_states(states: dict) -> dict: + """Order state and transition keys the same way in every case.""" + result = {} + for state_id, state in states.items(): + ordered = {key: state[key] for key in _STATE_KEY_ORDER if key in state} + if "states" in ordered: + ordered["states"] = canonical_states(ordered["states"]) + if "transitions" in ordered: + ordered["transitions"] = [ + {key: t[key] for key in _TRANSITION_KEY_ORDER if key in t} + for t in ordered["transitions"] + ] + result[state_id] = ordered + return result + + +def load_overlay(test_id: str, overlays_dir: Path) -> dict: + path = overlays_dir / f"{test_id}.yaml" + if not path.exists(): + return {} + overlay = yaml.safe_load(path.read_text()) or {} + unknown = set(overlay) - _OVERLAY_KEYS + if unknown: + raise ConversionError(f"{path.name}: unknown overlay keys {sorted(unknown)}") + return overlay + + +def dump_case(case: dict) -> str: + return HEADER + str( + yaml.safe_dump( + case, sort_keys=False, allow_unicode=True, default_flow_style=False, width=1000 + ) + ) + + +def verify_sha256(path: Path) -> None: + digest = hashlib.sha256(path.read_bytes()).hexdigest() + if digest != XMI_SHA256: + raise ConversionError(f"{path}: sha256 {digest} does not match {XMI_SHA256}") + + +def convert(xmi_path: Path, out_dir: Path, overlays_dir: Path = OVERLAYS_DIR) -> "list[Path]": + """Write one YAML case per PSSM test under ``out_dir`` and return the written paths.""" + verify_sha256(xmi_path) + suite = Suite(ET.parse(xmi_path).getroot()) + known = {tid for _, tid, _ in suite.tests} + stray = {p.stem for p in overlays_dir.glob("*.yaml")} - known + if stray: + raise ConversionError(f"overlays for unknown tests: {sorted(stray)}") + dumped = { + out_dir / category / f"{test_id}.yaml": dump_case( + suite.convert(test_id, package, load_overlay(test_id, overlays_dir)) + ) + for category, test_id, package in suite.tests + } + for stale in out_dir.glob("*/*.yaml"): + if stale.read_text().startswith(HEADER): + stale.unlink() + for path, text in dumped.items(): + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(text) + return list(dumped) + + +def main(argv: "list[str] | None" = None) -> int: + parser = argparse.ArgumentParser( + prog="python -m tests.uml.pssm.convert", description=__doc__.splitlines()[0] + ) + parser.add_argument("--xmi", default=os.environ.get("PSSM_XMI")) + parser.add_argument("--out", default=str(HERE / "cases")) + args = parser.parse_args(argv) + if not args.xmi: + parser.error("pass --xmi or set PSSM_XMI") + written = convert(Path(args.xmi), Path(args.out)) + print(f"wrote {len(written)} cases to {args.out}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tests/uml/pssm/overlays/Choice_001.yaml b/tests/uml/pssm/overlays/Choice_001.yaml new file mode 100644 index 00000000..1b871b29 --- /dev/null +++ b/tests/uml/pssm/overlays/Choice_001.yaml @@ -0,0 +1,8 @@ +# Hand-written overlay, applied by convert.py. Keys under `behaviors` are XMI element ids. +behaviors: + # Increment entry: calls `increment()`, which adds one to `value`. + _L02vQJ1GEeWN-6K8x1DQCg: + - assign: {location: value, expr: value + 1} + # T2 effect: calls `init()`, which resets `value`. + _jGunYJ1TEeW2k_GPtJ4ARg: + - assign: {location: value, expr: "0"} diff --git a/tests/uml/pssm/overlays/Deferred_005.yaml b/tests/uml/pssm/overlays/Deferred_005.yaml new file mode 100644 index 00000000..c17e3190 --- /dev/null +++ b/tests/uml/pssm/overlays/Deferred_005.yaml @@ -0,0 +1,5 @@ +# Hand-written overlay, applied by convert.py. Keys under `behaviors` are XMI element ids. +behaviors: + # S1 exit: sends Pending to the machine itself. + _5_ZbYNvUEeWyw5VtdjRLxg: + - send: {event: Pending} diff --git a/tests/uml/pssm/overlays/Deferred_006-A.yaml b/tests/uml/pssm/overlays/Deferred_006-A.yaml new file mode 100644 index 00000000..ed12e7f4 --- /dev/null +++ b/tests/uml/pssm/overlays/Deferred_006-A.yaml @@ -0,0 +1,7 @@ +# Hand-written overlay, applied by convert.py. Keys under `behaviors` are XMI element ids. +behaviors: + # S2 doActivity: waits for AnotherSignal, traces, then sends Continue to the tester. The + # tester only uses Continue to pace its own sends, which the harness already serializes. + _cGeYIDF5EeaSSomG2vEyRw: + - accept: AnotherSignal + - trace: S2(doActivity-AnotherSignal) diff --git a/tests/uml/pssm/overlays/Deferred_007.yaml b/tests/uml/pssm/overlays/Deferred_007.yaml new file mode 100644 index 00000000..90638583 --- /dev/null +++ b/tests/uml/pssm/overlays/Deferred_007.yaml @@ -0,0 +1,15 @@ +# Hand-written overlay, applied by convert.py. Keys under `behaviors` are XMI element ids. +behaviors: + # S1 doActivity: sends Continue to the machine itself. + _Fn6OAOJvEeinLPG_TU9G7A: + - send: {event: Continue} + # T4 effect: traces the call argument and returns its negation as the call result. The + # returned value has no native spelling (requires: call_event), so only the input is traced. + _xnhI0FsoEeaFS4CWvlkpPA: + - trace: "T4(effect)[in={p1}]" +stimulus: +- event: Start +- call: op + kwargs: {p1: true} + trace_result: "[out={result}]" +- event: Continue diff --git a/tests/uml/pssm/overlays/Event_019-D.yaml b/tests/uml/pssm/overlays/Event_019-D.yaml new file mode 100644 index 00000000..5831f3a9 --- /dev/null +++ b/tests/uml/pssm/overlays/Event_019-D.yaml @@ -0,0 +1,7 @@ +# Hand-written overlay, applied by convert.py. +# The tester calls op() and traces its formatted return value, then sends Continue. +stimulus: +- event: Start +- call: op + trace_result: "[out={result}]" +- event: Continue diff --git a/tests/uml/pssm/overlays/Event_019-E.yaml b/tests/uml/pssm/overlays/Event_019-E.yaml new file mode 100644 index 00000000..6c8baee4 --- /dev/null +++ b/tests/uml/pssm/overlays/Event_019-E.yaml @@ -0,0 +1,17 @@ +# Hand-written overlay, applied by convert.py. Keys under `behaviors` are XMI element ids. +# The entries trace the call arguments and the out parameters they compute (left or right, +# left xor right). Out parameters have no native spelling (requires: call_event), so only +# the inputs are traced. +behaviors: + # S1.1 entry + _tPMlEC8zEeaN98tE43_yeQ: + - trace: "S1.1(entry)[in={left}][in={right}]" + # S2.1.1 entry + _upIzgC8zEeaN98tE43_yeQ: + - trace: "S2.1.1(entry)[in={left}][in={right}]" +stimulus: +- event: Start +- call: or + kwargs: {left: true, right: true} + trace_result: "[out={result}]" +- event: Continue diff --git a/tests/uml/pssm/overlays/Exiting_002.yaml b/tests/uml/pssm/overlays/Exiting_002.yaml new file mode 100644 index 00000000..a01eeb4d --- /dev/null +++ b/tests/uml/pssm/overlays/Exiting_002.yaml @@ -0,0 +1,6 @@ +# Hand-written overlay, applied by convert.py. Keys under `behaviors` are XMI element ids. +behaviors: + # S1 exit: traces, then sends AnotherSignal to the machine itself. + _spAokL_GEeW0ir_F-MEekg: + - trace: S1(exit) + - send: {event: AnotherSignal} diff --git a/tests/uml/pssm/overlays/Standalone_001.yaml b/tests/uml/pssm/overlays/Standalone_001.yaml new file mode 100644 index 00000000..e2dcc958 --- /dev/null +++ b/tests/uml/pssm/overlays/Standalone_001.yaml @@ -0,0 +1,14 @@ +# Hand-written overlay, applied by convert.py. Keys under `behaviors` are XMI element ids. +behaviors: + # T2 effect: calls `initializeBalance()`, then traces. + _XKvZwK2qEeW90vHDeaShcg: + - assign: {location: balance, expr: "150"} + - trace: T2(effect) + # S1.2 entry: calls `updateBalance(100)`, then traces. + _ucyrUK2nEeW90vHDeaShcg: + - assign: {location: balance, expr: balance - 100} + - trace: S1.2(entry) + # S1.3 entry: calls `updateBalance(50)`, then traces. + _7498kK2nEeW90vHDeaShcg: + - assign: {location: balance, expr: balance - 50} + - trace: S1.3(entry) diff --git a/tests/uml/pssm/overlays/Standalone_003.yaml b/tests/uml/pssm/overlays/Standalone_003.yaml new file mode 100644 index 00000000..402ba0cf --- /dev/null +++ b/tests/uml/pssm/overlays/Standalone_003.yaml @@ -0,0 +1,17 @@ +# Hand-written overlay, applied by convert.py. Keys under `behaviors` are XMI element ids. +# The entries trace the call arguments and the out parameters they compute (left or right, +# left xor right). Out parameters have no native spelling (requires: call_event), so only +# the inputs are traced. +behaviors: + # S1.1 entry + _uTGB21dtEeaPifyuLyWdzQ: + - trace: "S1.1(entry)[in={left}][in={right}]" + # S2.1.1 entry + _uTGC0FdtEeaPifyuLyWdzQ: + - trace: "S2.1.1(entry)[in={left}][in={right}]" +stimulus: +- event: Start +- call: or + kwargs: {left: true, right: true} + trace_result: "[out={result}]" +- event: Continue diff --git a/tests/uml/pssm/overlays/Transition_022.yaml b/tests/uml/pssm/overlays/Transition_022.yaml new file mode 100644 index 00000000..27e4f41d --- /dev/null +++ b/tests/uml/pssm/overlays/Transition_022.yaml @@ -0,0 +1,6 @@ +# Hand-written overlay, applied by convert.py. Keys under `behaviors` are XMI element ids. +behaviors: + # T3 effect: increments `count`, then traces. + _osIrMK0VEeSpztZJiSDinw: + - assign: {location: count, expr: count + 1} + - trace: T3 diff --git a/tests/uml/pssm/test_convert.py b/tests/uml/pssm/test_convert.py new file mode 100644 index 00000000..d25b9287 --- /dev/null +++ b/tests/uml/pssm/test_convert.py @@ -0,0 +1,316 @@ +"""Unit tests for the PSSM converter, on a tiny hand-written XMI shaped like the suite's.""" + +import xml.etree.ElementTree as ET + +import pytest +import yaml + +from . import convert as c +from .test_pssm_cases import TraceRecorder +from .test_pssm_cases import build_machine + +GUARD = "this.count == 0" + +XMI = """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Alf + {guard} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +""" + + +def make_suite(guard: str = GUARD) -> c.Suite: + return c.Suite(ET.fromstring(XMI.replace("{guard}", guard))) + + +def convert_demo(overlay: "dict | None" = None, guard: str = GUARD) -> dict: + suite = make_suite(guard) + ((_, test_id, package),) = suite.tests + return suite.convert(test_id, package, overlay or {}) + + +def test_discovers_tests_and_reads_the_oracle_from_compiled_activities(): + suite = make_suite() + + assert [(cat, tid) for cat, tid, _ in suite.tests] == [("Demo", "Demo_001")] + assert suite.oracle == {"Demo_001": ["S1(entry)"]} + + +def test_converts_a_case(): + case = convert_demo() + + assert case["requires"] == [] + assert case["stimulus"] == [{"event": "Start"}, {"event": "Data", "kwargs": {"value": 7}}] + assert case["behaviors"] == { + "pssm_S1_entry": ["S1(entry)"], + "pssm_T2_effect": ["T2(effect)[in={value}]"], + } + assert case["statechart"] == { + "name": "Demo_001", + "datamodel": {"count": "0"}, + "states": { + "wait": {"initial": True, "transitions": [{"event": "Start", "target": "S1"}]}, + "S1": { + "enter": ["pssm_S1_entry"], + "states": { + "S1_1": { + "initial": True, + "transitions": [{"target": "S1_FinalState1"}], + }, + "S1_FinalState1": {"final": True}, + }, + "transitions": [ + { + "event": "Data", + "target": "S2", + "cond": "count == 0", + "on": ["pssm_T2_effect"], + }, + {"event": "done.state.S1", "target": "FinalState1"}, + ], + }, + "S2": {"transitions": [{"target": "FinalState1"}]}, + "FinalState1": {"final": True}, + }, + } + + +def test_converted_case_runs_on_the_harness(): + case = yaml.safe_load(c.dump_case(convert_demo())) + recorder = TraceRecorder(case["behaviors"], is_async=False) + sm = build_machine(case, recorder) + + for item in case["stimulus"]: + sm.send(item["event"], **item.get("kwargs", {})) + + assert "::".join(recorder.trace) in case["expected_traces"] + + +def test_dumped_case_starts_with_the_generated_header(): + dumped = c.dump_case({"requires": []}) + + assert dumped.startswith("# Generated by tests/uml/pssm/convert.py") + assert "Do not edit." in dumped.splitlines()[0] + + +def test_same_name_as_datamodel_and_event_kwarg_fails_the_conversion(): + with pytest.raises(c.ConversionError, match="B8"): + convert_demo(guard="this.value == evt.value") + + +def test_overlay_replaces_a_behavior(): + overlay = { + "behaviors": { + "t2Effect": [{"assign": {"location": "count", "expr": "count + 1"}}, {"trace": "T2"}] + } + } + + case = convert_demo(overlay) + + effect = case["statechart"]["states"]["S1"]["transitions"][0]["on"] + assert effect == [{"assign": {"location": "count", "expr": "count + 1"}}, "pssm_T2_effect"] + assert case["behaviors"]["pssm_T2_effect"] == ["T2"] + + +def test_unused_overlay_entry_fails_the_conversion(): + with pytest.raises(c.ConversionError, match="unused overlay"): + convert_demo({"behaviors": {"nope": [{"trace": "X"}]}}) + + +@pytest.mark.parametrize( + ("body", "expected"), + [ + ("true", "True"), + ("this.count < 10 && !this.done", "count < 10 and not done"), + ("evt.value == false || data.ok", "value == False or ok"), + ("this.count != 5", "count != 5"), + ], +) +def test_alf_guard_bodies(body, expected): + guards = c.Guards(c.Xmi(ET.fromstring(XMI)), None) # type: ignore[arg-type] + assert guards._from_alf(body) == expected + + +def test_unparseable_alf_guard_fails(): + guards = c.Guards(c.Xmi(ET.fromstring(XMI)), None) # type: ignore[arg-type] + + with pytest.raises(c.ConversionError, match="cannot translate"): + guards._from_alf("this.count ==") + + +@pytest.mark.parametrize( + ("name", "expected"), [("S1.1", "S1_1"), ("wait'", "wait_"), ("1.3", "_1_3")] +) +def test_sanitize(name, expected): + assert c.sanitize(name) == expected + + +def test_canonical_states_orders_keys(): + states = {"a": {"transitions": [{"on": ["x"], "target": "b"}], "initial": True}} + + ordered = c.canonical_states(states) + + assert list(ordered["a"]) == ["initial", "transitions"] + assert list(ordered["a"]["transitions"][0]) == ["target", "on"] + + +def test_xmi_with_another_digest_is_rejected(tmp_path): + xmi = tmp_path / "suite.xmi" + xmi.write_text(XMI) + + with pytest.raises(c.ConversionError, match="sha256"): + c.convert(xmi, tmp_path / "out") + + +def test_overlay_with_an_unknown_key_is_rejected(tmp_path): + (tmp_path / "Demo_001.yaml").write_text("statechart: {}\n") + + with pytest.raises(c.ConversionError, match="unknown overlay keys"): + c.load_overlay("Demo_001", tmp_path) + + +def test_cli_requires_an_xmi(monkeypatch, capsys): + monkeypatch.delenv("PSSM_XMI", raising=False) + + with pytest.raises(SystemExit): + c.main([]) + assert "PSSM_XMI" in capsys.readouterr().err diff --git a/tests/uml/pssm/test_pssm_cases.py b/tests/uml/pssm/test_pssm_cases.py new file mode 100644 index 00000000..bc6ea3ed --- /dev/null +++ b/tests/uml/pssm/test_pssm_cases.py @@ -0,0 +1,330 @@ +"""Run every case generated from the OMG PSSM 1.0 test suite, on both engines. + +Each case is a native YAML document loaded untrusted through ``statemachine.io.load``. The +harness listener provides the callbacks the document references and records the trace tokens +they emit; the joined trace must equal one of the case's ``expected_traces``. +""" + +import asyncio +import json +import re +import threading +import time +from inspect import isawaitable +from pathlib import Path + +import pytest +import yaml +from statemachine.io import load + +from .conftest import CASES_DIR +from .conftest import LOWERED +from .conftest import XFAIL_ASYNC +from .conftest import XFAIL_SYNC + +SETTLE_TIMEOUT_S = 5.0 +MAX_TRACE_TOKENS = 500 +"""A longer trace means the machine is looping; the callback raises to stop it.""" + + +def render(value) -> str: + if isinstance(value, bool): + return "true" if value else "false" + return str(value) + + +class TraceRecorder: + """Listener implementing the callbacks named in a case's ``behaviors``. + + A string item appends a trace token, formatted with the event kwargs. Two items appear only + in a doActivity: ``{send: {event: name}}`` sends that event to the machine, and + ``{accept: signals}`` parks the doActivity until its state is left, since waiting for an + event inside a doActivity has no native spelling. + """ + + def __init__(self, behaviors: dict, is_async: bool): + self.trace: list[str] = [] + self.errors: list[BaseException] = [] + self.parked: set[int] = set() + self.stop = threading.Event() + for name, items in behaviors.items(): + if name.startswith("on_invoke_") and is_async: + setattr(self, name, self._async_callback(items)) + else: + setattr(self, name, self._callback(items)) + if is_async: + self.on_enter_state = self._async_noop + + async def _async_noop(self, **kwargs): ... + + def _emit(self, item, machine, kwargs): + if isinstance(item, str): + if len(self.trace) >= MAX_TRACE_TOKENS: + raise RuntimeError("runaway trace: the machine does not settle") + self.trace.append(item.format(**{k: render(v) for k, v in kwargs.items()})) + return None + return machine.send(item["send"]["event"]) + + def _callback(self, items): + def callback(*args, machine=None, ctx=None, **kwargs): + try: + for item in items: + if "accept" in item: + self._park(ctx) + return + self._emit(item, machine, kwargs) + except Exception as err: + self.errors.append(err) + raise + + return callback + + def _async_callback(self, items): + async def callback(*args, machine=None, ctx=None, **kwargs): + try: + for item in items: + if "accept" in item: + await self._park_async(ctx) + return + result = self._emit(item, machine, kwargs) + if isawaitable(result): + await result + except Exception as err: + self.errors.append(err) + raise + + return callback + + def _park(self, ctx): + self.parked.add(id(ctx)) + while not ctx.cancelled.wait(0.005) and not self.stop.is_set(): + pass + + async def _park_async(self, ctx): + self.parked.add(id(ctx)) + while not ctx.cancelled.is_set() and not self.stop.is_set(): + await asyncio.sleep(0.005) + + +def _invocations_busy(sm, recorder: TraceRecorder) -> bool: + # The library exposes no public view of running invocations. + manager = sm._engine._invoke_manager + running = [ + i + for i in manager._active.values() + if not i.terminated and id(i.ctx) not in recorder.parked + ] + return bool(manager._pending) or bool(running) + + +def settle_sync(sm, recorder: TraceRecorder): + """Wait until every doActivity finished or parked, and its completion was processed.""" + deadline = time.monotonic() + SETTLE_TIMEOUT_S + while _invocations_busy(sm, recorder): + assert time.monotonic() < deadline, "doActivity did not finish" + time.sleep(0.001) + + +async def settle_async(sm, recorder: TraceRecorder): + deadline = time.monotonic() + SETTLE_TIMEOUT_S + while _invocations_busy(sm, recorder): + assert time.monotonic() < deadline, "doActivity did not finish" + await asyncio.sleep(0.001) + + +def load_case(path: Path) -> dict: + case: dict = yaml.load(path.read_text(), Loader=getattr(yaml, "CSafeLoader", yaml.SafeLoader)) + return case + + +def build_machine(case: dict, recorder: TraceRecorder): + """Load the case untrusted; any error in it fails the case instead of becoming a trace. + + PSSM has no error events. Errors raised inside a step propagate because + ``catch_errors_as_events`` is off. The wrapped ``send`` records them too, because the + library drops an error raised while processing a doActivity's completion when that same + step leaves the doActivity's state, and it records ``error.execution`` sends. + """ + cls = load(json.dumps(case["statechart"]), format="json", trusted=False, validate=True) + cls.catch_errors_as_events = False + original_send = cls.send + + def send(self, event, *args, **kwargs): + if event == "error.execution": + recorder.errors.append(kwargs.get("error")) + try: + result = original_send(self, event, *args, **kwargs) + except Exception as err: + recorder.errors.append(err) + raise + return _recording(result, recorder) if isawaitable(result) else result + + cls.send = send # type: ignore[method-assign] + return cls(listeners=[recorder]) + + +async def _recording(result, recorder: TraceRecorder): + try: + return await result + except Exception as err: + recorder.errors.append(err) + raise + + +def assert_trace(case: dict, recorder: TraceRecorder): + assert not recorder.errors, recorder.errors + trace = "::".join(recorder.trace) + assert trace in case["expected_traces"], f"trace {trace!r} not expected" + + +def _stimulus_args(item: dict) -> "tuple[str, dict]": + name = item["call"] if "call" in item else item["event"] + return name, item.get("kwargs") or {} + + +def append_tester_trace(item: dict, recorder: TraceRecorder) -> bool: + """A ``trace`` stimulus item is a token the tester itself appends.""" + if "trace" in item: + recorder.trace.append(item["trace"]) + return True + return False + + +def trace_result(item: dict, result, recorder: TraceRecorder) -> None: + """The tester traces the value a call returned.""" + if "trace_result" in item: + recorder.trace.append(item["trace_result"].format(result=render(result))) + + +def run_sync(case: dict, recorder: TraceRecorder): + sm = build_machine(case, recorder) + settle_sync(sm, recorder) + for item in case["stimulus"]: + if append_tester_trace(item, recorder): + continue + name, kwargs = _stimulus_args(item) + trace_result(item, sm.send(name, **kwargs), recorder) + settle_sync(sm, recorder) + + +async def run_async(case: dict, recorder: TraceRecorder): + sm = build_machine(case, recorder) + await sm.activate_initial_state() + await settle_async(sm, recorder) + for item in case["stimulus"]: + if append_tester_trace(item, recorder): + continue + name, kwargs = _stimulus_args(item) + trace_result(item, await sm.send(name, **kwargs), recorder) + await settle_async(sm, recorder) + + +def check_sync(case: dict, recorder: TraceRecorder): + try: + run_sync(case, recorder) + finally: + recorder.stop.set() + assert_trace(case, recorder) + + +def test_pssm_case_sync(pssm_case: Path): + case = load_case(pssm_case) + check_sync(case, TraceRecorder(case["behaviors"], is_async=False)) + + +async def test_pssm_case_async(pssm_case: Path): + case = load_case(pssm_case) + recorder = TraceRecorder(case["behaviors"], is_async=True) + try: + await run_async(case, recorder) + finally: + recorder.stop.set() + assert_trace(case, recorder) + + +@pytest.mark.parametrize("xfail", [XFAIL_SYNC, XFAIL_ASYNC], ids=["sync", "async"]) +def test_every_case_needing_a_construct_is_classified(xfail): + cases = {path.stem: load_case(path) for path in CASES_DIR.glob("*/*.yaml")} + + assert set(xfail) | set(LOWERED) <= set(cases) + assert not set(xfail) & set(LOWERED) + for reasons, prefix in ((xfail, "requires"), (LOWERED, "lowered")): + for case_id, reason in reasons.items(): + codes = set(re.findall(rf"{prefix}:(\w+)", reason)) + assert codes == set(cases[case_id]["requires"]), case_id + assert {cid for cid, case in cases.items() if case["requires"]} <= set(xfail) | set(LOWERED) + + +ERRING_CASE = { + "expected_traces": ["S1(do)"], + "stimulus": [], + "behaviors": {"on_invoke_S1": ["S1(do)"]}, + "statechart": { + "name": "erring", + "states": { + "S1": { + "initial": True, + "transitions": [ + {"event": "done.invoke.S1", "target": "S2", "cond": "undefined_name == 1"} + ], + }, + "S2": {}, + }, + }, +} + + +def test_error_after_a_do_activity_fails_the_sync_case(): + recorder = TraceRecorder(ERRING_CASE["behaviors"], is_async=False) + + # Whichever thread processes the completion, the error surfaces. + with pytest.raises((NameError, AssertionError), match="undefined_name"): + check_sync(ERRING_CASE, recorder) + + +async def test_error_after_a_do_activity_fails_the_async_case(): + recorder = TraceRecorder(ERRING_CASE["behaviors"], is_async=True) + + await run_async(ERRING_CASE, recorder) + + with pytest.raises(AssertionError, match="undefined_name"): + assert_trace(ERRING_CASE, recorder) + + +ERRING_EXIT_CASE = { + "expected_traces": ["S1(do)"], + "stimulus": [], + "behaviors": {"on_invoke_S1": ["S1(do)"]}, + "statechart": { + "name": "erring_exit", + "states": { + "S1": { + "initial": True, + "transitions": [ + { + "event": "done.invoke.S1", + "target": "S2", + "on": [{"assign": {"location": "x", "expr": "undefined_name + 1"}}], + } + ], + }, + "S2": {}, + }, + }, +} + + +async def test_error_leaving_a_do_activity_state_fails_the_async_case(): + recorder = TraceRecorder(ERRING_EXIT_CASE["behaviors"], is_async=True) + + await run_async(ERRING_EXIT_CASE, recorder) + + with pytest.raises(AssertionError, match="undefined_name"): + assert_trace(ERRING_EXIT_CASE, recorder) + + +def test_error_leaving_a_do_activity_state_fails_the_sync_case(): + recorder = TraceRecorder(ERRING_EXIT_CASE["behaviors"], is_async=False) + + with pytest.raises((NameError, AssertionError), match="undefined_name"): + check_sync(ERRING_EXIT_CASE, recorder) diff --git a/tests/uml/pssm/test_pssm_drift.py b/tests/uml/pssm/test_pssm_drift.py new file mode 100644 index 00000000..de2e10fd --- /dev/null +++ b/tests/uml/pssm/test_pssm_drift.py @@ -0,0 +1,32 @@ +import os +from pathlib import Path + +import pytest + +from .convert import convert + +CASES_DIR = Path(__file__).parent / "cases" + + +def _xmi_path() -> Path: + value = os.environ.get("PSSM_XMI", "") + if value and Path(value).is_file(): + return Path(value) + if os.environ.get("PSSM_REQUIRED"): + pytest.fail(f"PSSM_REQUIRED is set but PSSM_XMI={value!r} is not a file") + pytest.skip("PSSM_XMI does not point to the PSSM test suite XMI; see tests/uml/pssm/README.md") + + +def _yaml_files(root: Path) -> "dict[str, bytes]": + return {str(p.relative_to(root)): p.read_bytes() for p in sorted(root.glob("*/*.yaml"))} + + +def test_committed_cases_equal_the_converter_output(tmp_path): + convert(_xmi_path(), tmp_path) + + generated = _yaml_files(tmp_path) + committed = _yaml_files(CASES_DIR) + + assert sorted(generated) == sorted(committed) + stale = [name for name in generated if generated[name] != committed[name]] + assert not stale, f"regenerate the cases, these differ: {stale}" From 4908150b463598370750ef7d63ec23d8df880b23 Mon Sep 17 00:00:00 2001 From: Fernando Macedo Date: Wed, 14 Oct 2026 15:36:49 -0300 Subject: [PATCH 2/6] ci: pin third-party actions by commit SHA, sync from the lockfile and force HTTPS on the XMI download Signed-off-by: Fernando Macedo --- .github/workflows/python-package.yml | 14 +++++++------- .github/workflows/release.yml | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index adbdf174..c8af2683 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -27,14 +27,14 @@ jobs: with: python-version: ${{ matrix.python-version }} - name: Setup Graphviz - uses: ts-graphviz/setup-graphviz@v2 + uses: ts-graphviz/setup-graphviz@b1de5da23ed0a6d14e0aeee8ed52fdd87af2363c # v2 - name: Install uv - uses: astral-sh/setup-uv@v10.2.0 + uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 with: enable-cache: true cache-suffix: "python${{ matrix.python-version }}" - name: Install the project - run: uv sync --all-extras --dev + run: uv sync --locked --all-extras --dev #---------------------------------------------- # run ruff #---------------------------------------------- @@ -54,7 +54,7 @@ jobs: # upload coverage #---------------------------------------------- - name: Upload coverage to Codecov - uses: codecov/codecov-action@v7 + uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7 if: matrix.python-version == 3.15 with: token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos @@ -76,16 +76,16 @@ jobs: with: python-version: "3.15" - name: Install uv - uses: astral-sh/setup-uv@v10.2.0 + uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 with: enable-cache: true cache-suffix: "pssm-drift" - name: Install the project - run: uv sync --all-extras --dev + run: uv sync --locked --all-extras --dev - name: Download the PSSM test suite XMI run: | xmi_dir="$(mktemp -d)" - curl --fail --silent --show-error --location --retry 3 \ + curl --proto "=https" --fail --silent --show-error --location --retry 3 \ --output "$xmi_dir/PSSM_TestSuite.xmi" \ https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi echo "PSSM_XMI=$xmi_dir/PSSM_TestSuite.xmi" >> "$GITHUB_ENV" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1c4a7174..a78285b8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,15 +19,15 @@ jobs: python-version: '3.15' - name: Setup Graphviz - uses: ts-graphviz/setup-graphviz@v2 + uses: ts-graphviz/setup-graphviz@b1de5da23ed0a6d14e0aeee8ed52fdd87af2363c # v2 - name: Install uv - uses: astral-sh/setup-uv@v10.2.0 + uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 with: enable-cache: true - name: Install the project - run: uv sync --all-extras --dev + run: uv sync --locked --all-extras --dev - name: Test run: | @@ -63,4 +63,4 @@ jobs: path: dist/ - name: Publish package distributions to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 + uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # release/v1 From 3662fd7cc434b478bbda6b97382d6ba25a5a58a5 Mon Sep 17 00:00:00 2001 From: Fernando Macedo Date: Wed, 14 Oct 2026 15:39:38 -0300 Subject: [PATCH 3/6] ci: resolve with the exclude-newer span recorded in uv.lock so --locked accepts it Signed-off-by: Fernando Macedo --- .github/workflows/python-package.yml | 4 ++++ .github/workflows/release.yml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index c8af2683..e545003a 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -12,6 +12,10 @@ on: permissions: contents: read +env: + # Must match the exclude-newer span recorded in uv.lock, or `uv sync --locked` fails. + UV_EXCLUDE_NEWER: "7 days" + jobs: build: runs-on: ubuntu-latest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a78285b8..b596ae64 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,6 +3,10 @@ on: tags: [ 'v?*.*.*' ] name: release +env: + # Must match the exclude-newer span recorded in uv.lock, or `uv sync --locked` fails. + UV_EXCLUDE_NEWER: "7 days" + jobs: release-build: name: Build release artifacts From f7460f78f1bbe8a20b791e7e69f5ff9d70d6a028 Mon Sep 17 00:00:00 2001 From: Fernando Macedo Date: Wed, 14 Oct 2026 15:42:06 -0300 Subject: [PATCH 4/6] ci: run the PSSM drift test from the lockfile Signed-off-by: Fernando Macedo --- .github/workflows/python-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index e545003a..aeb55299 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -96,4 +96,4 @@ jobs: - name: Compare the committed cases with the converter output env: PSSM_REQUIRED: "1" - run: uv run pytest tests/uml/pssm/test_pssm_drift.py --timeout 300 + run: uv run --locked pytest tests/uml/pssm/test_pssm_drift.py --timeout 300 From 57b325afc385814c51d620339e54b6fc094a04ae Mon Sep 17 00:00:00 2001 From: Fernando Macedo Date: Wed, 14 Oct 2026 15:59:14 -0300 Subject: [PATCH 5/6] feat: accept x- extension keys at the root of native documents Signed-off-by: Fernando Macedo --- docs/io/formats.md | 28 +++++++++++++++++-- docs/releases/3.3.0.md | 12 ++++++++ docs/releases/index.md | 1 + statemachine/io/native.py | 16 +++++++++-- .../io/schemas/statechart.schema.json | 3 ++ tests/io/test_native.py | 16 +++++++++++ tests/io/test_validation.py | 10 +++++++ 7 files changed, 80 insertions(+), 6 deletions(-) create mode 100644 docs/releases/3.3.0.md diff --git a/docs/io/formats.md b/docs/io/formats.md index ce34229a..850148d6 100644 --- a/docs/io/formats.md +++ b/docs/io/formats.md @@ -6,9 +6,9 @@ the same document in either format compiles to the same state machine. Pick YAML readability, or JSON when a tool emits or consumes it. (SCXML, the W3C XML standard, loads the same way and is covered at the [end of this page](#scxml).) -A document has an optional top-level envelope (`name`, `description`, `datamodel`) and a -`states` mapping keyed by state id. Here is the same toggle written both ways, proving the -result is identical: +A document has an optional top-level envelope (`name`, `description`, `datamodel` and +[extension keys](#extension-keys)) and a `states` mapping keyed by state id. Here is the +same toggle written both ways, proving the result is identical: ```py >>> from statemachine.io import load @@ -446,6 +446,28 @@ Invoke spawns a child machine that runs concurrently, so the parent reaches `fin once the child signals back. Because that resolution is not synchronous, the example above is shown for structure rather than as a doctest. +## Extension keys + +Top-level keys that start with `x-` are reserved for other tools: the loader and the +[JSON Schema](json_schema.md) accept them and ignore their content, so a document can carry +test fixtures, editor hints or provenance alongside the statechart. Any other unknown key is +still an error, and so is an `x-` key below the document root. + +```py +>>> sc = load( +... """ +... x-review: {owner: ops, ticket: OPS-12} +... states: +... a: {initial: true} +... """, +... format="yaml", +... validate=True, +... ) +>>> sorted(sc().configuration_values) +['a'] + +``` + ## SCXML [SCXML](https://www.w3.org/TR/scxml/) (State Chart XML) is the W3C standard this library's diff --git a/docs/releases/3.3.0.md b/docs/releases/3.3.0.md new file mode 100644 index 00000000..3a4ff022 --- /dev/null +++ b/docs/releases/3.3.0.md @@ -0,0 +1,12 @@ +# python-statemachine 3.3.0 + +*Unreleased* + +## What's new in 3.3.0 + +### Extension keys in native documents + +A JSON or YAML document can now carry top-level keys prefixed with `x-`, such as +`x-review: {owner: ops}`. The loader and the JSON Schema accept them and ignore their +content, so other tools can keep their data in the same file as the statechart. Other +unknown keys are still rejected. See [](../io/formats.md#extension-keys). diff --git a/docs/releases/index.md b/docs/releases/index.md index f62455f7..e93e0780 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -16,6 +16,7 @@ Requires Python 3.10+. ```{toctree} :maxdepth: 2 +3.3.0 3.2.2 3.2.1 3.2.0 diff --git a/statemachine/io/native.py b/statemachine/io/native.py index 177abb17..768466fc 100644 --- a/statemachine/io/native.py +++ b/statemachine/io/native.py @@ -46,6 +46,8 @@ # accepted vocabulary and are asserted equal to the JSON Schema in tests/io/test_validation.py, # so the schema and the parser can never silently drift apart. _DOCUMENT_KEYS = frozenset({"name", "description", "datamodel", "states"}) +_EXTENSION_PREFIX = "x-" +"""Document-root keys with this prefix are extensions for other tools; the parser ignores them.""" _STATE_KEYS = frozenset( { "initial", @@ -95,9 +97,17 @@ def _flag(value) -> bool: return bool(value) -def _check_keys(node: Mapping, allowed: "frozenset[str]", kind: str) -> None: +def _is_extension_key(key) -> bool: + return isinstance(key, str) and key.startswith(_EXTENSION_PREFIX) + + +def _check_keys( + node: Mapping, allowed: "frozenset[str]", kind: str, *, extensions: bool = False +) -> None: """Reject keys outside the declared vocabulary, mirroring the schema's strictness.""" - unknown = sorted(set(node) - allowed) + unknown = sorted( + key for key in node if key not in allowed and not (extensions and _is_extension_key(key)) + ) if unknown: raise InvalidDefinition( f"Unknown {kind} key(s) {unknown}; allowed keys are {sorted(allowed)}." @@ -112,7 +122,7 @@ def native_dict_to_definition( raise InvalidDefinition( f"Statechart definition must be a mapping, got {type(doc).__name__}." ) - _check_keys(doc, _DOCUMENT_KEYS, "document") + _check_keys(doc, _DOCUMENT_KEYS, "document", extensions=True) states_doc = doc.get("states") if not isinstance(states_doc, Mapping) or not states_doc: raise InvalidDefinition("Statechart definition must have a non-empty 'states' mapping.") diff --git a/statemachine/io/schemas/statechart.schema.json b/statemachine/io/schemas/statechart.schema.json index 091d707b..e7c58d58 100644 --- a/statemachine/io/schemas/statechart.schema.json +++ b/statemachine/io/schemas/statechart.schema.json @@ -20,6 +20,9 @@ "additionalProperties": { "$ref": "#/$defs/state" } } }, + "patternProperties": { + "^x-": {} + }, "additionalProperties": false, "$defs": { "flag": { diff --git a/tests/io/test_native.py b/tests/io/test_native.py index 6392a6e0..ce3ee506 100644 --- a/tests/io/test_native.py +++ b/tests/io/test_native.py @@ -323,6 +323,22 @@ def test_unknown_document_key(self): with pytest.raises(InvalidDefinition, match="Unknown document key"): defn({"states": {"a": {"initial": True}}, "bogus": 1}) + def test_extension_keys_are_ignored_at_the_document_root(self): + definition = defn({"states": {"a": {"initial": True}}, "x-tool": {"any": [1, 2]}}) + assert list(definition.states) == ["a"] + + def test_extension_keys_are_ignored_in_inline_invoke_content(self): + child = {"states": {"r": {"initial": True}}, "x-tool": 1} + defn({"states": {"a": {"initial": True, "invoke": {"content": child}}}}) + + def test_extension_prefix_is_case_sensitive(self): + with pytest.raises(InvalidDefinition, match="Unknown document key"): + defn({"states": {"a": {"initial": True}}, "X-tool": 1}) + + def test_extension_keys_are_rejected_below_the_root(self): + with pytest.raises(InvalidDefinition, match="Unknown state 'a' key"): + defn({"states": {"a": {"initial": True, "x-tool": 1}}}) + def test_unknown_state_key(self): with pytest.raises(InvalidDefinition, match="Unknown state 'a' key"): defn({"states": {"a": {"initial": True, "bogus": 1}}}) diff --git a/tests/io/test_validation.py b/tests/io/test_validation.py index 030a78a4..b0ece2f9 100644 --- a/tests/io/test_validation.py +++ b/tests/io/test_validation.py @@ -51,11 +51,21 @@ def test_node_vocabulary_matches_parser(self, parser_keys, schema_pointer): node = node[key] assert set(parser_keys) == set(node) + def test_extension_prefix_matches_parser(self): + assert load_schema()["patternProperties"] == {f"^{native._EXTENSION_PREFIX}": {}} + class TestValidateDocument: def test_valid(self): validate_document({"name": "M", "states": {"a": {"initial": True, "transitions": []}}}) + def test_valid_with_extension_key(self): + validate_document({"states": {"a": {"initial": True}}, "x-tool": {"any": [1]}}) + + def test_extension_key_below_the_root_is_invalid(self): + with pytest.raises(InvalidDefinition): + validate_document({"states": {"a": {"initial": True, "x-tool": 1}}}) + def test_valid_with_actions(self): validate_document( { From 041fd96150819b84a372ae0c14ca18adea363d31 Mon Sep 17 00:00:00 2001 From: Fernando Macedo Date: Wed, 14 Oct 2026 16:01:14 -0300 Subject: [PATCH 6/6] test: make each PSSM case a loadable statechart with the test under x-pssm Signed-off-by: Fernando Macedo --- tests/uml/pssm/README.md | 9 +- .../uml/pssm/cases/Behavior/Behavior_001.yaml | 38 +- .../uml/pssm/cases/Behavior/Behavior_002.yaml | 38 +- .../pssm/cases/Behavior/Behavior_003-A.yaml | 76 ++-- .../pssm/cases/Behavior/Behavior_003-B.yaml | 58 ++-- .../uml/pssm/cases/Behavior/Behavior_004.yaml | 70 ++-- tests/uml/pssm/cases/Choice/Choice_001.yaml | 70 ++-- tests/uml/pssm/cases/Choice/Choice_002.yaml | 74 ++-- tests/uml/pssm/cases/Choice/Choice_003.yaml | 74 ++-- tests/uml/pssm/cases/Choice/Choice_004.yaml | 76 ++-- tests/uml/pssm/cases/Choice/Choice_005.yaml | 98 +++--- .../uml/pssm/cases/Deferred/Deferred_001.yaml | 106 +++--- .../uml/pssm/cases/Deferred/Deferred_002.yaml | 126 +++---- .../uml/pssm/cases/Deferred/Deferred_003.yaml | 138 ++++---- .../pssm/cases/Deferred/Deferred_004-A.yaml | 154 ++++----- .../pssm/cases/Deferred/Deferred_004-B.yaml | 164 ++++----- .../uml/pssm/cases/Deferred/Deferred_005.yaml | 102 +++--- .../pssm/cases/Deferred/Deferred_006-A.yaml | 50 +-- .../pssm/cases/Deferred/Deferred_006-B.yaml | 58 ++-- .../pssm/cases/Deferred/Deferred_006-C.yaml | 98 +++--- .../uml/pssm/cases/Deferred/Deferred_007.yaml | 100 +++--- .../uml/pssm/cases/Entering/Entering_004.yaml | 76 ++-- .../uml/pssm/cases/Entering/Entering_005.yaml | 82 ++--- .../uml/pssm/cases/Entering/Entering_009.yaml | 74 ++-- .../uml/pssm/cases/Entering/Entering_010.yaml | 128 +++---- .../uml/pssm/cases/Entering/Entering_011.yaml | 136 ++++---- tests/uml/pssm/cases/Entry/Entry_002-A.yaml | 96 +++--- tests/uml/pssm/cases/Entry/Entry_002-B.yaml | 110 +++--- tests/uml/pssm/cases/Entry/Entry_002-C.yaml | 78 ++--- tests/uml/pssm/cases/Entry/Entry_002-D.yaml | 88 ++--- tests/uml/pssm/cases/Entry/Entry_002-E.yaml | 132 +++---- tests/uml/pssm/cases/Entry/Entry_002-F.yaml | 118 +++---- tests/uml/pssm/cases/Event/Event_001.yaml | 38 +- tests/uml/pssm/cases/Event/Event_002.yaml | 80 ++--- tests/uml/pssm/cases/Event/Event_008.yaml | 66 ++-- tests/uml/pssm/cases/Event/Event_009.yaml | 120 +++---- tests/uml/pssm/cases/Event/Event_010.yaml | 160 ++++----- tests/uml/pssm/cases/Event/Event_015.yaml | 72 ++-- tests/uml/pssm/cases/Event/Event_016-A.yaml | 82 ++--- tests/uml/pssm/cases/Event/Event_016-B.yaml | 286 +++++++-------- tests/uml/pssm/cases/Event/Event_017-A.yaml | 74 ++-- tests/uml/pssm/cases/Event/Event_017-B.yaml | 108 +++--- tests/uml/pssm/cases/Event/Event_018.yaml | 118 +++---- tests/uml/pssm/cases/Event/Event_019-A.yaml | 70 ++-- tests/uml/pssm/cases/Event/Event_019-B.yaml | 70 ++-- tests/uml/pssm/cases/Event/Event_019-C.yaml | 126 +++---- tests/uml/pssm/cases/Event/Event_019-D.yaml | 72 ++-- tests/uml/pssm/cases/Event/Event_019-E.yaml | 124 +++---- tests/uml/pssm/cases/Exit/Exit_001.yaml | 96 +++--- tests/uml/pssm/cases/Exit/Exit_002.yaml | 82 ++--- tests/uml/pssm/cases/Exit/Exit_003.yaml | 106 +++--- tests/uml/pssm/cases/Exiting/Exiting_001.yaml | 104 +++--- tests/uml/pssm/cases/Exiting/Exiting_002.yaml | 72 ++-- tests/uml/pssm/cases/Exiting/Exiting_003.yaml | 122 +++---- tests/uml/pssm/cases/Exiting/Exiting_004.yaml | 70 ++-- tests/uml/pssm/cases/Exiting/Exiting_005.yaml | 112 +++--- tests/uml/pssm/cases/Final/Final_001.yaml | 128 +++---- tests/uml/pssm/cases/Fork/Fork_001.yaml | 326 +++++++++--------- tests/uml/pssm/cases/Fork/Fork_002.yaml | 130 +++---- .../uml/pssm/cases/History/History_001-A.yaml | 132 +++---- .../uml/pssm/cases/History/History_001-B.yaml | 166 ++++----- .../uml/pssm/cases/History/History_001-C.yaml | 212 ++++++------ .../uml/pssm/cases/History/History_001-D.yaml | 154 ++++----- .../uml/pssm/cases/History/History_002-A.yaml | 160 ++++----- .../uml/pssm/cases/History/History_002-B.yaml | 218 ++++++------ .../uml/pssm/cases/History/History_002-C.yaml | 106 +++--- .../uml/pssm/cases/History/History_002-D.yaml | 142 ++++---- tests/uml/pssm/cases/Join/Join_001.yaml | 102 +++--- tests/uml/pssm/cases/Join/Join_002.yaml | 116 +++---- tests/uml/pssm/cases/Join/Join_003.yaml | 126 +++---- .../uml/pssm/cases/Junction/Junction_001.yaml | 92 ++--- .../uml/pssm/cases/Junction/Junction_002.yaml | 94 ++--- .../uml/pssm/cases/Junction/Junction_003.yaml | 236 ++++++------- .../uml/pssm/cases/Junction/Junction_004.yaml | 178 +++++----- .../uml/pssm/cases/Junction/Junction_005.yaml | 198 +++++------ .../uml/pssm/cases/Junction/Junction_006.yaml | 128 +++---- .../Other/TransitionExecutionAlgorithm.yaml | 110 +++--- .../cases/Redefinition/Redefinition_001.yaml | 132 +++---- .../cases/Redefinition/Redefinition_002.yaml | 106 +++--- .../cases/Redefinition/Redefinition_003.yaml | 116 +++---- .../cases/Redefinition/Redefinition_004.yaml | 102 +++--- .../cases/Redefinition/Redefinition_005.yaml | 106 +++--- .../cases/Redefinition/Redefinition_006.yaml | 80 ++--- .../pssm/cases/Standalone/Standalone_001.yaml | 206 +++++------ .../pssm/cases/Standalone/Standalone_002.yaml | 214 ++++++------ .../pssm/cases/Standalone/Standalone_003.yaml | 124 +++---- .../pssm/cases/Terminate/Terminate_001.yaml | 120 +++---- .../pssm/cases/Terminate/Terminate_002.yaml | 126 +++---- .../pssm/cases/Terminate/Terminate_003.yaml | 44 +-- .../pssm/cases/Transition/Transition_001.yaml | 44 +-- .../pssm/cases/Transition/Transition_007.yaml | 80 ++--- .../pssm/cases/Transition/Transition_010.yaml | 80 ++--- .../cases/Transition/Transition_011-A.yaml | 110 +++--- .../cases/Transition/Transition_011-B.yaml | 92 ++--- .../cases/Transition/Transition_011-C.yaml | 108 +++--- .../cases/Transition/Transition_011-D.yaml | 134 +++---- .../cases/Transition/Transition_011-E.yaml | 92 ++--- .../pssm/cases/Transition/Transition_015.yaml | 52 +-- .../pssm/cases/Transition/Transition_016.yaml | 44 +-- .../pssm/cases/Transition/Transition_017.yaml | 150 ++++---- .../pssm/cases/Transition/Transition_019.yaml | 140 ++++---- .../pssm/cases/Transition/Transition_020.yaml | 74 ++-- .../pssm/cases/Transition/Transition_022.yaml | 62 ++-- .../pssm/cases/Transition/Transition_023.yaml | 242 ++++++------- tests/uml/pssm/convert.py | 6 +- tests/uml/pssm/test_convert.py | 32 +- tests/uml/pssm/test_pssm_cases.py | 94 ++--- 107 files changed, 5855 insertions(+), 5836 deletions(-) diff --git a/tests/uml/pssm/README.md b/tests/uml/pssm/README.md index 1a439b63..087b0dcc 100644 --- a/tests/uml/pssm/README.md +++ b/tests/uml/pssm/README.md @@ -34,7 +34,9 @@ cases are *based on* PSSM; passing them is not a conformance claim. ## Case format -Each case is a YAML mapping: +Each case is a native statechart document: `statemachine.io.load(path)` loads it as is. The +test lives in the document's `x-pssm` [extension key](../../../docs/io/formats.md#extension-keys), +which the loader ignores: - `requires`: UML constructs the case uses that the native format cannot spell yet (`choice`, `junction`, `join`, `fork`, `terminate`, `entry_point`, `exit_point`, @@ -48,7 +50,10 @@ Each case is a YAML mapping: with the event data. `on_invoke_` entries are doActivities; in them, `{send: {event}}` sends an event to the machine and `{accept}` parks the doActivity until its state is left. -- `statechart`: a native document, loaded untrusted with `statemachine.io.load`. + +The callbacks the statechart names come from the harness listener, which reads +`behaviors`; loaded without it, the machine runs but traces nothing. The harness loads the +cases untrusted and validated against the JSON Schema. The converter lowers UML completion transitions to what the library has today: from a composite state to `done.state.`, from a state with a doActivity to diff --git a/tests/uml/pssm/cases/Behavior/Behavior_001.yaml b/tests/uml/pssm/cases/Behavior/Behavior_001.yaml index 5530ac5b..b4acd0b0 100644 --- a/tests/uml/pssm/cases/Behavior/Behavior_001.yaml +++ b/tests/uml/pssm/cases/Behavior/Behavior_001.yaml @@ -1,21 +1,21 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry) -stimulus: -- event: Start -behaviors: - pssm_S1_entry: +name: Behavior_001 +x-pssm: + requires: [] + expected_traces: - S1(entry) -statechart: - name: Behavior_001 - states: - S1: - initial: true - enter: - - pssm_S1_entry - transitions: - - event: Start - target: FinalState1 - FinalState1: - final: true + stimulus: + - event: Start + behaviors: + pssm_S1_entry: + - S1(entry) +states: + S1: + initial: true + enter: + - pssm_S1_entry + transitions: + - event: Start + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Behavior/Behavior_002.yaml b/tests/uml/pssm/cases/Behavior/Behavior_002.yaml index a5387cfe..c8d1f722 100644 --- a/tests/uml/pssm/cases/Behavior/Behavior_002.yaml +++ b/tests/uml/pssm/cases/Behavior/Behavior_002.yaml @@ -1,21 +1,21 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(exit) -stimulus: -- event: Start -behaviors: - pssm_S1_exit: +name: Behavior_002 +x-pssm: + requires: [] + expected_traces: - S1(exit) -statechart: - name: Behavior_002 - states: - S1: - initial: true - exit: - - pssm_S1_exit - transitions: - - event: Start - target: FinalState1 - FinalState1: - final: true + stimulus: + - event: Start + behaviors: + pssm_S1_exit: + - S1(exit) +states: + S1: + initial: true + exit: + - pssm_S1_exit + transitions: + - event: Start + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Behavior/Behavior_003-A.yaml b/tests/uml/pssm/cases/Behavior/Behavior_003-A.yaml index cb23aceb..27ca0134 100644 --- a/tests/uml/pssm/cases/Behavior/Behavior_003-A.yaml +++ b/tests/uml/pssm/cases/Behavior/Behavior_003-A.yaml @@ -1,40 +1,40 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- do_activity_accept -expected_traces: -- S1(entry)::S1(doActivityPartI) -- S1(entry) -stimulus: -- event: Start -- event: AnotherSignal -behaviors: - pssm_S1_entry: +name: Behavior_003-A +x-pssm: + requires: + - do_activity_accept + expected_traces: + - S1(entry)::S1(doActivityPartI) - S1(entry) - on_invoke_S1: - - S1(doActivityPartI) - - accept: Continue - pssm_T3_effect: - - T3(effect) -statechart: - name: Behavior_003-A - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - transitions: - - event: done.invoke.S1 - target: error - 'on': - - pssm_T3_effect - - event: AnotherSignal - target: FS1 - FS1: - final: true - error: - transitions: - - target: FS1 + stimulus: + - event: Start + - event: AnotherSignal + behaviors: + pssm_S1_entry: + - S1(entry) + on_invoke_S1: + - S1(doActivityPartI) + - accept: Continue + pssm_T3_effect: + - T3(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + transitions: + - event: done.invoke.S1 + target: error + 'on': + - pssm_T3_effect + - event: AnotherSignal + target: FS1 + FS1: + final: true + error: + transitions: + - target: FS1 diff --git a/tests/uml/pssm/cases/Behavior/Behavior_003-B.yaml b/tests/uml/pssm/cases/Behavior/Behavior_003-B.yaml index e2c000fa..10338a6a 100644 --- a/tests/uml/pssm/cases/Behavior/Behavior_003-B.yaml +++ b/tests/uml/pssm/cases/Behavior/Behavior_003-B.yaml @@ -1,30 +1,30 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- do_activity_accept -expected_traces: -- S1(entry)::S1(doActivityPartI)::S1(doActivityPartII) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - on_invoke_S1: - - S1(doActivityPartI) - - accept: Continue -statechart: - name: Behavior_003-B - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - transitions: - - event: done.invoke.S1 - target: FinalState1 - FinalState1: - final: true +name: Behavior_003-B +x-pssm: + requires: + - do_activity_accept + expected_traces: + - S1(entry)::S1(doActivityPartI)::S1(doActivityPartII) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + on_invoke_S1: + - S1(doActivityPartI) + - accept: Continue +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + transitions: + - event: done.invoke.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Behavior/Behavior_004.yaml b/tests/uml/pssm/cases/Behavior/Behavior_004.yaml index e3b385a1..59d8d340 100644 --- a/tests/uml/pssm/cases/Behavior/Behavior_004.yaml +++ b/tests/uml/pssm/cases/Behavior/Behavior_004.yaml @@ -1,36 +1,36 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- do_activity_accept -expected_traces: -- S1(entry)::S1(doActivityPartI)::T3(effect)::S1(doActivityPartII) -stimulus: -- event: Start -- event: AnotherSignal -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - on_invoke_S1: - - S1(doActivityPartI) - - accept: Continue - pssm_T3_effect: - - T3(effect) -statechart: - name: Behavior_004 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - transitions: - - event: done.invoke.S1 - target: FS1 - - event: AnotherSignal - 'on': - - pssm_T3_effect - FS1: - final: true +name: Behavior_004 +x-pssm: + requires: + - do_activity_accept + expected_traces: + - S1(entry)::S1(doActivityPartI)::T3(effect)::S1(doActivityPartII) + stimulus: + - event: Start + - event: AnotherSignal + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + on_invoke_S1: + - S1(doActivityPartI) + - accept: Continue + pssm_T3_effect: + - T3(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + transitions: + - event: done.invoke.S1 + target: FS1 + - event: AnotherSignal + 'on': + - pssm_T3_effect + FS1: + final: true diff --git a/tests/uml/pssm/cases/Choice/Choice_001.yaml b/tests/uml/pssm/cases/Choice/Choice_001.yaml index bb018787..1536af75 100644 --- a/tests/uml/pssm/cases/Choice/Choice_001.yaml +++ b/tests/uml/pssm/cases/Choice/Choice_001.yaml @@ -1,38 +1,38 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- choice -expected_traces: -- T4(effect)::T4(effect)::T4(effect)::T4(effect) -stimulus: -- event: Start -behaviors: - pssm_T4_effect: - - T4(effect) -statechart: - name: Choice_001 - datamodel: - value: '0' - states: - Increment: - enter: +name: Choice_001 +x-pssm: + requires: + - choice + expected_traces: + - T4(effect)::T4(effect)::T4(effect)::T4(effect) + stimulus: + - event: Start + behaviors: + pssm_T4_effect: + - T4(effect) +datamodel: + value: '0' +states: + Increment: + enter: + - assign: + location: value + expr: value + 1 + transitions: + - target: FS1 + cond: value == 5 + - target: Increment + cond: value < 5 + 'on': + - pssm_T4_effect + wait: + initial: true + transitions: + - event: Start + target: Increment + 'on': - assign: location: value - expr: value + 1 - transitions: - - target: FS1 - cond: value == 5 - - target: Increment - cond: value < 5 - 'on': - - pssm_T4_effect - wait: - initial: true - transitions: - - event: Start - target: Increment - 'on': - - assign: - location: value - expr: '0' - FS1: - final: true + expr: '0' + FS1: + final: true diff --git a/tests/uml/pssm/cases/Choice/Choice_002.yaml b/tests/uml/pssm/cases/Choice/Choice_002.yaml index fcd59ac8..0d3d61f0 100644 --- a/tests/uml/pssm/cases/Choice/Choice_002.yaml +++ b/tests/uml/pssm/cases/Choice/Choice_002.yaml @@ -1,41 +1,41 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- choice -expected_traces: -- T3(effect) -- T4(effect) -- T5(effect) -stimulus: -- event: Start -behaviors: - pssm_T3_effect: +name: Choice_002 +x-pssm: + requires: + - choice + expected_traces: - T3(effect) - pssm_T4_effect: - T4(effect) - pssm_T5_effect: - T5(effect) -statechart: - name: Choice_002 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - cond: 'True' - 'on': - - pssm_T3_effect - - event: Start - target: S1 - cond: 'True' - 'on': - - pssm_T4_effect - - event: Start - target: S1 - 'on': - - pssm_T5_effect - FS1: - final: true - S1: - transitions: - - target: FS1 + stimulus: + - event: Start + behaviors: + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) + pssm_T5_effect: + - T5(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + cond: 'True' + 'on': + - pssm_T3_effect + - event: Start + target: S1 + cond: 'True' + 'on': + - pssm_T4_effect + - event: Start + target: S1 + 'on': + - pssm_T5_effect + FS1: + final: true + S1: + transitions: + - target: FS1 diff --git a/tests/uml/pssm/cases/Choice/Choice_003.yaml b/tests/uml/pssm/cases/Choice/Choice_003.yaml index c80864c1..3e999e2c 100644 --- a/tests/uml/pssm/cases/Choice/Choice_003.yaml +++ b/tests/uml/pssm/cases/Choice/Choice_003.yaml @@ -1,39 +1,39 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- choice -expected_traces: -- T4(effect) -stimulus: -- event: Start -behaviors: - pssm_T3_effect: - - T3(effect) - pssm_T5_effect: - - T5(effect) - pssm_T4_effect: +name: Choice_003 +x-pssm: + requires: + - choice + expected_traces: - T4(effect) -statechart: - name: Choice_003 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - cond: 'False' - 'on': - - pssm_T3_effect - - event: Start - target: S1 - cond: 'False' - 'on': - - pssm_T5_effect - - event: Start - target: S1 - 'on': - - pssm_T4_effect - FS1: - final: true - S1: - transitions: - - target: FS1 + stimulus: + - event: Start + behaviors: + pssm_T3_effect: + - T3(effect) + pssm_T5_effect: + - T5(effect) + pssm_T4_effect: + - T4(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + cond: 'False' + 'on': + - pssm_T3_effect + - event: Start + target: S1 + cond: 'False' + 'on': + - pssm_T5_effect + - event: Start + target: S1 + 'on': + - pssm_T4_effect + FS1: + final: true + S1: + transitions: + - target: FS1 diff --git a/tests/uml/pssm/cases/Choice/Choice_004.yaml b/tests/uml/pssm/cases/Choice/Choice_004.yaml index e30b7a2e..6356cb63 100644 --- a/tests/uml/pssm/cases/Choice/Choice_004.yaml +++ b/tests/uml/pssm/cases/Choice/Choice_004.yaml @@ -1,40 +1,40 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- choice -expected_traces: -- T4(effect) -stimulus: -- event: Start -- event: Data - kwargs: - value: true -behaviors: - pssm_T5_effect: - - T5(effect) - pssm_T4_effect: +name: Choice_004 +x-pssm: + requires: + - choice + expected_traces: - T4(effect) -statechart: - name: Choice_004 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - transitions: - - event: Data - target: S2 - cond: value == False - 'on': - - pssm_T5_effect - - event: Data - target: S2 - cond: value == True - 'on': - - pssm_T4_effect - FinalState1: - final: true - S2: - transitions: - - target: FinalState1 + stimulus: + - event: Start + - event: Data + kwargs: + value: true + behaviors: + pssm_T5_effect: + - T5(effect) + pssm_T4_effect: + - T4(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + transitions: + - event: Data + target: S2 + cond: value == False + 'on': + - pssm_T5_effect + - event: Data + target: S2 + cond: value == True + 'on': + - pssm_T4_effect + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Choice/Choice_005.yaml b/tests/uml/pssm/cases/Choice/Choice_005.yaml index 25690407..0b1e4b47 100644 --- a/tests/uml/pssm/cases/Choice/Choice_005.yaml +++ b/tests/uml/pssm/cases/Choice/Choice_005.yaml @@ -1,51 +1,51 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- choice -- junction -expected_traces: -- T1.2(guard)::T1.3(guard)::T2(effect)::S1(entry)::T1.4(guard)::T1.5(guard)::S1.1(entry) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_T2_effect: - - T2(effect) - pssm_S1_entry: - - S1(entry) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_2_entry: - - S1.2(entry) -statechart: - name: Choice_005 - states: - wait: +name: Choice_005 +x-pssm: + requires: + - choice + - junction + expected_traces: + - T1.2(guard)::T1.3(guard)::T2(effect)::S1(entry)::T1.4(guard)::T1.5(guard)::S1.1(entry) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_T2_effect: + - T2(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_2_entry: + - S1.2(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + S1: + enter: + - pssm_S1_entry + states: + S1_FinalState1: + final: true + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: S1_FinalState1 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: S1_FinalState1 + transitions: + - target: S1_1 initial: true - transitions: - - event: Start - target: S1 - 'on': - - pssm_T2_effect - S1: - enter: - - pssm_S1_entry - states: - S1_FinalState1: - final: true - S1_1: - enter: - - pssm_S1_1_entry - transitions: - - target: S1_FinalState1 - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - target: S1_FinalState1 - transitions: - - target: S1_1 - initial: true - - event: Continue - target: FinalState1 - FinalState1: - final: true + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_001.yaml b/tests/uml/pssm/cases/Deferred/Deferred_001.yaml index 4e4017d1..99cf33c5 100644 --- a/tests/uml/pssm/cases/Deferred/Deferred_001.yaml +++ b/tests/uml/pssm/cases/Deferred/Deferred_001.yaml @@ -1,54 +1,54 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- defer -expected_traces: -- S1(exit)::S2(entry)::T4(effect)::S3(entry) -stimulus: -- event: Start -- event: Continue -- event: AnotherSignal -- event: Pending -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_S2_entry: - - S2(entry) - pssm_T4_effect: - - T4(effect) - pssm_T5_effect: - - T5(effect) - pssm_S3_entry: - - S3(entry) -statechart: - name: Deferred_001 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - exit: - - pssm_S1_exit - transitions: - - event: AnotherSignal - target: S2 - S2: - enter: - - pssm_S2_entry - transitions: - - event: Continue - target: S3 - 'on': - - pssm_T4_effect - - event: Pending - target: S3 - 'on': - - pssm_T5_effect - S3: - enter: - - pssm_S3_entry - transitions: - - target: FinalState1 - FinalState1: - final: true +name: Deferred_001 +x-pssm: + requires: + - defer + expected_traces: + - S1(exit)::S2(entry)::T4(effect)::S3(entry) + stimulus: + - event: Start + - event: Continue + - event: AnotherSignal + - event: Pending + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S2_entry: + - S2(entry) + pssm_T4_effect: + - T4(effect) + pssm_T5_effect: + - T5(effect) + pssm_S3_entry: + - S3(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + transitions: + - event: AnotherSignal + target: S2 + S2: + enter: + - pssm_S2_entry + transitions: + - event: Continue + target: S3 + 'on': + - pssm_T4_effect + - event: Pending + target: S3 + 'on': + - pssm_T5_effect + S3: + enter: + - pssm_S3_entry + transitions: + - target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_002.yaml b/tests/uml/pssm/cases/Deferred/Deferred_002.yaml index d31edb4d..9c613150 100644 --- a/tests/uml/pssm/cases/Deferred/Deferred_002.yaml +++ b/tests/uml/pssm/cases/Deferred/Deferred_002.yaml @@ -1,64 +1,64 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- defer -expected_traces: -- S1(exit)::T4(effect)::S2(entry)::T6(effect)::S3(entry) -stimulus: -- event: Start -- event: Continue -- event: AnotherSignal -- event: Continue -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_T3_effect: - - T3(effect) - pssm_T4_effect: - - T4(effect) - pssm_S2_entry: - - S2(entry) - pssm_T5_effect: - - T5(effect) - pssm_T6_effect: - - T6(effect) - pssm_S3_entry: - - S3(entry) -statechart: - name: Deferred_002 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - exit: - - pssm_S1_exit - transitions: - - event: AnotherSignal - target: S2 - 'on': - - pssm_T3_effect - - event: Continue - target: S2 - 'on': - - pssm_T4_effect - S2: - enter: - - pssm_S2_entry - transitions: - - event: Continue - target: S3 - 'on': - - pssm_T5_effect - - event: AnotherSignal - target: S3 - 'on': - - pssm_T6_effect - S3: - enter: - - pssm_S3_entry - transitions: - - target: FinalState1 - FinalState1: - final: true +name: Deferred_002 +x-pssm: + requires: + - defer + expected_traces: + - S1(exit)::T4(effect)::S2(entry)::T6(effect)::S3(entry) + stimulus: + - event: Start + - event: Continue + - event: AnotherSignal + - event: Continue + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) + pssm_S2_entry: + - S2(entry) + pssm_T5_effect: + - T5(effect) + pssm_T6_effect: + - T6(effect) + pssm_S3_entry: + - S3(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + transitions: + - event: AnotherSignal + target: S2 + 'on': + - pssm_T3_effect + - event: Continue + target: S2 + 'on': + - pssm_T4_effect + S2: + enter: + - pssm_S2_entry + transitions: + - event: Continue + target: S3 + 'on': + - pssm_T5_effect + - event: AnotherSignal + target: S3 + 'on': + - pssm_T6_effect + S3: + enter: + - pssm_S3_entry + transitions: + - target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_003.yaml b/tests/uml/pssm/cases/Deferred/Deferred_003.yaml index bb560691..4426a798 100644 --- a/tests/uml/pssm/cases/Deferred/Deferred_003.yaml +++ b/tests/uml/pssm/cases/Deferred/Deferred_003.yaml @@ -1,70 +1,70 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- defer -expected_traces: -- S1.1.1(exit)::T1.1.2(effect)::S1.1(exit)::T1.2(effect)::S1.2(exit)::T1.3(effect) -stimulus: -- event: Start -- event: Continue -- event: Continue -- event: AnotherSignal -- event: Pending -behaviors: - pssm_S1_1_exit: - - S1.1(exit) - pssm_T1_2_effect: - - T1.2(effect) - pssm_S1_1_1_exit: - - S1.1.1(exit) - pssm_T1_1_2_effect: - - T1.1.2(effect) - pssm_S1_2_exit: - - S1.2(exit) - pssm_T1_3_effect: - - T1.3(effect) -statechart: - name: Deferred_003 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - states: - S1_1_1: - initial: true - exit: - - pssm_S1_1_1_exit - transitions: - - event: Continue - target: S1_1_FinalState1 - 'on': - - pssm_T1_1_2_effect - S1_1_FinalState1: - final: true - transitions: - - event: Pending - target: S1_2 - 'on': - - pssm_T1_2_effect - S1_2: - exit: - - pssm_S1_2_exit - transitions: - - event: Continue - target: S1_FinalState1 - 'on': - - pssm_T1_3_effect - S1_FinalState1: - final: true - transitions: - - event: AnotherSignal - target: FinalState1 - FinalState1: - final: true +name: Deferred_003 +x-pssm: + requires: + - defer + expected_traces: + - S1.1.1(exit)::T1.1.2(effect)::S1.1(exit)::T1.2(effect)::S1.2(exit)::T1.3(effect) + stimulus: + - event: Start + - event: Continue + - event: Continue + - event: AnotherSignal + - event: Pending + behaviors: + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_T1_1_2_effect: + - T1.1.2(effect) + pssm_S1_2_exit: + - S1.2(exit) + pssm_T1_3_effect: + - T1.3(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + transitions: + - event: Continue + target: S1_1_FinalState1 + 'on': + - pssm_T1_1_2_effect + S1_1_FinalState1: + final: true + transitions: + - event: Pending + target: S1_2 + 'on': + - pssm_T1_2_effect + S1_2: + exit: + - pssm_S1_2_exit + transitions: + - event: Continue + target: S1_FinalState1 + 'on': + - pssm_T1_3_effect + S1_FinalState1: + final: true + transitions: + - event: AnotherSignal + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_004-A.yaml b/tests/uml/pssm/cases/Deferred/Deferred_004-A.yaml index 15451535..16907d86 100644 --- a/tests/uml/pssm/cases/Deferred/Deferred_004-A.yaml +++ b/tests/uml/pssm/cases/Deferred/Deferred_004-A.yaml @@ -1,78 +1,78 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- defer -expected_traces: -- S1.1(exit)::T1.2(effect)::S2.1(exit)::T2.2(effect)::S1(exit)::T4(effect) -stimulus: -- event: Start -- event: Continue -- event: Pending -- event: AnotherSignal -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_T3_effect: - - T3(effect) - pssm_T4_effect: - - T4(effect) - pssm_S1_1_exit: - - S1.1(exit) - pssm_T1_2_effect: - - T1.2(effect) - pssm_S2_1_exit: - - S2.1(exit) - pssm_T2_2_effect: - - T2.2(effect) -statechart: - name: Deferred_004-A - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - transitions: - - event: Pending - target: Region1_FinalState1 - 'on': - - pssm_T1_2_effect - Region1_FinalState1: - final: true - S1_Region2: - states: - S2_1: - initial: true - exit: - - pssm_S2_1_exit - transitions: - - event: Continue - target: Region2_FinalState1 - 'on': - - pssm_T2_2_effect - Region2_FinalState1: - final: true - transitions: - - event: Continue - target: end - 'on': - - pssm_T3_effect - - event: AnotherSignal - target: end - 'on': - - pssm_T4_effect - FinalState1: - final: true - end: - transitions: - - target: FinalState1 +name: Deferred_004-A +x-pssm: + requires: + - defer + expected_traces: + - S1.1(exit)::T1.2(effect)::S2.1(exit)::T2.2(effect)::S1(exit)::T4(effect) + stimulus: + - event: Start + - event: Continue + - event: Pending + - event: AnotherSignal + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S2_1_exit: + - S2.1(exit) + pssm_T2_2_effect: + - T2.2(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - event: Pending + target: Region1_FinalState1 + 'on': + - pssm_T1_2_effect + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - event: Continue + target: Region2_FinalState1 + 'on': + - pssm_T2_2_effect + Region2_FinalState1: + final: true + transitions: + - event: Continue + target: end + 'on': + - pssm_T3_effect + - event: AnotherSignal + target: end + 'on': + - pssm_T4_effect + FinalState1: + final: true + end: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Deferred/Deferred_004-B.yaml b/tests/uml/pssm/cases/Deferred/Deferred_004-B.yaml index ab4f656c..241cef7d 100644 --- a/tests/uml/pssm/cases/Deferred/Deferred_004-B.yaml +++ b/tests/uml/pssm/cases/Deferred/Deferred_004-B.yaml @@ -1,83 +1,83 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- defer -expected_traces: -- S1.1.1(exit)::T1.1.2(effect)::S1.1(exit)::S2.1(exit)::T2.2(effect)::S1(exit) -stimulus: -- event: Start -- event: AnotherSignal -- event: Continue -- event: Pending -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S1_1_1_exit: - - S1.1.1(exit) - pssm_T1_1_2_effect: - - T1.1.2(effect) - pssm_S2_1_exit: - - S2.1(exit) - pssm_T2_2_effect: - - T2.2(effect) - pssm_T2_3_effect: - - T2.3(effect) -statechart: - name: Deferred_004-B - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - states: - S1_1_1: - initial: true - exit: - - pssm_S1_1_1_exit - transitions: - - event: Continue - target: S1_1_FinalState1 - 'on': - - pssm_T1_1_2_effect - S1_1_FinalState1: - final: true - transitions: - - event: done.state.S1_1 - target: Region1_FinalState1 - Region1_FinalState1: - final: true - S1_Region2: - states: - S2_1: - initial: true - exit: - - pssm_S2_1_exit - transitions: - - event: AnotherSignal - target: Region2_FinalState1 - 'on': - - pssm_T2_2_effect - - event: Pending - target: Region2_FinalState1 - 'on': - - pssm_T2_3_effect - Region2_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: Deferred_004-B +x-pssm: + requires: + - defer + expected_traces: + - S1.1.1(exit)::T1.1.2(effect)::S1.1(exit)::S2.1(exit)::T2.2(effect)::S1(exit) + stimulus: + - event: Start + - event: AnotherSignal + - event: Continue + - event: Pending + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_T1_1_2_effect: + - T1.1.2(effect) + pssm_S2_1_exit: + - S2.1(exit) + pssm_T2_2_effect: + - T2.2(effect) + pssm_T2_3_effect: + - T2.3(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + transitions: + - event: Continue + target: S1_1_FinalState1 + 'on': + - pssm_T1_1_2_effect + S1_1_FinalState1: + final: true + transitions: + - event: done.state.S1_1 + target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - event: AnotherSignal + target: Region2_FinalState1 + 'on': + - pssm_T2_2_effect + - event: Pending + target: Region2_FinalState1 + 'on': + - pssm_T2_3_effect + Region2_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_005.yaml b/tests/uml/pssm/cases/Deferred/Deferred_005.yaml index 5d907501..49151d11 100644 --- a/tests/uml/pssm/cases/Deferred/Deferred_005.yaml +++ b/tests/uml/pssm/cases/Deferred/Deferred_005.yaml @@ -1,52 +1,52 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- defer -expected_traces: -- T3(effect)::S2(entry)::T4(effect)::S2(entry)::T5(effect)::S2(entry) -stimulus: -- event: Start -- event: Continue -- event: AnotherSignal -- event: Pending -behaviors: - pssm_T3_effect: - - T3(effect) - pssm_S2_entry: - - S2(entry) - pssm_T5_effect: - - T5(effect) - pssm_T4_effect: - - T4(effect) -statechart: - name: Deferred_005 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - exit: - - send: - event: Pending - transitions: - - event: Pending - target: S2 - 'on': - - pssm_T3_effect - S2: - enter: - - pssm_S2_entry - transitions: - - event: AnotherSignal - target: S2 - 'on': - - pssm_T5_effect - - event: Continue - target: S2 - 'on': - - pssm_T4_effect - - event: Pending - target: FinalState1 - FinalState1: - final: true +name: Deferred_005 +x-pssm: + requires: + - defer + expected_traces: + - T3(effect)::S2(entry)::T4(effect)::S2(entry)::T5(effect)::S2(entry) + stimulus: + - event: Start + - event: Continue + - event: AnotherSignal + - event: Pending + behaviors: + pssm_T3_effect: + - T3(effect) + pssm_S2_entry: + - S2(entry) + pssm_T5_effect: + - T5(effect) + pssm_T4_effect: + - T4(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - send: + event: Pending + transitions: + - event: Pending + target: S2 + 'on': + - pssm_T3_effect + S2: + enter: + - pssm_S2_entry + transitions: + - event: AnotherSignal + target: S2 + 'on': + - pssm_T5_effect + - event: Continue + target: S2 + 'on': + - pssm_T4_effect + - event: Pending + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_006-A.yaml b/tests/uml/pssm/cases/Deferred/Deferred_006-A.yaml index cd1f842a..11b36f4c 100644 --- a/tests/uml/pssm/cases/Deferred/Deferred_006-A.yaml +++ b/tests/uml/pssm/cases/Deferred/Deferred_006-A.yaml @@ -1,26 +1,26 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- defer -- do_activity_accept -expected_traces: -- S2(doActivity-AnotherSignal) -stimulus: -- event: Start -- event: AnotherSignal -behaviors: - on_invoke_S2: - - accept: AnotherSignal -statechart: - name: Deferred_006-A - states: - S2: - transitions: - - event: done.invoke.S2 - target: FinalState1 - FinalState1: - final: true - S1: - initial: true - transitions: - - event: Start - target: S2 +name: Deferred_006-A +x-pssm: + requires: + - defer + - do_activity_accept + expected_traces: + - S2(doActivity-AnotherSignal) + stimulus: + - event: Start + - event: AnotherSignal + behaviors: + on_invoke_S2: + - accept: AnotherSignal +states: + S2: + transitions: + - event: done.invoke.S2 + target: FinalState1 + FinalState1: + final: true + S1: + initial: true + transitions: + - event: Start + target: S2 diff --git a/tests/uml/pssm/cases/Deferred/Deferred_006-B.yaml b/tests/uml/pssm/cases/Deferred/Deferred_006-B.yaml index e1f411cd..4a95eed1 100644 --- a/tests/uml/pssm/cases/Deferred/Deferred_006-B.yaml +++ b/tests/uml/pssm/cases/Deferred/Deferred_006-B.yaml @@ -1,30 +1,30 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- defer -- do_activity_accept -expected_traces: -- S2(doActivityPartI)::S2(doActivityPartII) -- '' -stimulus: -- event: Start -- event: Pending -- event: AnotherSignal -behaviors: - on_invoke_S2: - - accept: AnotherSignal -statechart: - name: Deferred_006-B - states: - S2: - transitions: - - event: done.invoke.S2 - target: FinalState1 - - event: AnotherSignal - target: FinalState1 - FinalState1: - final: true - S1: - initial: true - transitions: - - event: Start - target: S2 +name: Deferred_006-B +x-pssm: + requires: + - defer + - do_activity_accept + expected_traces: + - S2(doActivityPartI)::S2(doActivityPartII) + - '' + stimulus: + - event: Start + - event: Pending + - event: AnotherSignal + behaviors: + on_invoke_S2: + - accept: AnotherSignal +states: + S2: + transitions: + - event: done.invoke.S2 + target: FinalState1 + - event: AnotherSignal + target: FinalState1 + FinalState1: + final: true + S1: + initial: true + transitions: + - event: Start + target: S2 diff --git a/tests/uml/pssm/cases/Deferred/Deferred_006-C.yaml b/tests/uml/pssm/cases/Deferred/Deferred_006-C.yaml index 40d12c84..1ed8b09b 100644 --- a/tests/uml/pssm/cases/Deferred/Deferred_006-C.yaml +++ b/tests/uml/pssm/cases/Deferred/Deferred_006-C.yaml @@ -1,50 +1,50 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- defer -- do_activity_accept -expected_traces: -- S1.2(doActivity)::S1.1(doActivity) -- S1.1(doActivity)::S1.2(doActivity) -stimulus: -- event: Start -- event: Continue -- event: Continue -behaviors: - on_invoke_S1_1: - - accept: Continue - on_invoke_S1_2: - - accept: Continue -statechart: - name: Deferred_006-C - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - states: - S1_Region1: - states: - S1_1: - initial: true - transitions: - - event: done.invoke.S1_1 - target: Region1_FinalState1 - Region1_FinalState1: - final: true - S1_Region2: - states: - S1_2: - initial: true - transitions: - - event: done.invoke.S1_2 - target: Region2_FinalState1 - Region2_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: Deferred_006-C +x-pssm: + requires: + - defer + - do_activity_accept + expected_traces: + - S1.2(doActivity)::S1.1(doActivity) + - S1.1(doActivity)::S1.2(doActivity) + stimulus: + - event: Start + - event: Continue + - event: Continue + behaviors: + on_invoke_S1_1: + - accept: Continue + on_invoke_S1_2: + - accept: Continue +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + transitions: + - event: done.invoke.S1_1 + target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S1_2: + initial: true + transitions: + - event: done.invoke.S1_2 + target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Deferred/Deferred_007.yaml b/tests/uml/pssm/cases/Deferred/Deferred_007.yaml index 00e6b81f..950771d8 100644 --- a/tests/uml/pssm/cases/Deferred/Deferred_007.yaml +++ b/tests/uml/pssm/cases/Deferred/Deferred_007.yaml @@ -1,51 +1,51 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- call_event -- defer -expected_traces: -- S1(exit)::T3(effect)::T4(effect)[in=true][out=false]::[out=false] -stimulus: -- event: Start -- call: op - kwargs: - p1: true - trace_result: '[out={result}]' -- event: Continue -behaviors: - pssm_S1_exit: - - S1(exit) - on_invoke_S1: - - send: - event: Continue - pssm_T3_effect: - - T3(effect) - pssm_T4_effect: - - T4(effect)[in={p1}] -statechart: - name: Deferred_007 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - exit: - - pssm_S1_exit - transitions: - - event: Continue - target: S2 - 'on': - - pssm_T3_effect - S2: - transitions: - - event: op - target: S3 - 'on': - - pssm_T4_effect - S3: - transitions: - - event: Continue - target: FinalState1 - FinalState1: - final: true +name: Deferred_007 +x-pssm: + requires: + - call_event + - defer + expected_traces: + - S1(exit)::T3(effect)::T4(effect)[in=true][out=false]::[out=false] + stimulus: + - event: Start + - call: op + kwargs: + p1: true + trace_result: '[out={result}]' + - event: Continue + behaviors: + pssm_S1_exit: + - S1(exit) + on_invoke_S1: + - send: + event: Continue + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect)[in={p1}] +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + transitions: + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + S2: + transitions: + - event: op + target: S3 + 'on': + - pssm_T4_effect + S3: + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Entering/Entering_004.yaml b/tests/uml/pssm/cases/Entering/Entering_004.yaml index e9dadfa5..79aaa994 100644 --- a/tests/uml/pssm/cases/Entering/Entering_004.yaml +++ b/tests/uml/pssm/cases/Entering/Entering_004.yaml @@ -1,39 +1,39 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::S1(exit) -stimulus: -- event: Start -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) -statechart: - name: Entering_004 - states: - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - enter: - - pssm_S1_1_entry - transitions: - - target: S1_FinalState1 - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true - waiting: - initial: true - transitions: - - event: Start - target: S1 +name: Entering_004 +x-pssm: + requires: [] + expected_traces: + - S1(entry)::S1(exit) + stimulus: + - event: Start + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) +states: + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true + waiting: + initial: true + transitions: + - event: Start + target: S1 diff --git a/tests/uml/pssm/cases/Entering/Entering_005.yaml b/tests/uml/pssm/cases/Entering/Entering_005.yaml index cd2c1f3d..bfac8d72 100644 --- a/tests/uml/pssm/cases/Entering/Entering_005.yaml +++ b/tests/uml/pssm/cases/Entering/Entering_005.yaml @@ -1,42 +1,42 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T2(effect)::S1(entry)::S1.1(entry)::S1.1.1(entry) -stimulus: -- event: Start -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_1_1_entry: - - S1.1.1(entry) - pssm_T2_effect: - - T2(effect) -statechart: - name: Entering_005 - states: - S1: - enter: - - pssm_S1_entry - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - states: - S1_1_1: - initial: true - enter: - - pssm_S1_1_1_entry - transitions: - - target: FS1_1_1 - FS1_1_1: - final: true - waiting: - initial: true - transitions: - - event: Start - target: S1_1_1 - 'on': - - pssm_T2_effect +name: Entering_005 +x-pssm: + requires: [] + expected_traces: + - T2(effect)::S1(entry)::S1.1(entry)::S1.1.1(entry) + stimulus: + - event: Start + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_1_entry: + - S1.1.1(entry) + pssm_T2_effect: + - T2(effect) +states: + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + states: + S1_1_1: + initial: true + enter: + - pssm_S1_1_1_entry + transitions: + - target: FS1_1_1 + FS1_1_1: + final: true + waiting: + initial: true + transitions: + - event: Start + target: S1_1_1 + 'on': + - pssm_T2_effect diff --git a/tests/uml/pssm/cases/Entering/Entering_009.yaml b/tests/uml/pssm/cases/Entering/Entering_009.yaml index ed832553..c77b3ac9 100644 --- a/tests/uml/pssm/cases/Entering/Entering_009.yaml +++ b/tests/uml/pssm/cases/Entering/Entering_009.yaml @@ -1,38 +1,38 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -expected_traces: -- T2(effect)::S1(entry)::T1.1(effect)::S1.1(entry) -stimulus: -- event: Start -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_1_entry: - - S1.1(entry) - pssm_T2_effect: - - T2(effect) - pssm_T1_1_effect: - - T1.1(effect) -statechart: - name: Entering_009 - states: - S1: - enter: - - pssm_S1_entry - states: - S1_1: - enter: - - pssm_S1_1_entry - transitions: - - target: FS1 - FS1: - final: true - waiting: - initial: true - transitions: - - event: Start - target: S1_1 - 'on': - - pssm_T2_effect - - pssm_T1_1_effect +name: Entering_009 +x-pssm: + requires: + - entry_point + expected_traces: + - T2(effect)::S1(entry)::T1.1(effect)::S1.1(entry) + stimulus: + - event: Start + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T2_effect: + - T2(effect) + pssm_T1_1_effect: + - T1.1(effect) +states: + S1: + enter: + - pssm_S1_entry + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: FS1 + FS1: + final: true + waiting: + initial: true + transitions: + - event: Start + target: S1_1 + 'on': + - pssm_T2_effect + - pssm_T1_1_effect diff --git a/tests/uml/pssm/cases/Entering/Entering_010.yaml b/tests/uml/pssm/cases/Entering/Entering_010.yaml index 9a913d9d..aa5fb2d6 100644 --- a/tests/uml/pssm/cases/Entering/Entering_010.yaml +++ b/tests/uml/pssm/cases/Entering/Entering_010.yaml @@ -1,65 +1,65 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::S1.1(entry)::T2.1(effect)::S2.1(entry) -- S1(entry)::T2.1(effect)::S2.1(entry)::S1.1(entry) -- S1(entry)::T2.1(effect)::S1.1(entry)::S2.1(entry) -stimulus: -- event: Start -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_1_entry: - - S1.1(entry) - pssm_T1_1_effect: - - T1.1(effect) - pssm_S2_1_entry: - - S2.1(entry) - pssm_T2_1_effect: - - T2.1(effect) -statechart: - name: Entering_010 - states: - wait: - initial: true - transitions: - - event: Start - target: S1_1 - S1: - parallel: true - enter: - - pssm_S1_entry - states: - S1_Region1: - states: - S1_1: - enter: - - pssm_S1_1_entry - transitions: - - target: Region1_FinalState1 - Region1_FinalState1: - final: true - transitions: - - target: S1_1 - initial: true - 'on': - - pssm_T1_1_effect - S1_Region2: - states: - S2_1: - enter: - - pssm_S2_1_entry - transitions: - - target: Region2_FinalState1 - Region2_FinalState1: - final: true - transitions: - - target: S2_1 - initial: true - 'on': - - pssm_T2_1_effect - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: Entering_010 +x-pssm: + requires: [] + expected_traces: + - S1(entry)::S1.1(entry)::T2.1(effect)::S2.1(entry) + - S1(entry)::T2.1(effect)::S2.1(entry)::S1.1(entry) + - S1(entry)::T2.1(effect)::S1.1(entry)::S2.1(entry) + stimulus: + - event: Start + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_1_effect: + - T1.1(effect) + pssm_S2_1_entry: + - S2.1(entry) + pssm_T2_1_effect: + - T2.1(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 + S1: + parallel: true + enter: + - pssm_S1_entry + states: + S1_Region1: + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + S1_Region2: + states: + S2_1: + enter: + - pssm_S2_1_entry + transitions: + - target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - target: S2_1 + initial: true + 'on': + - pssm_T2_1_effect + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Entering/Entering_011.yaml b/tests/uml/pssm/cases/Entering/Entering_011.yaml index 9d9c11e9..55ba2400 100644 --- a/tests/uml/pssm/cases/Entering/Entering_011.yaml +++ b/tests/uml/pssm/cases/Entering/Entering_011.yaml @@ -1,69 +1,69 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::T1.1(effect)::T2.1(effect)::S1.1(entry)::S1.2(entry) -- S1(entry)::T2.1(effect)::S1.2(entry)::T1.1(effect)::S1.1(entry) -- S1(entry)::T1.1(effect)::S1.1(entry)::T2.1(effect)::S1.2(entry) -- S1(entry)::T2.1(effect)::T1.1(effect)::S1.1(entry)::S1.2(entry) -- S1(entry)::T1.1(effect)::T2.1(effect)::S1.2(entry)::S1.1(entry) -- S1(entry)::T2.1(effect)::T1.1(effect)::S1.2(entry)::S1.1(entry) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_2_entry: - - S1.2(entry) - pssm_T2_1_effect: - - T2.1(effect) - pssm_S1_1_entry: - - S1.1(entry) - pssm_T1_1_effect: - - T1.1(effect) -statechart: - name: Entering_011 - states: - waiting: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - enter: - - pssm_S1_entry - states: - S1_Region1: - states: - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - target: Region1_FinalState1 - Region1_FinalState1: - final: true - transitions: - - target: S1_2 - initial: true - 'on': - - pssm_T2_1_effect - S1_Region2: - states: - S1_1: - enter: - - pssm_S1_1_entry - transitions: - - target: Region2_FinalState1 - Region2_FinalState1: - final: true - transitions: - - target: S1_1 - initial: true - 'on': - - pssm_T1_1_effect - transitions: - - event: Continue - target: FinalState1 - FinalState1: - final: true +name: Entering_011 +x-pssm: + requires: [] + expected_traces: + - S1(entry)::T1.1(effect)::T2.1(effect)::S1.1(entry)::S1.2(entry) + - S1(entry)::T2.1(effect)::S1.2(entry)::T1.1(effect)::S1.1(entry) + - S1(entry)::T1.1(effect)::S1.1(entry)::T2.1(effect)::S1.2(entry) + - S1(entry)::T2.1(effect)::T1.1(effect)::S1.1(entry)::S1.2(entry) + - S1(entry)::T1.1(effect)::T2.1(effect)::S1.2(entry)::S1.1(entry) + - S1(entry)::T2.1(effect)::T1.1(effect)::S1.2(entry)::S1.1(entry) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_2_entry: + - S1.2(entry) + pssm_T2_1_effect: + - T2.1(effect) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_1_effect: + - T1.1(effect) +states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + enter: + - pssm_S1_entry + states: + S1_Region1: + states: + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + transitions: + - target: S1_2 + initial: true + 'on': + - pssm_T2_1_effect + S1_Region2: + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Entry/Entry_002-A.yaml b/tests/uml/pssm/cases/Entry/Entry_002-A.yaml index 576267f5..41ecc94a 100644 --- a/tests/uml/pssm/cases/Entry/Entry_002-A.yaml +++ b/tests/uml/pssm/cases/Entry/Entry_002-A.yaml @@ -1,49 +1,49 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -expected_traces: -- S1.1(entry)::S2.1(entry) -- S2.1(entry)::S1.1(entry) -stimulus: -- event: Start -behaviors: - pssm_S1_1_entry: - - S1.1(entry) - pssm_S2_1_entry: - - S2.1(entry) -statechart: - name: Entry_002-A - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - states: - S1_Region1: - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - transitions: - - target: FSR1 - FSR1: - final: true - S1_Region2: - states: - S2_1: - initial: true - enter: - - pssm_S2_1_entry - transitions: - - target: FSR2 - FSR2: - final: true - transitions: - - event: done.state.S1 - target: FS1 - FS1: - final: true +name: Entry_002-A +x-pssm: + requires: + - entry_point + expected_traces: + - S1.1(entry)::S2.1(entry) + - S2.1(entry)::S1.1(entry) + stimulus: + - event: Start + behaviors: + pssm_S1_1_entry: + - S1.1(entry) + pssm_S2_1_entry: + - S2.1(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: FSR1 + FSR1: + final: true + S1_Region2: + states: + S2_1: + initial: true + enter: + - pssm_S2_1_entry + transitions: + - target: FSR2 + FSR2: + final: true + transitions: + - event: done.state.S1 + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Entry/Entry_002-B.yaml b/tests/uml/pssm/cases/Entry/Entry_002-B.yaml index 2ea4e6b0..bb08ccb7 100644 --- a/tests/uml/pssm/cases/Entry/Entry_002-B.yaml +++ b/tests/uml/pssm/cases/Entry/Entry_002-B.yaml @@ -1,56 +1,56 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -expected_traces: -- S2.1(entry)::S1.2(entry) -- S1.2(entry)::S2.1(entry) -stimulus: -- event: Start -behaviors: - pssm_S2_1_entry: - - S2.1(entry) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_2_entry: - - S1.2(entry) -statechart: - name: Entry_002-B - states: - wait: - initial: true - transitions: - - event: Start - target: S1_2 - S1: - parallel: true - states: - S1_Region1: - states: - S2_1: - initial: true - enter: - - pssm_S2_1_entry - transitions: - - target: FSR2 - FSR2: - final: true - S1_Region2: - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - transitions: - - target: S1_2 - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - target: FSR1 - FSR1: - final: true - transitions: - - event: done.state.S1 - target: FS1 - FS1: - final: true +name: Entry_002-B +x-pssm: + requires: + - entry_point + expected_traces: + - S2.1(entry)::S1.2(entry) + - S1.2(entry)::S2.1(entry) + stimulus: + - event: Start + behaviors: + pssm_S2_1_entry: + - S2.1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_2_entry: + - S1.2(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1_2 + S1: + parallel: true + states: + S1_Region1: + states: + S2_1: + initial: true + enter: + - pssm_S2_1_entry + transitions: + - target: FSR2 + FSR2: + final: true + S1_Region2: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: FSR1 + FSR1: + final: true + transitions: + - event: done.state.S1 + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Entry/Entry_002-C.yaml b/tests/uml/pssm/cases/Entry/Entry_002-C.yaml index f077b41b..245d7577 100644 --- a/tests/uml/pssm/cases/Entry/Entry_002-C.yaml +++ b/tests/uml/pssm/cases/Entry/Entry_002-C.yaml @@ -1,40 +1,40 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -expected_traces: -- T2(effect)::S1(entry)::T1.1(effect) -stimulus: -- event: Start -behaviors: - pssm_T2_effect: - - T2(effect) - pssm_T1_1_effect: - - T1.1(effect) - pssm_S1_entry: - - S1(entry) -statechart: - name: Entry_002-C - states: - wait: - initial: true - transitions: - - event: Start - target: S1_1 - 'on': - - pssm_T2_effect - - pssm_T1_1_effect - S1: - enter: - - pssm_S1_entry - states: - S1_1: - initial: true - transitions: - - target: S1_FS1 - S1_FS1: - final: true - transitions: - - event: done.state.S1 - target: FS1 - FS1: - final: true +name: Entry_002-C +x-pssm: + requires: + - entry_point + expected_traces: + - T2(effect)::S1(entry)::T1.1(effect) + stimulus: + - event: Start + behaviors: + pssm_T2_effect: + - T2(effect) + pssm_T1_1_effect: + - T1.1(effect) + pssm_S1_entry: + - S1(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 + 'on': + - pssm_T2_effect + - pssm_T1_1_effect + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + transitions: + - target: S1_FS1 + S1_FS1: + final: true + transitions: + - event: done.state.S1 + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Entry/Entry_002-D.yaml b/tests/uml/pssm/cases/Entry/Entry_002-D.yaml index 3a98f259..7e8307b6 100644 --- a/tests/uml/pssm/cases/Entry/Entry_002-D.yaml +++ b/tests/uml/pssm/cases/Entry/Entry_002-D.yaml @@ -1,46 +1,46 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -expected_traces: -- T2(effect)::S1(entry)::T1.1(effect)::T1.2(effect) -stimulus: -- event: Start -behaviors: - pssm_T2_effect: - - T2(effect) - pssm_S1_entry: - - S1(entry) - pssm_T1_2_effect: - - T1.2(effect) - pssm_T1_1_effect: - - T1.1(effect) -statechart: - name: Entry_002-D - states: - wait: +name: Entry_002-D +x-pssm: + requires: + - entry_point + expected_traces: + - T2(effect)::S1(entry)::T1.1(effect)::T1.2(effect) + stimulus: + - event: Start + behaviors: + pssm_T2_effect: + - T2(effect) + pssm_S1_entry: + - S1(entry) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_1_effect: + - T1.1(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + S1: + enter: + - pssm_S1_entry + states: + S1_1: + transitions: + - target: S1_FS1 + 'on': + - pssm_T1_2_effect + S1_FS1: + final: true + transitions: + - target: S1_1 initial: true - transitions: - - event: Start - target: S1 - 'on': - - pssm_T2_effect - S1: - enter: - - pssm_S1_entry - states: - S1_1: - transitions: - - target: S1_FS1 - 'on': - - pssm_T1_2_effect - S1_FS1: - final: true - transitions: - - target: S1_1 - initial: true - 'on': - - pssm_T1_1_effect - - event: done.state.S1 - target: FS1 - FS1: - final: true + 'on': + - pssm_T1_1_effect + - event: done.state.S1 + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Entry/Entry_002-E.yaml b/tests/uml/pssm/cases/Entry/Entry_002-E.yaml index 7cd7a396..1371f72f 100644 --- a/tests/uml/pssm/cases/Entry/Entry_002-E.yaml +++ b/tests/uml/pssm/cases/Entry/Entry_002-E.yaml @@ -1,67 +1,67 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -expected_traces: -- S2(entry)::S2(exit) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S2_1_entry: - - S2.1(effect) - pssm_S2_entry: - - S2(entry) - pssm_S2_exit: - - S2(exit) -statechart: - name: Entry_002-E - states: - wait: - initial: true - transitions: - - event: Start - target: S1_1 S2_1 - cond: - - 'True' - - 'False' - - event: Continue - target: S2 - S1: - parallel: true - enter: - - pssm_S1_entry - states: - S1_Region1: - states: - S1_1: - enter: - - pssm_S1_1_entry - transitions: - - target: FSR1 - FSR1: - final: true - S1_Region2: - states: - S2_1: - enter: - - pssm_S2_1_entry - transitions: - - target: FSR2 - FSR2: - final: true - transitions: - - event: done.state.S1 - target: FS1 - FS1: - final: true - S2: - enter: - - pssm_S2_entry - exit: - - pssm_S2_exit - transitions: - - target: FS1 +name: Entry_002-E +x-pssm: + requires: + - entry_point + expected_traces: + - S2(entry)::S2(exit) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S2_1_entry: + - S2.1(effect) + pssm_S2_entry: + - S2(entry) + pssm_S2_exit: + - S2(exit) +states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 S2_1 + cond: + - 'True' + - 'False' + - event: Continue + target: S2 + S1: + parallel: true + enter: + - pssm_S1_entry + states: + S1_Region1: + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: FSR1 + FSR1: + final: true + S1_Region2: + states: + S2_1: + enter: + - pssm_S2_1_entry + transitions: + - target: FSR2 + FSR2: + final: true + transitions: + - event: done.state.S1 + target: FS1 + FS1: + final: true + S2: + enter: + - pssm_S2_entry + exit: + - pssm_S2_exit + transitions: + - target: FS1 diff --git a/tests/uml/pssm/cases/Entry/Entry_002-F.yaml b/tests/uml/pssm/cases/Entry/Entry_002-F.yaml index 477ec6cf..1c94352e 100644 --- a/tests/uml/pssm/cases/Entry/Entry_002-F.yaml +++ b/tests/uml/pssm/cases/Entry/Entry_002-F.yaml @@ -1,60 +1,60 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -expected_traces: -- S1(entry)[in=8]::S1.1(entry)[in=8] -stimulus: -- event: Start -- event: IntegerData - kwargs: - value: 8 -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry)[in={value}] - pssm_S1_1_entry: - - S1.1(entry)[in={value}] - pssm_S1_2_entry: - - S1.2(entry)[in={value}] - pssm_T4_effect: - - T4(effect) -statechart: - name: Entry_002-F - states: - S1: - enter: - - pssm_S1_entry - states: - S1_1: - enter: - - pssm_S1_1_entry - transitions: - - target: S1_FinalState1 - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - target: S1_FinalState1 - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - wait: - initial: true - transitions: - - event: IntegerData - target: S1_1 - cond: value < 10 - - event: IntegerData - target: S1_2 - cond: value < 5 - - event: Continue - target: S2 - 'on': - - pssm_T4_effect - FinalState1: - final: true - S2: - transitions: - - target: FinalState1 +name: Entry_002-F +x-pssm: + requires: + - entry_point + expected_traces: + - S1(entry)[in=8]::S1.1(entry)[in=8] + stimulus: + - event: Start + - event: IntegerData + kwargs: + value: 8 + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry)[in={value}] + pssm_S1_1_entry: + - S1.1(entry)[in={value}] + pssm_S1_2_entry: + - S1.2(entry)[in={value}] + pssm_T4_effect: + - T4(effect) +states: + S1: + enter: + - pssm_S1_entry + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: S1_FinalState1 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + wait: + initial: true + transitions: + - event: IntegerData + target: S1_1 + cond: value < 10 + - event: IntegerData + target: S1_2 + cond: value < 5 + - event: Continue + target: S2 + 'on': + - pssm_T4_effect + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Event/Event_001.yaml b/tests/uml/pssm/cases/Event/Event_001.yaml index 393216a0..d46232e6 100644 --- a/tests/uml/pssm/cases/Event/Event_001.yaml +++ b/tests/uml/pssm/cases/Event/Event_001.yaml @@ -1,21 +1,21 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- wait(exit) -stimulus: -- event: Start -behaviors: - pssm_wait_exit: +name: Event_001 +x-pssm: + requires: [] + expected_traces: - wait(exit) -statechart: - name: Event_001 - states: - wait: - initial: true - exit: - - pssm_wait_exit - transitions: - - event: Start - target: FinalState1 - FinalState1: - final: true + stimulus: + - event: Start + behaviors: + pssm_wait_exit: + - wait(exit) +states: + wait: + initial: true + exit: + - pssm_wait_exit + transitions: + - event: Start + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_002.yaml b/tests/uml/pssm/cases/Event/Event_002.yaml index 5e420f04..db2421f7 100644 --- a/tests/uml/pssm/cases/Event/Event_002.yaml +++ b/tests/uml/pssm/cases/Event/Event_002.yaml @@ -1,41 +1,41 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::S1.1(entry)::S1(exit) -stimulus: -- event: Start -- event: AnotherSignal -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) -statechart: - name: Event_002 - states: - Waiting: - initial: true - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - transitions: - - event: Continue - target: S2_2 - S2_2: {} - transitions: - - event: AnotherSignal - target: FinalState1 - FinalState1: - final: true +name: Event_002 +x-pssm: + requires: [] + expected_traces: + - S1(entry)::S1.1(entry)::S1(exit) + stimulus: + - event: Start + - event: AnotherSignal + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) +states: + Waiting: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - event: Continue + target: S2_2 + S2_2: {} + transitions: + - event: AnotherSignal + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_008.yaml b/tests/uml/pssm/cases/Event/Event_008.yaml index e21a5a88..5a52c8a3 100644 --- a/tests/uml/pssm/cases/Event/Event_008.yaml +++ b/tests/uml/pssm/cases/Event/Event_008.yaml @@ -1,34 +1,34 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T2(effect)::T3(effect) -stimulus: -- event: Start -- event: AnotherSignal -- event: Continue -behaviors: - pssm_T2_effect: - - T2(effect) - pssm_T3_effect: - - T3(effect) -statechart: - name: Event_008 - states: - waiting: - initial: true - transitions: - - event: Start - target: S1 - 'on': - - pssm_T2_effect - S1: - transitions: - - target: S2 - 'on': - - pssm_T3_effect - S2: - transitions: - - event: Continue - target: FinalState1 - FinalState1: - final: true +name: Event_008 +x-pssm: + requires: [] + expected_traces: + - T2(effect)::T3(effect) + stimulus: + - event: Start + - event: AnotherSignal + - event: Continue + behaviors: + pssm_T2_effect: + - T2(effect) + pssm_T3_effect: + - T3(effect) +states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + S1: + transitions: + - target: S2 + 'on': + - pssm_T3_effect + S2: + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_009.yaml b/tests/uml/pssm/cases/Event/Event_009.yaml index 6bc429b5..66d2ef02 100644 --- a/tests/uml/pssm/cases/Event/Event_009.yaml +++ b/tests/uml/pssm/cases/Event/Event_009.yaml @@ -1,61 +1,61 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T1.2(effect)::T2.2(effect) -- T2.2(effect)::T1.2(effect) -stimulus: -- event: Start -- event: Continue -- event: Pending -behaviors: - pssm_T3_effect: - - T3(effect) - pssm_T1_2_effect: - - T1.2(effect) - pssm_T2_2_effect: - - T2.2(effect) -statechart: - name: Event_009 - states: - waiting: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - states: - S1_Region1: - states: - S1_1: - initial: true - transitions: - - event: Continue - target: Region1_FinalState1 - 'on': - - pssm_T1_2_effect - Region1_FinalState1: - final: true - S1_Region2: - states: - S1_2: - initial: true - transitions: - - event: Continue - target: Region2_FinalState1 - 'on': - - pssm_T2_2_effect - Region2_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - - event: Pending - target: invalid - 'on': - - pssm_T3_effect - FinalState1: - final: true - invalid: - transitions: - - target: FinalState1 +name: Event_009 +x-pssm: + requires: [] + expected_traces: + - T1.2(effect)::T2.2(effect) + - T2.2(effect)::T1.2(effect) + stimulus: + - event: Start + - event: Continue + - event: Pending + behaviors: + pssm_T3_effect: + - T3(effect) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T2_2_effect: + - T2.2(effect) +states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + transitions: + - event: Continue + target: Region1_FinalState1 + 'on': + - pssm_T1_2_effect + Region1_FinalState1: + final: true + S1_Region2: + states: + S1_2: + initial: true + transitions: + - event: Continue + target: Region2_FinalState1 + 'on': + - pssm_T2_2_effect + Region2_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + - event: Pending + target: invalid + 'on': + - pssm_T3_effect + FinalState1: + final: true + invalid: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Event/Event_010.yaml b/tests/uml/pssm/cases/Event/Event_010.yaml index d40efc07..1089f27b 100644 --- a/tests/uml/pssm/cases/Event/Event_010.yaml +++ b/tests/uml/pssm/cases/Event/Event_010.yaml @@ -1,81 +1,81 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T2(effect)::S1(entry)::S1.1(entry)::T1.3(effect)::S1.3(entry) -- T2(effect)::S1(entry)::S1.1(entry)::T1.2(effect)::S1.2(entry) -- T3(effect)::S2(entry) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_T2_effect: - - T2(effect) - pssm_T3_effect: - - T3(effect) - pssm_S1_entry: - - S1(entry) - pssm_S1_1_entry: - - S1.1(entry) - pssm_T1_2_effect: - - T1.2(effect) - pssm_T1_3_effect: - - T1.3(effect) - pssm_S1_2_entry: - - S1.2(entry) - pssm_S1_3_entry: - - S1.3(entry) - pssm_S2_entry: - - S2(entry) -statechart: - name: Event_010 - states: - waiting: - initial: true - transitions: - - event: Start - target: S1 - 'on': - - pssm_T2_effect - - event: Start - target: S2 - 'on': - - pssm_T3_effect - S1: - enter: - - pssm_S1_entry - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - transitions: - - event: Continue - target: S1_2 - 'on': - - pssm_T1_2_effect - - event: Continue - target: S1_3 - 'on': - - pssm_T1_3_effect - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - target: S1_FinalState1 - S1_3: - enter: - - pssm_S1_3_entry - transitions: - - target: S1_FinalState1 - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - S2: - enter: - - pssm_S2_entry - transitions: - - target: FinalState1 - FinalState1: - final: true +name: Event_010 +x-pssm: + requires: [] + expected_traces: + - T2(effect)::S1(entry)::S1.1(entry)::T1.3(effect)::S1.3(entry) + - T2(effect)::S1(entry)::S1.1(entry)::T1.2(effect)::S1.2(entry) + - T3(effect)::S2(entry) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_T2_effect: + - T2(effect) + pssm_T3_effect: + - T3(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_3_effect: + - T1.3(effect) + pssm_S1_2_entry: + - S1.2(entry) + pssm_S1_3_entry: + - S1.3(entry) + pssm_S2_entry: + - S2(entry) +states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + - event: Start + target: S2 + 'on': + - pssm_T3_effect + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - event: Continue + target: S1_2 + 'on': + - pssm_T1_2_effect + - event: Continue + target: S1_3 + 'on': + - pssm_T1_3_effect + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: S1_FinalState1 + S1_3: + enter: + - pssm_S1_3_entry + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + S2: + enter: + - pssm_S2_entry + transitions: + - target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_015.yaml b/tests/uml/pssm/cases/Event/Event_015.yaml index a50dd176..c6ffe698 100644 --- a/tests/uml/pssm/cases/Event/Event_015.yaml +++ b/tests/uml/pssm/cases/Event/Event_015.yaml @@ -1,38 +1,38 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T1.3(effect) -- T1.2(effect) -stimulus: -- event: Start -behaviors: - pssm_T1_2_effect: - - T1.2(effect) - pssm_T1_3_effect: +name: Event_015 +x-pssm: + requires: [] + expected_traces: - T1.3(effect) -statechart: - name: Event_015 - states: - waiting: - initial: true - transitions: - - event: Start - target: S1 - S1: - states: - S1_1: - initial: true - transitions: - - target: FS1_2 - 'on': - - pssm_T1_2_effect - - target: FS1_2 - 'on': - - pssm_T1_3_effect - FS1_2: - final: true - transitions: - - event: done.state.S1 - target: FSR1 - FSR1: - final: true + - T1.2(effect) + stimulus: + - event: Start + behaviors: + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_3_effect: + - T1.3(effect) +states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + S1: + states: + S1_1: + initial: true + transitions: + - target: FS1_2 + 'on': + - pssm_T1_2_effect + - target: FS1_2 + 'on': + - pssm_T1_3_effect + FS1_2: + final: true + transitions: + - event: done.state.S1 + target: FSR1 + FSR1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_016-A.yaml b/tests/uml/pssm/cases/Event/Event_016-A.yaml index 398eb164..eae046c4 100644 --- a/tests/uml/pssm/cases/Event/Event_016-A.yaml +++ b/tests/uml/pssm/cases/Event/Event_016-A.yaml @@ -1,42 +1,42 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T1.2(effect)::T3(effect) -stimulus: -- event: Start -- event: Continue -- event: Continue -behaviors: - pssm_T3_effect: - - T3(effect) - pssm_T1_2_effect: - - T1.2(effect) -statechart: - name: Event_016-A - states: - S1: - states: - S1_1: - initial: true - transitions: - - event: Continue - target: FS1_1 - 'on': - - pssm_T1_2_effect - FS1_1: - final: true - transitions: - - event: Continue - target: S2 - 'on': - - pssm_T3_effect - S2: - transitions: - - target: FS1 - FS1: - final: true - wait: - initial: true - transitions: - - event: Start - target: S1 +name: Event_016-A +x-pssm: + requires: [] + expected_traces: + - T1.2(effect)::T3(effect) + stimulus: + - event: Start + - event: Continue + - event: Continue + behaviors: + pssm_T3_effect: + - T3(effect) + pssm_T1_2_effect: + - T1.2(effect) +states: + S1: + states: + S1_1: + initial: true + transitions: + - event: Continue + target: FS1_1 + 'on': + - pssm_T1_2_effect + FS1_1: + final: true + transitions: + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + S2: + transitions: + - target: FS1 + FS1: + final: true + wait: + initial: true + transitions: + - event: Start + target: S1 diff --git a/tests/uml/pssm/cases/Event/Event_016-B.yaml b/tests/uml/pssm/cases/Event/Event_016-B.yaml index 73b2cda2..0328fea2 100644 --- a/tests/uml/pssm/cases/Event/Event_016-B.yaml +++ b/tests/uml/pssm/cases/Event/Event_016-B.yaml @@ -1,144 +1,144 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T2.1.2(effect)::T2.2.2(effect)::T1.3(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) -- T2.2.2(effect)::T2.1.2(effect)::T1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) -- T2.2.2(effect)::T2.1.2(effect)::T1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) -- T2.2.2(effect)::T2.1.2(effect)::T1.3(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) -- T2.1.2(effect)::T1.3(effect)::T2.2.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) -- T1.3(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) -- T2.1.2(effect)::T2.2.2(effect)::T1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) -- T2.2.2(effect)::T1.3(effect)::T2.1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) -- T2.1.2(effect)::T1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) -- T2.2.2(effect)::T1.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) -- T2.2.2(effect)::T2.1.2(effect)::T1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) -- T2.1.2(effect)::T2.2.2(effect)::T1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) -- T1.3(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) -- T1.2(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) -- T2.1.2(effect)::T2.2.2(effect)::T1.3(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) -- T1.2(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) -- T1.2(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) -- T2.2.2(effect)::T2.1.2(effect)::T1.3(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) -- T1.2(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) -- T1.2(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) -- T2.2.2(effect)::T1.3(effect)::T2.1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) -- T1.2(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) -- T2.1.2(effect)::T1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) -- T1.3(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) -- T1.3(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) -- T2.1.2(effect)::T1.3(effect)::T2.2.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) -- T2.2.2(effect)::T2.1.2(effect)::T1.3(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) -- T2.2.2(effect)::T1.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) -- T2.2.2(effect)::T1.3(effect)::T2.1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) -- T2.1.2(effect)::T1.3(effect)::T2.2.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) -- T2.1.2(effect)::T2.2.2(effect)::T1.3(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) -- T1.3(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) -- T2.1.2(effect)::T1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) -- T2.1.2(effect)::T2.2.2(effect)::T1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) -- T1.3(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) -- T2.2.2(effect)::T1.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) -stimulus: -- event: Start -- event: Continue -- event: Continue -- event: Continue -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_T1_2_effect: - - T1.2(effect) - pssm_T1_3_effect: - - T1.3(effect) - pssm_S1_2_exit: - - S1.2(exit) - pssm_S2_1_exit: - - S2.1(exit) - pssm_T2_2_effect: - - T2.2(effect) - pssm_T2_3_effect: - - T2.3(effect) - pssm_T2_4_effect: - - T2.4(effect) - pssm_T2_1_2_effect: - - T2.1.2(effect) - pssm_T2_2_2_effect: - - T2.2.2(effect) -statechart: - name: Event_016-B - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S1_1: - initial: true - states: {} - transitions: - - event: Continue - target: S1_2 - 'on': - - pssm_T1_2_effect - - event: Continue - target: S1_2 - 'on': - - pssm_T1_3_effect - S1_2: - exit: - - pssm_S1_2_exit - S1_Region2: - states: - S2_1: - initial: true - parallel: true - exit: - - pssm_S2_1_exit - states: - S2_1_Region1: - states: - S2_1_1: - initial: true - transitions: - - event: Continue - target: Region1_FinalState1 - 'on': - - pssm_T2_1_2_effect - Region1_FinalState1: - final: true - S2_1_Region2: - states: - S2_2_1: - initial: true - transitions: - - event: Continue - target: Region2_FinalState1 - 'on': - - pssm_T2_2_2_effect - Region2_FinalState1: - final: true - transitions: - - event: Continue - target: S2_2 - 'on': - - pssm_T2_2_effect - - event: Continue - target: S2_2 - 'on': - - pssm_T2_3_effect - - event: Continue - target: S2_2 - 'on': - - pssm_T2_4_effect - S2_2: {} - transitions: - - event: Continue - target: FinalState1 - FinalState1: - final: true +name: Event_016-B +x-pssm: + requires: [] + expected_traces: + - T2.1.2(effect)::T2.2.2(effect)::T1.3(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) + - T2.2.2(effect)::T2.1.2(effect)::T1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) + - T2.2.2(effect)::T2.1.2(effect)::T1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) + - T2.2.2(effect)::T2.1.2(effect)::T1.3(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) + - T2.1.2(effect)::T1.3(effect)::T2.2.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) + - T1.3(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) + - T2.1.2(effect)::T2.2.2(effect)::T1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) + - T2.2.2(effect)::T1.3(effect)::T2.1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) + - T2.1.2(effect)::T1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) + - T2.2.2(effect)::T1.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) + - T2.2.2(effect)::T2.1.2(effect)::T1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) + - T2.1.2(effect)::T2.2.2(effect)::T1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) + - T1.3(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) + - T1.2(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) + - T2.1.2(effect)::T2.2.2(effect)::T1.3(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) + - T1.2(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) + - T1.2(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) + - T2.2.2(effect)::T2.1.2(effect)::T1.3(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) + - T1.2(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) + - T1.2(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) + - T2.2.2(effect)::T1.3(effect)::T2.1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) + - T1.2(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) + - T2.1.2(effect)::T1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) + - T1.3(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) + - T1.3(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) + - T2.1.2(effect)::T1.3(effect)::T2.2.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) + - T2.2.2(effect)::T2.1.2(effect)::T1.3(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) + - T2.2.2(effect)::T1.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) + - T2.2.2(effect)::T1.3(effect)::T2.1.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) + - T2.1.2(effect)::T1.3(effect)::T2.2.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) + - T2.1.2(effect)::T2.2.2(effect)::T1.3(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) + - T1.3(effect)::T2.1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) + - T2.1.2(effect)::T1.2(effect)::T2.2.2(effect)::S2.1(exit)::T2.4(effect)::S1.2(exit)::S1(exit) + - T2.1.2(effect)::T2.2.2(effect)::T1.2(effect)::S2.1(exit)::T2.2(effect)::S1.2(exit)::S1(exit) + - T1.3(effect)::T2.2.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) + - T2.2.2(effect)::T1.2(effect)::T2.1.2(effect)::S2.1(exit)::T2.3(effect)::S1.2(exit)::S1(exit) + stimulus: + - event: Start + - event: Continue + - event: Continue + - event: Continue + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_3_effect: + - T1.3(effect) + pssm_S1_2_exit: + - S1.2(exit) + pssm_S2_1_exit: + - S2.1(exit) + pssm_T2_2_effect: + - T2.2(effect) + pssm_T2_3_effect: + - T2.3(effect) + pssm_T2_4_effect: + - T2.4(effect) + pssm_T2_1_2_effect: + - T2.1.2(effect) + pssm_T2_2_2_effect: + - T2.2.2(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + states: {} + transitions: + - event: Continue + target: S1_2 + 'on': + - pssm_T1_2_effect + - event: Continue + target: S1_2 + 'on': + - pssm_T1_3_effect + S1_2: + exit: + - pssm_S1_2_exit + S1_Region2: + states: + S2_1: + initial: true + parallel: true + exit: + - pssm_S2_1_exit + states: + S2_1_Region1: + states: + S2_1_1: + initial: true + transitions: + - event: Continue + target: Region1_FinalState1 + 'on': + - pssm_T2_1_2_effect + Region1_FinalState1: + final: true + S2_1_Region2: + states: + S2_2_1: + initial: true + transitions: + - event: Continue + target: Region2_FinalState1 + 'on': + - pssm_T2_2_2_effect + Region2_FinalState1: + final: true + transitions: + - event: Continue + target: S2_2 + 'on': + - pssm_T2_2_effect + - event: Continue + target: S2_2 + 'on': + - pssm_T2_3_effect + - event: Continue + target: S2_2 + 'on': + - pssm_T2_4_effect + S2_2: {} + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_017-A.yaml b/tests/uml/pssm/cases/Event/Event_017-A.yaml index 84ca0a7a..28bb5bf8 100644 --- a/tests/uml/pssm/cases/Event/Event_017-A.yaml +++ b/tests/uml/pssm/cases/Event/Event_017-A.yaml @@ -1,39 +1,39 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T3(effect) -stimulus: -- event: Start -- event: Data - kwargs: - value: true -behaviors: - pssm_T3_effect: +name: Event_017-A +x-pssm: + requires: [] + expected_traces: - T3(effect) - pssm_T4_effect: - - T4(effect) -statechart: - name: Event_017-A - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - transitions: - - event: Data - target: S2 - cond: value == True - 'on': - - pssm_T3_effect - - event: Data - target: S2 - cond: value == False - 'on': - - pssm_T4_effect - FinalState1: - final: true - S2: - transitions: - - target: FinalState1 + stimulus: + - event: Start + - event: Data + kwargs: + value: true + behaviors: + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + transitions: + - event: Data + target: S2 + cond: value == True + 'on': + - pssm_T3_effect + - event: Data + target: S2 + cond: value == False + 'on': + - pssm_T4_effect + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Event/Event_017-B.yaml b/tests/uml/pssm/cases/Event/Event_017-B.yaml index 1cddaa5d..30fc20df 100644 --- a/tests/uml/pssm/cases/Event/Event_017-B.yaml +++ b/tests/uml/pssm/cases/Event/Event_017-B.yaml @@ -1,55 +1,55 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(effect)[in=true]::S1.1(entry)[in=true]::S1.1(doActivity)[in=true]::S1.1(exit)[in=false]::T1.2(effect)[in=false] -- S1(effect)[in=true]::S1.1(entry)[in=true]::S1.1(exit)[in=false]::T1.2(effect)[in=false] -stimulus: -- event: Start -- event: Data - kwargs: - value: true -- event: Data - kwargs: - value: false -- event: Continue -behaviors: - pssm_S1_entry: - - S1(effect)[in={value}] - pssm_S1_1_entry: - - S1.1(entry)[in={value}] - pssm_S1_1_exit: - - S1.1(exit)[in={value}] - on_invoke_S1_1: - - S1.1(doActivity)[in={value}] - pssm_T1_2_effect: - - T1.2(effect)[in={value}] -statechart: - name: Event_017-B - states: - wait: - initial: true - transitions: - - event: Data - target: S1 - S1: - enter: - - pssm_S1_entry - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - exit: - - pssm_S1_1_exit - transitions: - - event: Data - target: S1_FinalState1 - 'on': - - pssm_T1_2_effect - S1_FinalState1: - final: true - transitions: - - event: Continue - target: FinalState1 - FinalState1: - final: true +name: Event_017-B +x-pssm: + requires: [] + expected_traces: + - S1(effect)[in=true]::S1.1(entry)[in=true]::S1.1(doActivity)[in=true]::S1.1(exit)[in=false]::T1.2(effect)[in=false] + - S1(effect)[in=true]::S1.1(entry)[in=true]::S1.1(exit)[in=false]::T1.2(effect)[in=false] + stimulus: + - event: Start + - event: Data + kwargs: + value: true + - event: Data + kwargs: + value: false + - event: Continue + behaviors: + pssm_S1_entry: + - S1(effect)[in={value}] + pssm_S1_1_entry: + - S1.1(entry)[in={value}] + pssm_S1_1_exit: + - S1.1(exit)[in={value}] + on_invoke_S1_1: + - S1.1(doActivity)[in={value}] + pssm_T1_2_effect: + - T1.2(effect)[in={value}] +states: + wait: + initial: true + transitions: + - event: Data + target: S1 + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - event: Data + target: S1_FinalState1 + 'on': + - pssm_T1_2_effect + S1_FinalState1: + final: true + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_018.yaml b/tests/uml/pssm/cases/Event/Event_018.yaml index 5e1aaff0..d27f57e9 100644 --- a/tests/uml/pssm/cases/Event/Event_018.yaml +++ b/tests/uml/pssm/cases/Event/Event_018.yaml @@ -1,60 +1,60 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1.1.1(exit)::S1.1(exit)::S1(exit)::T3(effect)::S2(entry)::S1.2(entry) -stimulus: -- event: Start -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S1_1_1_exit: - - S1.1.1(exit) - pssm_T3_effect: - - T3(effect) - pssm_S2_entry: - - S2(entry) - pssm_S1_2_entry: - - S1.2(entry) -statechart: - name: Event_018 - states: - S1: - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - states: - S1_1_1: - initial: true - exit: - - pssm_S1_1_1_exit - transitions: - - target: S1_2 - 'on': - - pssm_T3_effect - wait: - initial: true - transitions: - - event: Start - target: S1 - S2: - enter: - - pssm_S2_entry - states: - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - target: FS1_2 - FS1_2: - final: true - transitions: - - event: done.state.S2 - target: FS1 - FS1: - final: true +name: Event_018 +x-pssm: + requires: [] + expected_traces: + - S1.1.1(exit)::S1.1(exit)::S1(exit)::T3(effect)::S2(entry)::S1.2(entry) + stimulus: + - event: Start + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_T3_effect: + - T3(effect) + pssm_S2_entry: + - S2(entry) + pssm_S1_2_entry: + - S1.2(entry) +states: + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + transitions: + - target: S1_2 + 'on': + - pssm_T3_effect + wait: + initial: true + transitions: + - event: Start + target: S1 + S2: + enter: + - pssm_S2_entry + states: + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: FS1_2 + FS1_2: + final: true + transitions: + - event: done.state.S2 + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_019-A.yaml b/tests/uml/pssm/cases/Event/Event_019-A.yaml index e4c10989..79abd320 100644 --- a/tests/uml/pssm/cases/Event/Event_019-A.yaml +++ b/tests/uml/pssm/cases/Event/Event_019-A.yaml @@ -1,36 +1,36 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(exit)::Call(op)::End::S2(entry) -stimulus: -- event: Start -- call: op -- trace: End -- event: Continue -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_T2_effect: - - Call(op) - pssm_S2_exit: - - S2(entry) -statechart: - name: Event_019-A - states: - S1: - initial: true - exit: - - pssm_S1_exit - transitions: - - event: op - target: S2 - 'on': - - pssm_T2_effect - S2: - exit: - - pssm_S2_exit - transitions: - - event: Continue - target: FinalState1 - FinalState1: - final: true +name: Event_019-A +x-pssm: + requires: [] + expected_traces: + - S1(exit)::Call(op)::End::S2(entry) + stimulus: + - event: Start + - call: op + - trace: End + - event: Continue + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T2_effect: + - Call(op) + pssm_S2_exit: + - S2(entry) +states: + S1: + initial: true + exit: + - pssm_S1_exit + transitions: + - event: op + target: S2 + 'on': + - pssm_T2_effect + S2: + exit: + - pssm_S2_exit + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_019-B.yaml b/tests/uml/pssm/cases/Event/Event_019-B.yaml index 22f3db20..833837b7 100644 --- a/tests/uml/pssm/cases/Event/Event_019-B.yaml +++ b/tests/uml/pssm/cases/Event/Event_019-B.yaml @@ -1,36 +1,36 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(exit)[in=42][in=input]::T2(effect)[in=42][in=input]::S2(entry)[in=42][in=input] -stimulus: -- event: Start -- call: op - kwargs: - p1: 42 - p2: input -behaviors: - pssm_S1_exit: - - S1(exit)[in={p1}][in={p2}] - pssm_T2_effect: - - T2(effect)[in={p1}][in={p2}] - pssm_S2_entry: - - S2(entry)[in={p1}][in={p2}] -statechart: - name: Event_019-B - states: - S1: - initial: true - exit: - - pssm_S1_exit - transitions: - - event: op - target: S2 - 'on': - - pssm_T2_effect - S2: - enter: - - pssm_S2_entry - transitions: - - target: FinalState1 - FinalState1: - final: true +name: Event_019-B +x-pssm: + requires: [] + expected_traces: + - S1(exit)[in=42][in=input]::T2(effect)[in=42][in=input]::S2(entry)[in=42][in=input] + stimulus: + - event: Start + - call: op + kwargs: + p1: 42 + p2: input + behaviors: + pssm_S1_exit: + - S1(exit)[in={p1}][in={p2}] + pssm_T2_effect: + - T2(effect)[in={p1}][in={p2}] + pssm_S2_entry: + - S2(entry)[in={p1}][in={p2}] +states: + S1: + initial: true + exit: + - pssm_S1_exit + transitions: + - event: op + target: S2 + 'on': + - pssm_T2_effect + S2: + enter: + - pssm_S2_entry + transitions: + - target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_019-C.yaml b/tests/uml/pssm/cases/Event/Event_019-C.yaml index 960a72f7..4d221e13 100644 --- a/tests/uml/pssm/cases/Event/Event_019-C.yaml +++ b/tests/uml/pssm/cases/Event/Event_019-C.yaml @@ -1,64 +1,64 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)[in=42][in=input]::S1.1(entry)[in=42][in=input]::S1.1.1(entry)[in=42][in=input]::S1.1.1(exit)[in=true]::T1.1.2(effect)[in=true] -stimulus: -- event: Start -- call: op1 - kwargs: - p1: 42 - p2: input -- call: op2 - kwargs: - p1: true -behaviors: - pssm_S1_entry: - - S1(entry)[in={p1}][in={p2}] - pssm_S1_1_entry: - - S1.1(entry)[in={p1}][in={p2}] - pssm_S1_1_1_entry: - - S1.1.1(entry)[in={p1}][in={p2}] - pssm_S1_1_1_exit: - - S1.1.1(exit)[in={p1}] - pssm_T1_1_2_effect: - - T1.1.2(effect)[in={p1}] -statechart: - name: Event_019-C - states: - wait: - initial: true - transitions: - - event: op1 - target: S1 - S1: - enter: - - pssm_S1_entry - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - states: - S1_1_1: - initial: true - enter: - - pssm_S1_1_1_entry - exit: - - pssm_S1_1_1_exit - transitions: - - event: op2 - target: S1_1_FinalState1 - 'on': - - pssm_T1_1_2_effect - S1_1_FinalState1: - final: true - transitions: - - event: done.state.S1_1 - target: S1_FinalState1 - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: Event_019-C +x-pssm: + requires: [] + expected_traces: + - S1(entry)[in=42][in=input]::S1.1(entry)[in=42][in=input]::S1.1.1(entry)[in=42][in=input]::S1.1.1(exit)[in=true]::T1.1.2(effect)[in=true] + stimulus: + - event: Start + - call: op1 + kwargs: + p1: 42 + p2: input + - call: op2 + kwargs: + p1: true + behaviors: + pssm_S1_entry: + - S1(entry)[in={p1}][in={p2}] + pssm_S1_1_entry: + - S1.1(entry)[in={p1}][in={p2}] + pssm_S1_1_1_entry: + - S1.1.1(entry)[in={p1}][in={p2}] + pssm_S1_1_1_exit: + - S1.1.1(exit)[in={p1}] + pssm_T1_1_2_effect: + - T1.1.2(effect)[in={p1}] +states: + wait: + initial: true + transitions: + - event: op1 + target: S1 + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + states: + S1_1_1: + initial: true + enter: + - pssm_S1_1_1_entry + exit: + - pssm_S1_1_1_exit + transitions: + - event: op2 + target: S1_1_FinalState1 + 'on': + - pssm_T1_1_2_effect + S1_1_FinalState1: + final: true + transitions: + - event: done.state.S1_1 + target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_019-D.yaml b/tests/uml/pssm/cases/Event/Event_019-D.yaml index ebc78a77..a0864929 100644 --- a/tests/uml/pssm/cases/Event/Event_019-D.yaml +++ b/tests/uml/pssm/cases/Event/Event_019-D.yaml @@ -1,37 +1,37 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- call_event -expected_traces: -- S1(entry)::T2(effect)[out=output]::[out=output]::S2(exit) -stimulus: -- event: Start -- call: op - trace_result: '[out={result}]' -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_T2_effect: - - T2(effect)[out=output] - pssm_S2_exit: - - S2(exit) -statechart: - name: Event_019-D - states: - S1: - initial: true - enter: - - pssm_S1_entry - transitions: - - event: op - target: S2 - 'on': - - pssm_T2_effect - S2: - exit: - - pssm_S2_exit - transitions: - - event: Continue - target: FinalState1 - FinalState1: - final: true +name: Event_019-D +x-pssm: + requires: + - call_event + expected_traces: + - S1(entry)::T2(effect)[out=output]::[out=output]::S2(exit) + stimulus: + - event: Start + - call: op + trace_result: '[out={result}]' + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_T2_effect: + - T2(effect)[out=output] + pssm_S2_exit: + - S2(exit) +states: + S1: + initial: true + enter: + - pssm_S1_entry + transitions: + - event: op + target: S2 + 'on': + - pssm_T2_effect + S2: + exit: + - pssm_S2_exit + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Event/Event_019-E.yaml b/tests/uml/pssm/cases/Event/Event_019-E.yaml index c66e1aa9..e4751a16 100644 --- a/tests/uml/pssm/cases/Event/Event_019-E.yaml +++ b/tests/uml/pssm/cases/Event/Event_019-E.yaml @@ -1,63 +1,63 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- call_event -expected_traces: -- S2.1.1(entry)[in=true][in=true][out=false][out=false]::S1.1(entry)[in=true][in=true][out=true][out=true]::[out=true][out=true] -- S1.1(entry)[in=true][in=true][out=true][out=true]::S2.1.1(entry)[in=true][in=true][out=false][out=false]::[out=false][out=false] -stimulus: -- event: Start -- call: or - kwargs: - left: true - right: true - trace_result: '[out={result}]' -- event: Continue -behaviors: - pssm_S1_1_entry: - - S1.1(entry)[in={left}][in={right}] - pssm_S2_1_1_entry: - - S2.1.1(entry)[in={left}][in={right}] -statechart: - name: Event_019-E - states: - S1: - parallel: true - states: - S1_Region1: - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - transitions: - - target: Region1_FinalState1 - Region1_FinalState1: - final: true - S1_Region2: - states: - S2_1: - initial: true - states: - S2_1_1: - initial: true - enter: - - pssm_S2_1_1_entry - transitions: - - target: S2_1_FinalState1 - S2_1_FinalState1: - final: true - transitions: - - event: done.state.S2_1 - target: Region2_FinalState1 - Region2_FinalState1: - final: true - transitions: - - event: Continue - target: FinalState1 - wait: - initial: true - transitions: - - event: or - target: S1 - FinalState1: - final: true +name: Event_019-E +x-pssm: + requires: + - call_event + expected_traces: + - S2.1.1(entry)[in=true][in=true][out=false][out=false]::S1.1(entry)[in=true][in=true][out=true][out=true]::[out=true][out=true] + - S1.1(entry)[in=true][in=true][out=true][out=true]::S2.1.1(entry)[in=true][in=true][out=false][out=false]::[out=false][out=false] + stimulus: + - event: Start + - call: or + kwargs: + left: true + right: true + trace_result: '[out={result}]' + - event: Continue + behaviors: + pssm_S1_1_entry: + - S1.1(entry)[in={left}][in={right}] + pssm_S2_1_1_entry: + - S2.1.1(entry)[in={left}][in={right}] +states: + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + states: + S2_1_1: + initial: true + enter: + - pssm_S2_1_1_entry + transitions: + - target: S2_1_FinalState1 + S2_1_FinalState1: + final: true + transitions: + - event: done.state.S2_1 + target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - event: Continue + target: FinalState1 + wait: + initial: true + transitions: + - event: or + target: S1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Exit/Exit_001.yaml b/tests/uml/pssm/cases/Exit/Exit_001.yaml index aa6f6240..07f1244e 100644 --- a/tests/uml/pssm/cases/Exit/Exit_001.yaml +++ b/tests/uml/pssm/cases/Exit/Exit_001.yaml @@ -1,49 +1,49 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- exit_point -expected_traces: -- S1.1.1(exit)::S1.1(exit)::T1.2(effect)::S1(exit)::T3(effect) -stimulus: -- event: Start -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S1_1_1_exit: - - S1.1.1(exit) - pssm_T1_2_effect: - - T1.2(effect) - pssm_T3_effect: - - T3(effect) -statechart: - name: Exit_001 - states: - S1: - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - states: - S1_1_1: - initial: true - exit: - - pssm_S1_1_1_exit - transitions: - - target: S2 - 'on': - - pssm_T1_2_effect - - pssm_T3_effect - S2: - transitions: - - target: FinalState1 - FinalState1: - final: true - wait: - initial: true - transitions: - - event: Start - target: S1 +name: Exit_001 +x-pssm: + requires: + - exit_point + expected_traces: + - S1.1.1(exit)::S1.1(exit)::T1.2(effect)::S1(exit)::T3(effect) + stimulus: + - event: Start + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T3_effect: + - T3(effect) +states: + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + transitions: + - target: S2 + 'on': + - pssm_T1_2_effect + - pssm_T3_effect + S2: + transitions: + - target: FinalState1 + FinalState1: + final: true + wait: + initial: true + transitions: + - event: Start + target: S1 diff --git a/tests/uml/pssm/cases/Exit/Exit_002.yaml b/tests/uml/pssm/cases/Exit/Exit_002.yaml index db4da313..41340576 100644 --- a/tests/uml/pssm/cases/Exit/Exit_002.yaml +++ b/tests/uml/pssm/cases/Exit/Exit_002.yaml @@ -1,42 +1,42 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- exit_point -expected_traces: -- T1.2(effect)::T2.2(effect) -- T2.2(effect)::T1.2(effect) -stimulus: -- event: Start -behaviors: - pssm_T1_2_effect: - - T1.2(effect) - pssm_T2_2_effect: - - T2.2(effect) -statechart: - name: Exit_002 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - states: - S1_Region1: - states: - S1_1: - initial: true - transitions: - - target: FS1 - 'on': - - pssm_T1_2_effect - S1_Region2: - states: - S2_1: - initial: true - transitions: - - target: FS1 - 'on': - - pssm_T2_2_effect - FS1: - final: true +name: Exit_002 +x-pssm: + requires: + - exit_point + expected_traces: + - T1.2(effect)::T2.2(effect) + - T2.2(effect)::T1.2(effect) + stimulus: + - event: Start + behaviors: + pssm_T1_2_effect: + - T1.2(effect) + pssm_T2_2_effect: + - T2.2(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + transitions: + - target: FS1 + 'on': + - pssm_T1_2_effect + S1_Region2: + states: + S2_1: + initial: true + transitions: + - target: FS1 + 'on': + - pssm_T2_2_effect + FS1: + final: true diff --git a/tests/uml/pssm/cases/Exit/Exit_003.yaml b/tests/uml/pssm/cases/Exit/Exit_003.yaml index 04db1c8e..2d1c4075 100644 --- a/tests/uml/pssm/cases/Exit/Exit_003.yaml +++ b/tests/uml/pssm/cases/Exit/Exit_003.yaml @@ -1,54 +1,54 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- exit_point -expected_traces: -- T1.2(effect)::S1(exit)::T5(effect) -- T1.2(effect)::S1(exit)::T3(effect) -stimulus: -- event: Start -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_T1_2_effect: - - T1.2(effect) - pssm_T3_effect: - - T3(effect) - pssm_T4_effect: - - T4(effect) - pssm_T5_effect: - - T5(effect) -statechart: - name: Exit_003 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - transitions: - - target: S3 - cond: 'True' - 'on': - - pssm_T1_2_effect - - pssm_T3_effect - - target: S3 - cond: 'False' - 'on': - - pssm_T1_2_effect - - pssm_T4_effect - - target: S3 - cond: 'True' - 'on': - - pssm_T1_2_effect - - pssm_T5_effect - FS1: - final: true - S3: - transitions: - - target: FS1 +name: Exit_003 +x-pssm: + requires: + - exit_point + expected_traces: + - T1.2(effect)::S1(exit)::T5(effect) + - T1.2(effect)::S1(exit)::T3(effect) + stimulus: + - event: Start + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) + pssm_T5_effect: + - T5(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + transitions: + - target: S3 + cond: 'True' + 'on': + - pssm_T1_2_effect + - pssm_T3_effect + - target: S3 + cond: 'False' + 'on': + - pssm_T1_2_effect + - pssm_T4_effect + - target: S3 + cond: 'True' + 'on': + - pssm_T1_2_effect + - pssm_T5_effect + FS1: + final: true + S3: + transitions: + - target: FS1 diff --git a/tests/uml/pssm/cases/Exiting/Exiting_001.yaml b/tests/uml/pssm/cases/Exiting/Exiting_001.yaml index 542364e0..5f5b44bb 100644 --- a/tests/uml/pssm/cases/Exiting/Exiting_001.yaml +++ b/tests/uml/pssm/cases/Exiting/Exiting_001.yaml @@ -1,53 +1,53 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S2.1(exit)::S1.1.1(exit)::S1.1(exit)::S1(exit) -- S1.1.1(exit)::S2.1(exit)::S1.1(exit)::S1(exit) -- S1.1.1(exit)::S1.1(exit)::S2.1(exit)::S1(exit) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S1_1_1_exit: - - S1.1.1(exit) - pssm_S2_1_exit: - - S2.1(exit) -statechart: - name: Exiting_001 - states: - waiting: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - states: - S1_1_1: - initial: true - exit: - - pssm_S1_1_1_exit - S1_Region2: - states: - S2_1: - initial: true - exit: - - pssm_S2_1_exit - transitions: - - event: Continue - target: FS1 - FS1: - final: true +name: Exiting_001 +x-pssm: + requires: [] + expected_traces: + - S2.1(exit)::S1.1.1(exit)::S1.1(exit)::S1(exit) + - S1.1.1(exit)::S2.1(exit)::S1.1(exit)::S1(exit) + - S1.1.1(exit)::S1.1(exit)::S2.1(exit)::S1(exit) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_S2_1_exit: + - S2.1(exit) +states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + S1_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - event: Continue + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Exiting/Exiting_002.yaml b/tests/uml/pssm/cases/Exiting/Exiting_002.yaml index cea57d32..c2c570a4 100644 --- a/tests/uml/pssm/cases/Exiting/Exiting_002.yaml +++ b/tests/uml/pssm/cases/Exiting/Exiting_002.yaml @@ -1,37 +1,37 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- do_activity_accept -expected_traces: -- S1(doActivityPartI)::S1(exit) -stimulus: -- event: Start -- event: Continue -- event: Continue -behaviors: - pssm_S1_exit: - - S1(exit) - on_invoke_S1: - - S1(doActivityPartI) - - accept: AnotherSignal -statechart: - name: Exiting_002 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - exit: - - send: - event: AnotherSignal - - pssm_S1_exit - transitions: - - event: Continue - target: end - FinalState1: - final: true - end: - transitions: - - event: Continue - target: FinalState1 +name: Exiting_002 +x-pssm: + requires: + - do_activity_accept + expected_traces: + - S1(doActivityPartI)::S1(exit) + stimulus: + - event: Start + - event: Continue + - event: Continue + behaviors: + pssm_S1_exit: + - S1(exit) + on_invoke_S1: + - S1(doActivityPartI) + - accept: AnotherSignal +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - send: + event: AnotherSignal + - pssm_S1_exit + transitions: + - event: Continue + target: end + FinalState1: + final: true + end: + transitions: + - event: Continue + target: FinalState1 diff --git a/tests/uml/pssm/cases/Exiting/Exiting_003.yaml b/tests/uml/pssm/cases/Exiting/Exiting_003.yaml index 0d407d1b..3ae598c7 100644 --- a/tests/uml/pssm/cases/Exiting/Exiting_003.yaml +++ b/tests/uml/pssm/cases/Exiting/Exiting_003.yaml @@ -1,62 +1,62 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1.1.1(exit)::S1.2.1(exit)::S1.1(exit)::S1(exit) -- S1.2.1(exit)::S1.1.1(exit)::S1.1(exit)::S1(exit) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S1_1_1_exit: - - S1.1.1(exit) - pssm_S1_2_1_exit: - - S1.2.1(exit) -statechart: - name: Exiting_003 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - parallel: true - exit: - - pssm_S1_1_exit - states: - S1_1_Region1: - states: - S1_1_1: - initial: true - exit: - - pssm_S1_1_1_exit - transitions: - - event: Pending - target: FSR1 - FSR1: - final: true - S1_1_Region2: - states: - S1_2_1: - initial: true - exit: - - pssm_S1_2_1_exit - transitions: - - event: Pending - target: FSR2 - FSR2: - final: true - transitions: - - event: Continue - target: FS1 - FS1: - final: true +name: Exiting_003 +x-pssm: + requires: [] + expected_traces: + - S1.1.1(exit)::S1.2.1(exit)::S1.1(exit)::S1(exit) + - S1.2.1(exit)::S1.1.1(exit)::S1.1(exit)::S1(exit) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_S1_2_1_exit: + - S1.2.1(exit) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + parallel: true + exit: + - pssm_S1_1_exit + states: + S1_1_Region1: + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + transitions: + - event: Pending + target: FSR1 + FSR1: + final: true + S1_1_Region2: + states: + S1_2_1: + initial: true + exit: + - pssm_S1_2_1_exit + transitions: + - event: Pending + target: FSR2 + FSR2: + final: true + transitions: + - event: Continue + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Exiting/Exiting_004.yaml b/tests/uml/pssm/cases/Exiting/Exiting_004.yaml index 8ba9f597..1c1d9781 100644 --- a/tests/uml/pssm/cases/Exiting/Exiting_004.yaml +++ b/tests/uml/pssm/cases/Exiting/Exiting_004.yaml @@ -1,36 +1,36 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- exit_point -expected_traces: -- S1.1(exit)::T1.2(effect)::S1(exit) -stimulus: -- event: Start -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_S1_1_exit: - - S1.1(exit) - pssm_T1_2_effect: - - T1.2(effect) -statechart: - name: Exiting_004 - states: - S1: - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - transitions: - - target: FS1 - 'on': - - pssm_T1_2_effect - FS1: - final: true - waiting: - initial: true - transitions: - - event: Start - target: S1 +name: Exiting_004 +x-pssm: + requires: + - exit_point + expected_traces: + - S1.1(exit)::T1.2(effect)::S1(exit) + stimulus: + - event: Start + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) +states: + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - target: FS1 + 'on': + - pssm_T1_2_effect + FS1: + final: true + waiting: + initial: true + transitions: + - event: Start + target: S1 diff --git a/tests/uml/pssm/cases/Exiting/Exiting_005.yaml b/tests/uml/pssm/cases/Exiting/Exiting_005.yaml index 74703ea7..bbb13b3e 100644 --- a/tests/uml/pssm/cases/Exiting/Exiting_005.yaml +++ b/tests/uml/pssm/cases/Exiting/Exiting_005.yaml @@ -1,57 +1,57 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1.1(exit)::S2.1(exit)::S1(exit) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S2_1_exit: - - S2.1(exit) - pssm_T2_2_effect: - - T1.2(effect) -statechart: - name: Exiting_005 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - transitions: - - target: FSR1 - FSR1: - final: true - S1_Region2: - states: - S2_1: - initial: true - exit: - - pssm_S2_1_exit - transitions: - - event: Pending - target: FSR2 - 'on': - - pssm_T2_2_effect - FSR2: - final: true - transitions: - - event: Continue - target: FS1 - FS1: - final: true +name: Exiting_005 +x-pssm: + requires: [] + expected_traces: + - S1.1(exit)::S2.1(exit)::S1(exit) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S2_1_exit: + - S2.1(exit) + pssm_T2_2_effect: + - T1.2(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - target: FSR1 + FSR1: + final: true + S1_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - event: Pending + target: FSR2 + 'on': + - pssm_T2_2_effect + FSR2: + final: true + transitions: + - event: Continue + target: FS1 + FS1: + final: true diff --git a/tests/uml/pssm/cases/Final/Final_001.yaml b/tests/uml/pssm/cases/Final/Final_001.yaml index 47de43a8..cdb07129 100644 --- a/tests/uml/pssm/cases/Final/Final_001.yaml +++ b/tests/uml/pssm/cases/Final/Final_001.yaml @@ -1,65 +1,65 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1.1.1(exit)::T1.1.2(effect)::S1.1(exit)::T1.2(effect)::S2.1(exit) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_1_exit: - - S1.1(exit) - pssm_T1_2_effect: - - T1.2(effect) - pssm_S1_1_1_exit: - - S1.1.1(exit) - pssm_T1_1_2_effect: - - T1.1.2(effect) - pssm_S2_1_exit: - - S2.1(exit) -statechart: - name: Final_001 - states: - root: - initial: true - parallel: true - states: - root_Region1: - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - states: - S1_1_1: - initial: true - exit: - - pssm_S1_1_1_exit - transitions: - - target: S1_1_FinalState1 - 'on': - - pssm_T1_1_2_effect - S1_1_FinalState1: - final: true - transitions: - - event: done.state.S1_1 - target: Region1_FinalState1 - 'on': - - pssm_T1_2_effect - Region1_FinalState1: - final: true - root_Region2: - states: - S2_1: - initial: true - exit: - - pssm_S2_1_exit - transitions: - - event: Continue - target: Region2_FinalState1 - Region2_FinalState1: - final: true - transitions: - - event: done.state.root - target: root_done - root_done: - final: true +name: Final_001 +x-pssm: + requires: [] + expected_traces: + - S1.1.1(exit)::T1.1.2(effect)::S1.1(exit)::T1.2(effect)::S2.1(exit) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S1_1_1_exit: + - S1.1.1(exit) + pssm_T1_1_2_effect: + - T1.1.2(effect) + pssm_S2_1_exit: + - S2.1(exit) +states: + root: + initial: true + parallel: true + states: + root_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + states: + S1_1_1: + initial: true + exit: + - pssm_S1_1_1_exit + transitions: + - target: S1_1_FinalState1 + 'on': + - pssm_T1_1_2_effect + S1_1_FinalState1: + final: true + transitions: + - event: done.state.S1_1 + target: Region1_FinalState1 + 'on': + - pssm_T1_2_effect + Region1_FinalState1: + final: true + root_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - event: Continue + target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - event: done.state.root + target: root_done + root_done: + final: true diff --git a/tests/uml/pssm/cases/Fork/Fork_001.yaml b/tests/uml/pssm/cases/Fork/Fork_001.yaml index e640d98e..a0aadcb1 100644 --- a/tests/uml/pssm/cases/Fork/Fork_001.yaml +++ b/tests/uml/pssm/cases/Fork/Fork_001.yaml @@ -1,164 +1,164 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- exit_point -- fork -expected_traces: -- T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) -- T3(effect)::S1(entry)::T4(effect)::S1.1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry) -- T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::T3(effect)::S1.3(entry)::S1.1(entry) -- T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::T3(effect)::S1.2(entry)::S1.1(entry) -- T3(effect)::S1(entry)::S1.1(entry)::T4(effect)::T3.1(effect)::S1.3(entry)::S1.2(entry) -- T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry)::T3(effect)::S1.1(entry) -- T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) -- T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::T3(effect)::S1.3(entry)::S1.1(entry) -- T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) -- T4(effect)::S1(entry)::T3(effect)::S1.2(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry) -- T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::T3(effect)::S1.1(entry)::S1.2(entry) -- T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::T3(effect)::S1.1(entry)::S1.3(entry) -- T4(effect)::T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry) -- T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) -- T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) -- T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) -- T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) -- T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) -- T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) -- T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) -- T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::T4(effect)::S1.3(entry)::S1.2(entry) -- T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry)::T4(effect)::S1.2(entry) -- T3(effect)::T4(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry) -- T4(effect)::T3(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry) -- T3(effect)::S1(entry)::T4(effect)::S1.2(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry) -- T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) -- T3(effect)::S1(entry)::T4(effect)::S1.2(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry) -- T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::T4(effect)::S1.1(entry)::S1.2(entry) -- T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) -- T3(effect)::T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry) -- T4(effect)::S1(entry)::T3(effect)::S1.1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry) -- T4(effect)::T3(effect)::S1(entry)::S1.2(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry) -- T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) -- T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) -- T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) -- T4(effect)::S1(entry)::S1.2(entry)::T3(effect)::T3.1(effect)::S1.3(entry)::S1.1(entry) -- T3(effect)::S1(entry)::T4(effect)::S1.1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry) -- T4(effect)::S1(entry)::T3(effect)::S1.1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry) -- T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::T4(effect)::S1.2(entry)::S1.1(entry) -- T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) -- T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry)::T4(effect)::S1.2(entry) -- T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) -- T4(effect)::T3(effect)::S1(entry)::S1.1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry) -- T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry)::T3(effect)::S1.1(entry) -- T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::T4(effect)::S1.2(entry)::S1.3(entry) -- T4(effect)::S1(entry)::S1.2(entry)::T3(effect)::S1.1(entry)::T3.1(effect)::S1.3(entry) -- T4(effect)::T3(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry) -- T4(effect)::S1(entry)::S1.2(entry)::T3(effect)::T3.1(effect)::S1.1(entry)::S1.3(entry) -- T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry)::T4(effect)::S1.2(entry) -- T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) -- T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) -- T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) -- T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) -- T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) -- T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::T3(effect)::S1.1(entry)::S1.3(entry) -- T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) -- T4(effect)::S1(entry)::T3(effect)::S1.1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry) -- T4(effect)::S1(entry)::T3(effect)::S1.2(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry) -- T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) -- T3(effect)::S1(entry)::S1.1(entry)::T4(effect)::S1.2(entry)::T3.1(effect)::S1.3(entry) -- T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) -- T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) -- T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) -- T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::T4(effect)::S1.3(entry)::S1.2(entry) -- T3(effect)::T4(effect)::S1(entry)::S1.2(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry) -- T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) -- T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) -- T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry)::T3(effect)::S1.1(entry) -- T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) -- T3(effect)::T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry) -- T4(effect)::S1(entry)::T3(effect)::S1.2(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry) -- T3(effect)::S1(entry)::S1.1(entry)::T4(effect)::T3.1(effect)::S1.2(entry)::S1.3(entry) -- T3(effect)::T4(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry) -- T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::T4(effect)::S1.2(entry)::S1.3(entry) -- T3(effect)::S1(entry)::T4(effect)::S1.2(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry) -- T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) -- T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) -- T4(effect)::T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry) -- T3(effect)::T4(effect)::S1(entry)::S1.1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry) -- T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) -- T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) -- T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) -- T3(effect)::S1(entry)::T4(effect)::S1.1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry) -- T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) -stimulus: -- event: Start -behaviors: - pssm_T3_effect: - - T3(effect) - pssm_T4_effect: - - T4(effect) - pssm_S1_entry: - - S1(entry) - pssm_S1_2_entry: - - S1.2(entry) - pssm_T2_1_effect: - - T2.1(effect) - pssm_S1_1_entry: - - S1.1(entry) - pssm_T1_1_effect: - - T1.1(effect) - pssm_S1_3_entry: - - S1.3(entry) - pssm_T3_1_effect: - - T3.1(effect) -statechart: - name: Fork_001 - states: - wait: - initial: true - transitions: - - event: Start - target: S1_1 S1_2 - 'on': - - pssm_T3_effect - - pssm_T4_effect - S1: - parallel: true - enter: - - pssm_S1_entry - states: - S1_Region1: - states: - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - target: FinalState1 - transitions: - - target: S1_2 - initial: true - 'on': - - pssm_T2_1_effect - S1_Region2: - states: - S1_1: - enter: - - pssm_S1_1_entry - transitions: - - target: FinalState1 - transitions: - - target: S1_1 - initial: true - 'on': - - pssm_T1_1_effect - S1_Region3: - states: - S1_3: - enter: - - pssm_S1_3_entry - transitions: - - target: FinalState1 - transitions: - - target: S1_3 - initial: true - 'on': - - pssm_T3_1_effect - FinalState1: - final: true +name: Fork_001 +x-pssm: + requires: + - exit_point + - fork + expected_traces: + - T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) + - T3(effect)::S1(entry)::T4(effect)::S1.1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry) + - T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::T3(effect)::S1.3(entry)::S1.1(entry) + - T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::T3(effect)::S1.2(entry)::S1.1(entry) + - T3(effect)::S1(entry)::S1.1(entry)::T4(effect)::T3.1(effect)::S1.3(entry)::S1.2(entry) + - T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry)::T3(effect)::S1.1(entry) + - T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) + - T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::T3(effect)::S1.3(entry)::S1.1(entry) + - T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) + - T4(effect)::S1(entry)::T3(effect)::S1.2(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry) + - T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::T3(effect)::S1.1(entry)::S1.2(entry) + - T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::T3(effect)::S1.1(entry)::S1.3(entry) + - T4(effect)::T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry) + - T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) + - T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) + - T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) + - T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) + - T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) + - T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) + - T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) + - T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::T4(effect)::S1.3(entry)::S1.2(entry) + - T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry)::T4(effect)::S1.2(entry) + - T3(effect)::T4(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry) + - T4(effect)::T3(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry) + - T3(effect)::S1(entry)::T4(effect)::S1.2(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry) + - T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) + - T3(effect)::S1(entry)::T4(effect)::S1.2(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry) + - T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::T4(effect)::S1.1(entry)::S1.2(entry) + - T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) + - T3(effect)::T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry) + - T4(effect)::S1(entry)::T3(effect)::S1.1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry) + - T4(effect)::T3(effect)::S1(entry)::S1.2(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry) + - T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) + - T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) + - T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) + - T4(effect)::S1(entry)::S1.2(entry)::T3(effect)::T3.1(effect)::S1.3(entry)::S1.1(entry) + - T3(effect)::S1(entry)::T4(effect)::S1.1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry) + - T4(effect)::S1(entry)::T3(effect)::S1.1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry) + - T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::T4(effect)::S1.2(entry)::S1.1(entry) + - T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) + - T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry)::T4(effect)::S1.2(entry) + - T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) + - T4(effect)::T3(effect)::S1(entry)::S1.1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry) + - T4(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry)::T3(effect)::S1.1(entry) + - T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::T4(effect)::S1.2(entry)::S1.3(entry) + - T4(effect)::S1(entry)::S1.2(entry)::T3(effect)::S1.1(entry)::T3.1(effect)::S1.3(entry) + - T4(effect)::T3(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry) + - T4(effect)::S1(entry)::S1.2(entry)::T3(effect)::T3.1(effect)::S1.1(entry)::S1.3(entry) + - T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry)::T4(effect)::S1.2(entry) + - T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) + - T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) + - T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) + - T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) + - T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) + - T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::T3(effect)::S1.1(entry)::S1.3(entry) + - T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) + - T4(effect)::S1(entry)::T3(effect)::S1.1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry) + - T4(effect)::S1(entry)::T3(effect)::S1.2(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry) + - T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) + - T3(effect)::S1(entry)::S1.1(entry)::T4(effect)::S1.2(entry)::T3.1(effect)::S1.3(entry) + - T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.3(entry)::S1.1(entry)::S1.2(entry) + - T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) + - T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) + - T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::T4(effect)::S1.3(entry)::S1.2(entry) + - T3(effect)::T4(effect)::S1(entry)::S1.2(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry) + - T3(effect)::S1(entry)::T4(effect)::T3.1(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) + - T4(effect)::S1(entry)::T3(effect)::T3.1(effect)::S1.1(entry)::S1.2(entry)::S1.3(entry) + - T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry)::T3(effect)::S1.1(entry) + - T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry)::S1.1(entry) + - T3(effect)::T4(effect)::S1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry)::S1.1(entry) + - T4(effect)::S1(entry)::T3(effect)::S1.2(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry) + - T3(effect)::S1(entry)::S1.1(entry)::T4(effect)::T3.1(effect)::S1.2(entry)::S1.3(entry) + - T3(effect)::T4(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry) + - T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::T4(effect)::S1.2(entry)::S1.3(entry) + - T3(effect)::S1(entry)::T4(effect)::S1.2(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry) + - T4(effect)::T3(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) + - T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) + - T4(effect)::T3(effect)::S1(entry)::S1.1(entry)::T3.1(effect)::S1.3(entry)::S1.2(entry) + - T3(effect)::T4(effect)::S1(entry)::S1.1(entry)::S1.2(entry)::T3.1(effect)::S1.3(entry) + - T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.2(entry)::S1.1(entry)::S1.3(entry) + - T4(effect)::S1(entry)::T3.1(effect)::T3(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) + - T3(effect)::T4(effect)::S1(entry)::T3.1(effect)::S1.1(entry)::S1.3(entry)::S1.2(entry) + - T3(effect)::S1(entry)::T4(effect)::S1.1(entry)::T3.1(effect)::S1.2(entry)::S1.3(entry) + - T3(effect)::S1(entry)::T3.1(effect)::T4(effect)::S1.3(entry)::S1.2(entry)::S1.1(entry) + stimulus: + - event: Start + behaviors: + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_2_entry: + - S1.2(entry) + pssm_T2_1_effect: + - T2.1(effect) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_1_effect: + - T1.1(effect) + pssm_S1_3_entry: + - S1.3(entry) + pssm_T3_1_effect: + - T3.1(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 S1_2 + 'on': + - pssm_T3_effect + - pssm_T4_effect + S1: + parallel: true + enter: + - pssm_S1_entry + states: + S1_Region1: + states: + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: FinalState1 + transitions: + - target: S1_2 + initial: true + 'on': + - pssm_T2_1_effect + S1_Region2: + states: + S1_1: + enter: + - pssm_S1_1_entry + transitions: + - target: FinalState1 + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + S1_Region3: + states: + S1_3: + enter: + - pssm_S1_3_entry + transitions: + - target: FinalState1 + transitions: + - target: S1_3 + initial: true + 'on': + - pssm_T3_1_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Fork/Fork_002.yaml b/tests/uml/pssm/cases/Fork/Fork_002.yaml index a576c324..5e1a3988 100644 --- a/tests/uml/pssm/cases/Fork/Fork_002.yaml +++ b/tests/uml/pssm/cases/Fork/Fork_002.yaml @@ -1,66 +1,66 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- fork -expected_traces: -- T2(effect)::S1(entry)::T2.2(effect)::T2.1(effect)::S1.1(entry) -- T2(effect)::S1(entry)::T2.1(effect)::S1.1(entry)::T2.2(effect) -- T2(effect)::S1(entry)::T2.1(effect)::T2.2(effect)::S1.1(entry) -- T2(effect)::S1(entry)::T2.2(effect)::S1.1(entry)::T2.1(effect) -stimulus: -- event: Start -behaviors: - pssm_T2_effect: - - T2(effect) - pssm_T2_1_effect: - - T2.1(effect) - pssm_T2_2_effect: - - T2.2(effect) - pssm_S1_entry: - - S1(entry) - pssm_S1_1_entry: - - S1.1(entry) -statechart: - name: Fork_002 - states: - wait: - initial: true - transitions: - - event: Start - target: S1_1_1 S1_2_1 - 'on': - - pssm_T2_effect - - pssm_T2_1_effect - - pssm_T2_2_effect - S1: - enter: - - pssm_S1_entry - states: - S1_1: - parallel: true - enter: - - pssm_S1_1_entry - states: - S1_1_Region1: - states: - S1_1_1: - transitions: - - target: Region1_FinalState1 - Region1_FinalState1: - final: true - S1_1_Region2: - states: - S1_2_1: - transitions: - - target: Region2_FinalState1 - Region2_FinalState1: - final: true - transitions: - - event: done.state.S1_1 - target: S1_FinalState1 - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: Fork_002 +x-pssm: + requires: + - fork + expected_traces: + - T2(effect)::S1(entry)::T2.2(effect)::T2.1(effect)::S1.1(entry) + - T2(effect)::S1(entry)::T2.1(effect)::S1.1(entry)::T2.2(effect) + - T2(effect)::S1(entry)::T2.1(effect)::T2.2(effect)::S1.1(entry) + - T2(effect)::S1(entry)::T2.2(effect)::S1.1(entry)::T2.1(effect) + stimulus: + - event: Start + behaviors: + pssm_T2_effect: + - T2(effect) + pssm_T2_1_effect: + - T2.1(effect) + pssm_T2_2_effect: + - T2.2(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1_1_1 S1_2_1 + 'on': + - pssm_T2_effect + - pssm_T2_1_effect + - pssm_T2_2_effect + S1: + enter: + - pssm_S1_entry + states: + S1_1: + parallel: true + enter: + - pssm_S1_1_entry + states: + S1_1_Region1: + states: + S1_1_1: + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_1_Region2: + states: + S1_2_1: + transitions: + - target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - event: done.state.S1_1 + target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_001-A.yaml b/tests/uml/pssm/cases/History/History_001-A.yaml index 1a025159..8db95373 100644 --- a/tests/uml/pssm/cases/History/History_001-A.yaml +++ b/tests/uml/pssm/cases/History/History_001-A.yaml @@ -1,67 +1,67 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::S1.1(entry)::S1.1.1(entry)::S1.1.2(entry)::T3(effect)::S1(entry)::S1.1(entry)::S1.1.2(entry) -stimulus: -- event: Start -- event: AnotherSignal -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_T3_effect: - - T3(effect) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_1_1_entry: - - S1.1.1(entry) - pssm_S1_1_2_entry: - - S1.1.2(entry) -statechart: - name: History_001-A - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - states: - S1_1_1: - initial: true - enter: - - pssm_S1_1_1_entry - transitions: - - target: S1_1_2 - S1_1_2: - enter: - - pssm_S1_1_2_entry - transitions: - - event: Continue - target: S1_1_FinalState1 - S1_1_FinalState1: - final: true - transitions: - - event: done.state.S1_1 - target: S1_FinalState1 - S1_FinalState1: - final: true - history: - DeepHistory1: - type: deep - transitions: - - event: AnotherSignal - target: DeepHistory1 - 'on': - - pssm_T3_effect - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: History_001-A +x-pssm: + requires: [] + expected_traces: + - S1(entry)::S1.1(entry)::S1.1.1(entry)::S1.1.2(entry)::T3(effect)::S1(entry)::S1.1(entry)::S1.1.2(entry) + stimulus: + - event: Start + - event: AnotherSignal + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_T3_effect: + - T3(effect) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_1_entry: + - S1.1.1(entry) + pssm_S1_1_2_entry: + - S1.1.2(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + states: + S1_1_1: + initial: true + enter: + - pssm_S1_1_1_entry + transitions: + - target: S1_1_2 + S1_1_2: + enter: + - pssm_S1_1_2_entry + transitions: + - event: Continue + target: S1_1_FinalState1 + S1_1_FinalState1: + final: true + transitions: + - event: done.state.S1_1 + target: S1_FinalState1 + S1_FinalState1: + final: true + history: + DeepHistory1: + type: deep + transitions: + - event: AnotherSignal + target: DeepHistory1 + 'on': + - pssm_T3_effect + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_001-B.yaml b/tests/uml/pssm/cases/History/History_001-B.yaml index fd27cc30..cb19fa94 100644 --- a/tests/uml/pssm/cases/History/History_001-B.yaml +++ b/tests/uml/pssm/cases/History/History_001-B.yaml @@ -1,84 +1,84 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::T1.4(effect)::S1.2(entry)::S1.2.1(entry)::S1.2(exit)::S1(entry)::S1.2(entry)::S1.2.1(entry)::T1.2.2(effect)::S1.2.2(entry)::S1.2(exit) -stimulus: -- event: Start -- event: AnotherSignal -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_2_entry: - - S1.2(entry) - pssm_S1_2_exit: - - S1.2(exit) - pssm_S1_2_1_entry: - - S1.2.1(entry) - pssm_T1_2_2_effect: - - T1.2.2(effect) - pssm_S1_2_2_entry: - - S1.2.2(entry) - pssm_T1_4_effect: - - T1.4(effect) -statechart: - name: History_001-B - states: - wait: - initial: true - transitions: - - event: Start - target: DeepHistory1 - S1: - enter: - - pssm_S1_entry - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - transitions: - - target: S1_2 - S1_2: - enter: - - pssm_S1_2_entry - exit: - - pssm_S1_2_exit - states: - S1_2_1: - initial: true - enter: - - pssm_S1_2_1_entry - transitions: - - event: Continue - target: S1_2_2 - 'on': - - pssm_T1_2_2_effect - S1_2_2: - enter: - - pssm_S1_2_2_entry - transitions: - - target: S1_2_FinalState1 - S1_2_FinalState1: - final: true - transitions: - - event: done.state.S1_2 - target: S1_FinalState1 - S1_FinalState1: - final: true - history: - DeepHistory1: - type: deep - transitions: - - target: S1_2 - 'on': - - pssm_T1_4_effect - transitions: - - event: AnotherSignal - target: DeepHistory1 - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: History_001-B +x-pssm: + requires: [] + expected_traces: + - S1(entry)::T1.4(effect)::S1.2(entry)::S1.2.1(entry)::S1.2(exit)::S1(entry)::S1.2(entry)::S1.2.1(entry)::T1.2.2(effect)::S1.2.2(entry)::S1.2(exit) + stimulus: + - event: Start + - event: AnotherSignal + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_2_entry: + - S1.2(entry) + pssm_S1_2_exit: + - S1.2(exit) + pssm_S1_2_1_entry: + - S1.2.1(entry) + pssm_T1_2_2_effect: + - T1.2.2(effect) + pssm_S1_2_2_entry: + - S1.2.2(entry) + pssm_T1_4_effect: + - T1.4(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: DeepHistory1 + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + exit: + - pssm_S1_2_exit + states: + S1_2_1: + initial: true + enter: + - pssm_S1_2_1_entry + transitions: + - event: Continue + target: S1_2_2 + 'on': + - pssm_T1_2_2_effect + S1_2_2: + enter: + - pssm_S1_2_2_entry + transitions: + - target: S1_2_FinalState1 + S1_2_FinalState1: + final: true + transitions: + - event: done.state.S1_2 + target: S1_FinalState1 + S1_FinalState1: + final: true + history: + DeepHistory1: + type: deep + transitions: + - target: S1_2 + 'on': + - pssm_T1_4_effect + transitions: + - event: AnotherSignal + target: DeepHistory1 + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_001-C.yaml b/tests/uml/pssm/cases/History/History_001-C.yaml index f95d32f8..899437fc 100644 --- a/tests/uml/pssm/cases/History/History_001-C.yaml +++ b/tests/uml/pssm/cases/History/History_001-C.yaml @@ -1,107 +1,107 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.2(entry)::S1(exit) -- S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.2(entry)::S1(exit) -- S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S1.1(exit)::S2.2.2(entry)::S1.2(entry)::S1(exit) -- S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit) -- S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S2.2(entry)::S1.2(entry)::S2.2.2(entry)::S1(exit) -- S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S2.2(entry)::S2.2.2(entry)::S1.2(entry)::S1(exit) -- S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S1.1(exit)::S2.2.2(entry)::S1.2(entry)::S1(exit) -- S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.2(entry)::S1(exit) -- S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit) -- S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S2.2(entry)::S2.2.2(entry)::S1.2(entry)::S1(exit) -- S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S2.2(entry)::S1.2(entry)::S2.2.2(entry)::S1(exit) -- S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.2(entry)::S1(exit) -stimulus: -- event: Start -- event: AnotherSignal -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S1_2_entry: - - S1.2(entry) - pssm_S2_2_entry: - - S2.2(entry) - pssm_S2_2_1_exit: - - S2.2.1(exit) - pssm_S2_2_2_entry: - - S2.2.2(entry) -statechart: - name: History_001-C - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - transitions: - - target: S1_2 - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - event: Continue - target: Region1_FinalState1 - Region1_FinalState1: - final: true - S1_Region2: - states: - S2_1: - initial: true - transitions: - - target: S2_2 - S2_2: - enter: - - pssm_S2_2_entry - states: - S2_2_1: - initial: true - exit: - - pssm_S2_2_1_exit - transitions: - - target: S2_2_2 - S2_2_2: - enter: - - pssm_S2_2_2_entry - transitions: - - event: Continue - target: S2_2_FinalState1 - S2_2_FinalState1: - final: true - transitions: - - event: done.state.S2_2 - target: Region2_FinalState1 - Region2_FinalState1: - final: true - history: - DeepHistory1: - type: deep - transitions: - - event: AnotherSignal - target: S2 - - event: done.state.S1 - target: FinalState1 - S2: - transitions: - - target: DeepHistory1 - FinalState1: - final: true +name: History_001-C +x-pssm: + requires: [] + expected_traces: + - S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.2(entry)::S1(exit) + - S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.2(entry)::S1(exit) + - S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S1.1(exit)::S2.2.2(entry)::S1.2(entry)::S1(exit) + - S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit) + - S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S2.2(entry)::S1.2(entry)::S2.2.2(entry)::S1(exit) + - S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S2.2(entry)::S2.2.2(entry)::S1.2(entry)::S1(exit) + - S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S1.1(exit)::S2.2.2(entry)::S1.2(entry)::S1(exit) + - S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.2(entry)::S1(exit) + - S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit) + - S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S2.2(entry)::S2.2.2(entry)::S1.2(entry)::S1(exit) + - S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S1.1(exit)::S2.2(entry)::S1.2(entry)::S2.2.2(entry)::S1(exit) + - S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::S2.2.2(entry)::S1(exit)::S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.2(entry)::S1(exit) + stimulus: + - event: Start + - event: AnotherSignal + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_2_entry: + - S1.2(entry) + pssm_S2_2_entry: + - S2.2(entry) + pssm_S2_2_1_exit: + - S2.2.1(exit) + pssm_S2_2_2_entry: + - S2.2.2(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - event: Continue + target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + transitions: + - target: S2_2 + S2_2: + enter: + - pssm_S2_2_entry + states: + S2_2_1: + initial: true + exit: + - pssm_S2_2_1_exit + transitions: + - target: S2_2_2 + S2_2_2: + enter: + - pssm_S2_2_2_entry + transitions: + - event: Continue + target: S2_2_FinalState1 + S2_2_FinalState1: + final: true + transitions: + - event: done.state.S2_2 + target: Region2_FinalState1 + Region2_FinalState1: + final: true + history: + DeepHistory1: + type: deep + transitions: + - event: AnotherSignal + target: S2 + - event: done.state.S1 + target: FinalState1 + S2: + transitions: + - target: DeepHistory1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_001-D.yaml b/tests/uml/pssm/cases/History/History_001-D.yaml index 33df91de..c2165d40 100644 --- a/tests/uml/pssm/cases/History/History_001-D.yaml +++ b/tests/uml/pssm/cases/History/History_001-D.yaml @@ -1,78 +1,78 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::S1.1(entry)::T1.2(effect)::S1.2(entry)::S1(exit)::T3(effect)::S1(entry)::S1.2(entry)::S1(exit)::S2(entry) -stimulus: -- event: Start -- event: AnotherSignal -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) - pssm_T1_2_effect: - - T1.2(effect) - pssm_S1_2_entry: - - S1.2(entry) - pssm_T3_effect: - - T3(effect) - pssm_S2_entry: - - S2(entry) -statechart: - name: History_001-D - states: - root: - initial: true - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - transitions: - - target: S1_2 - 'on': - - pssm_T1_2_effect - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - event: Continue - target: S1_FinalState1 - - event: AnotherSignal - target: DeepHistory1 - 'on': - - pssm_T3_effect - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: S2 - S2: - enter: - - pssm_S2_entry - transitions: - - target: FinalState1 - FinalState1: - final: true - history: - DeepHistory1: - type: deep - transitions: - - event: done.state.root - target: root_done - root_done: - final: true +name: History_001-D +x-pssm: + requires: [] + expected_traces: + - S1(entry)::S1.1(entry)::T1.2(effect)::S1.2(entry)::S1(exit)::T3(effect)::S1(entry)::S1.2(entry)::S1(exit)::S2(entry) + stimulus: + - event: Start + - event: AnotherSignal + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S1_2_entry: + - S1.2(entry) + pssm_T3_effect: + - T3(effect) + pssm_S2_entry: + - S2(entry) +states: + root: + initial: true + states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: S1_2 + 'on': + - pssm_T1_2_effect + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - event: Continue + target: S1_FinalState1 + - event: AnotherSignal + target: DeepHistory1 + 'on': + - pssm_T3_effect + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: S2 + S2: + enter: + - pssm_S2_entry + transitions: + - target: FinalState1 + FinalState1: + final: true + history: + DeepHistory1: + type: deep + transitions: + - event: done.state.root + target: root_done + root_done: + final: true diff --git a/tests/uml/pssm/cases/History/History_002-A.yaml b/tests/uml/pssm/cases/History/History_002-A.yaml index 583013fa..df2617ea 100644 --- a/tests/uml/pssm/cases/History/History_002-A.yaml +++ b/tests/uml/pssm/cases/History/History_002-A.yaml @@ -1,81 +1,81 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::S1.1(exit)::S1.2(entry)::S1.2.1(exit)::T1.2.2(effect)::S1.2.2(entry)::S1(exit)::T3(effect)::S1(entry)::S1.2(entry)::S1.2.1(exit)::T1.2.2(effect)::S1.2.2(entry)::S1(exit) -stimulus: -- event: Start -- event: AnotherSignal -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_T3_effect: - - T3(effect) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S1_2_entry: - - S1.2(entry) - pssm_S1_2_1_exit: - - S1.2.1(exit) - pssm_T1_2_2_effect: - - T1.2.2(effect) - pssm_S1_2_2_entry: - - S1.2.2(entry) -statechart: - name: History_002-A - states: - wait: - initial: true - transitions: - - target: S1 - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - transitions: - - target: S1_2 - S1_2: - enter: - - pssm_S1_2_entry - states: - S1_2_1: - initial: true - exit: - - pssm_S1_2_1_exit - transitions: - - target: S1_2_2 - 'on': - - pssm_T1_2_2_effect - S1_2_2: - enter: - - pssm_S1_2_2_entry - transitions: - - event: Continue - target: S1_2_FinalState1 - S1_2_FinalState1: - final: true - transitions: - - event: done.state.S1_2 - target: S1_FinalState1 - S1_FinalState1: - final: true - history: - ShallowHistory1: - type: shallow - transitions: - - event: AnotherSignal - target: ShallowHistory1 - 'on': - - pssm_T3_effect - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: History_002-A +x-pssm: + requires: [] + expected_traces: + - S1(entry)::S1.1(exit)::S1.2(entry)::S1.2.1(exit)::T1.2.2(effect)::S1.2.2(entry)::S1(exit)::T3(effect)::S1(entry)::S1.2(entry)::S1.2.1(exit)::T1.2.2(effect)::S1.2.2(entry)::S1(exit) + stimulus: + - event: Start + - event: AnotherSignal + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_T3_effect: + - T3(effect) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_2_entry: + - S1.2(entry) + pssm_S1_2_1_exit: + - S1.2.1(exit) + pssm_T1_2_2_effect: + - T1.2.2(effect) + pssm_S1_2_2_entry: + - S1.2.2(entry) +states: + wait: + initial: true + transitions: + - target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + states: + S1_2_1: + initial: true + exit: + - pssm_S1_2_1_exit + transitions: + - target: S1_2_2 + 'on': + - pssm_T1_2_2_effect + S1_2_2: + enter: + - pssm_S1_2_2_entry + transitions: + - event: Continue + target: S1_2_FinalState1 + S1_2_FinalState1: + final: true + transitions: + - event: done.state.S1_2 + target: S1_FinalState1 + S1_FinalState1: + final: true + history: + ShallowHistory1: + type: shallow + transitions: + - event: AnotherSignal + target: ShallowHistory1 + 'on': + - pssm_T3_effect + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_002-B.yaml b/tests/uml/pssm/cases/History/History_002-B.yaml index 714e13c1..ab158789 100644 --- a/tests/uml/pssm/cases/History/History_002-B.yaml +++ b/tests/uml/pssm/cases/History/History_002-B.yaml @@ -1,110 +1,110 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit)::T3(effect)::S1(entry)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit) -- S1(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit)::T3(effect)::S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit) -- S1(entry)::S1.1(exit)::S1.2(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit)::T3(effect)::S1(entry)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit) -- S1(entry)::S1.1(exit)::S1.2(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit)::T3(effect)::S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit) -- S1(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit)::T3(effect)::S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit) -- S1(entry)::S1.1(exit)::S1.2(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit)::T3(effect)::S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit) -stimulus: -- event: Start -- event: AnotherSignal -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_T3_effect: - - T3(effect) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S1_2_entry: - - S1.2(entry) - pssm_S2_1_exit: - - S2.1(exit) - pssm_S2_2_entry: - - S2.2(entry) - pssm_S2_2_1_exit: - - S2.2.1(exit) - pssm_T2_2_2_effect: - - T2.2.2(effect) - pssm_S2_2_2_entry: - - S2.2.2(entry) -statechart: - name: History_002-B - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - transitions: - - target: S1_2 - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - event: Continue - target: Region1_FinalState1 - Region1_FinalState1: - final: true - S1_Region2: - states: - S2_1: - initial: true - exit: - - pssm_S2_1_exit - transitions: - - target: S2_2 - S2_2: - enter: - - pssm_S2_2_entry - states: - S2_2_1: - initial: true - exit: - - pssm_S2_2_1_exit - transitions: - - target: S2_2_2 - 'on': - - pssm_T2_2_2_effect - S2_2_2: - enter: - - pssm_S2_2_2_entry - transitions: - - event: Continue - target: S2_2_FinalState1 - S2_2_FinalState1: - final: true - transitions: - - event: done.state.S2_2 - target: Region2_FinalState1 - Region2_FinalState1: - final: true - history: - ShallowHistory1: - type: shallow - transitions: - - event: done.state.S1 - target: FinalState1 - - event: AnotherSignal - target: ShallowHistory1 - 'on': - - pssm_T3_effect - FinalState1: - final: true +name: History_002-B +x-pssm: + requires: [] + expected_traces: + - S1(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit)::T3(effect)::S1(entry)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit) + - S1(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit)::T3(effect)::S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit) + - S1(entry)::S1.1(exit)::S1.2(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit)::T3(effect)::S1(entry)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit) + - S1(entry)::S1.1(exit)::S1.2(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit)::T3(effect)::S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit) + - S1(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1.1(exit)::S1.2(entry)::S1(exit)::T3(effect)::S1(entry)::S1.1(exit)::S1.2(entry)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit) + - S1(entry)::S1.1(exit)::S1.2(entry)::S2.1(exit)::S2.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit)::T3(effect)::S1(entry)::S2.2(entry)::S1.1(exit)::S1.2(entry)::S2.2.1(exit)::T2.2.2(effect)::S2.2.2(entry)::S1(exit) + stimulus: + - event: Start + - event: AnotherSignal + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_T3_effect: + - T3(effect) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_2_entry: + - S1.2(entry) + pssm_S2_1_exit: + - S2.1(exit) + pssm_S2_2_entry: + - S2.2(entry) + pssm_S2_2_1_exit: + - S2.2.1(exit) + pssm_T2_2_2_effect: + - T2.2.2(effect) + pssm_S2_2_2_entry: + - S2.2.2(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - event: Continue + target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - target: S2_2 + S2_2: + enter: + - pssm_S2_2_entry + states: + S2_2_1: + initial: true + exit: + - pssm_S2_2_1_exit + transitions: + - target: S2_2_2 + 'on': + - pssm_T2_2_2_effect + S2_2_2: + enter: + - pssm_S2_2_2_entry + transitions: + - event: Continue + target: S2_2_FinalState1 + S2_2_FinalState1: + final: true + transitions: + - event: done.state.S2_2 + target: Region2_FinalState1 + Region2_FinalState1: + final: true + history: + ShallowHistory1: + type: shallow + transitions: + - event: done.state.S1 + target: FinalState1 + - event: AnotherSignal + target: ShallowHistory1 + 'on': + - pssm_T3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_002-C.yaml b/tests/uml/pssm/cases/History/History_002-C.yaml index 0de024bb..9acef70a 100644 --- a/tests/uml/pssm/cases/History/History_002-C.yaml +++ b/tests/uml/pssm/cases/History/History_002-C.yaml @@ -1,54 +1,54 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::S1.1(entry)::T1.2(effect)::S1.2(entry)::S1(exit) -stimulus: -- event: Start -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) - pssm_T1_2_effect: - - T1.2(effect) - pssm_S1_2_entry: - - S1.2(entry) -statechart: - name: History_002-C - states: - wait: - initial: true - transitions: - - event: Start - target: ShallowHistory1 - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - transitions: - - target: S1_2 - 'on': - - pssm_T1_2_effect - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - target: S1_FinalState1 - S1_FinalState1: - final: true - history: - ShallowHistory1: - type: shallow - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: History_002-C +x-pssm: + requires: [] + expected_traces: + - S1(entry)::S1.1(entry)::T1.2(effect)::S1.2(entry)::S1(exit) + stimulus: + - event: Start + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S1_2_entry: + - S1.2(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: ShallowHistory1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: S1_2 + 'on': + - pssm_T1_2_effect + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + history: + ShallowHistory1: + type: shallow + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/History/History_002-D.yaml b/tests/uml/pssm/cases/History/History_002-D.yaml index a36763f6..50921173 100644 --- a/tests/uml/pssm/cases/History/History_002-D.yaml +++ b/tests/uml/pssm/cases/History/History_002-D.yaml @@ -1,73 +1,73 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::T1.1(effect)::S1.1(entry)::S1(exit)::T1.2(effect)::S1(exit)::T3(effect)::S1(entry)::T1.3(effect)::S1.2(entry)::S1(exit) -stimulus: -- event: Start -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_T3_effect: - - T3(effect) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_1_exit: - - S1(exit) - pssm_T1_2_effect: - - T1.2(effect) - pssm_S1_2_entry: - - S1.2(entry) - pssm_T1_3_effect: - - T1.3(effect) - pssm_T1_1_effect: - - T1.1(effect) -statechart: - name: History_002-D - states: - wait: +name: History_002-D +x-pssm: + requires: [] + expected_traces: + - S1(entry)::T1.1(effect)::S1.1(entry)::S1(exit)::T1.2(effect)::S1(exit)::T3(effect)::S1(entry)::T1.3(effect)::S1.2(entry)::S1(exit) + stimulus: + - event: Start + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_T3_effect: + - T3(effect) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S1_2_entry: + - S1.2(entry) + pssm_T1_3_effect: + - T1.3(effect) + pssm_T1_1_effect: + - T1.1(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_2_effect + S1_FinalState1: + final: true + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: FinalState1 + history: + ShallowHistory1: + type: shallow + transitions: + - target: S1_2 + 'on': + - pssm_T1_3_effect + transitions: + - target: S1_1 initial: true - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - enter: - - pssm_S1_1_entry - exit: - - pssm_S1_1_exit - transitions: - - target: S1_FinalState1 - 'on': - - pssm_T1_2_effect - S1_FinalState1: - final: true - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - target: FinalState1 - history: - ShallowHistory1: - type: shallow - transitions: - - target: S1_2 - 'on': - - pssm_T1_3_effect - transitions: - - target: S1_1 - initial: true - 'on': - - pssm_T1_1_effect - - event: done.state.S1 - target: ShallowHistory1 - 'on': - - pssm_T3_effect - FinalState1: - final: true + 'on': + - pssm_T1_1_effect + - event: done.state.S1 + target: ShallowHistory1 + 'on': + - pssm_T3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Join/Join_001.yaml b/tests/uml/pssm/cases/Join/Join_001.yaml index 27a45fc8..1829f477 100644 --- a/tests/uml/pssm/cases/Join/Join_001.yaml +++ b/tests/uml/pssm/cases/Join/Join_001.yaml @@ -1,52 +1,52 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- join -expected_traces: -- S1.1(exit)::T2.3(effect)::S2.1(exit)::S1(exit)::T2.4(effect) -- S1.2(exit)::T2.4(effect)::S1.1(exit)::S1(exit)::T2.4(effect) -stimulus: -- event: Start -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_S2_1_exit: - - S2.1(exit) - pssm_T2_4_effect: - - T2.4(effect) - pssm_S1_1_exit: - - S1.1(exit) - pssm_T2_3_effect: - - T2.3(effect) -statechart: - name: Join_001 - states: - wait: - initial: true - transitions: - - event: Start - target: S1_1 S2_1 - S1: - parallel: true - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S2_1: - exit: - - pssm_S2_1_exit - transitions: - - target: FinalState1 - 'on': - - pssm_T2_4_effect - S1_Region2: - states: - S1_1: - exit: - - pssm_S1_1_exit - transitions: - - target: FinalState1 - 'on': - - pssm_T2_3_effect - FinalState1: - final: true +name: Join_001 +x-pssm: + requires: + - join + expected_traces: + - S1.1(exit)::T2.3(effect)::S2.1(exit)::S1(exit)::T2.4(effect) + - S1.2(exit)::T2.4(effect)::S1.1(exit)::S1(exit)::T2.4(effect) + stimulus: + - event: Start + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S2_1_exit: + - S2.1(exit) + pssm_T2_4_effect: + - T2.4(effect) + pssm_S1_1_exit: + - S1.1(exit) + pssm_T2_3_effect: + - T2.3(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 S2_1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S2_1: + exit: + - pssm_S2_1_exit + transitions: + - target: FinalState1 + 'on': + - pssm_T2_4_effect + S1_Region2: + states: + S1_1: + exit: + - pssm_S1_1_exit + transitions: + - target: FinalState1 + 'on': + - pssm_T2_3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Join/Join_002.yaml b/tests/uml/pssm/cases/Join/Join_002.yaml index d212fa83..2525c01b 100644 --- a/tests/uml/pssm/cases/Join/Join_002.yaml +++ b/tests/uml/pssm/cases/Join/Join_002.yaml @@ -1,59 +1,59 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- join -expected_traces: -- T1.2(effect)::T2.2(effect)::S1(exit)::T3(effect)::S2(entry) -- T2.2(effect)::T1.2(effect)::S1(exit)::T3(effect)::S2(entry) -stimulus: -- event: Start -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_T2_2_effect: - - T2.2(effect) - pssm_T3_effect: - - T3(effect) - pssm_T1_2_effect: - - T1.2(effect) - pssm_S2_entry: - - S2(entry) -statechart: - name: Join_002 - states: - wait: - initial: true - transitions: - - event: Start - target: S1_1 - S1: - exit: - - pssm_S1_exit - states: - S1_1: - parallel: true - states: - S1_1_Region1: - states: - S1_2_1: - initial: true - transitions: - - target: S2 - 'on': - - pssm_T2_2_effect - - pssm_T3_effect - S1_1_Region2: - states: - S1_1_1: - initial: true - transitions: - - target: S2 - 'on': - - pssm_T1_2_effect - - pssm_T3_effect - FinalState1: - final: true - S2: - enter: - - pssm_S2_entry - transitions: - - target: FinalState1 +name: Join_002 +x-pssm: + requires: + - join + expected_traces: + - T1.2(effect)::T2.2(effect)::S1(exit)::T3(effect)::S2(entry) + - T2.2(effect)::T1.2(effect)::S1(exit)::T3(effect)::S2(entry) + stimulus: + - event: Start + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T2_2_effect: + - T2.2(effect) + pssm_T3_effect: + - T3(effect) + pssm_T1_2_effect: + - T1.2(effect) + pssm_S2_entry: + - S2(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 + S1: + exit: + - pssm_S1_exit + states: + S1_1: + parallel: true + states: + S1_1_Region1: + states: + S1_2_1: + initial: true + transitions: + - target: S2 + 'on': + - pssm_T2_2_effect + - pssm_T3_effect + S1_1_Region2: + states: + S1_1_1: + initial: true + transitions: + - target: S2 + 'on': + - pssm_T1_2_effect + - pssm_T3_effect + FinalState1: + final: true + S2: + enter: + - pssm_S2_entry + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Join/Join_003.yaml b/tests/uml/pssm/cases/Join/Join_003.yaml index f68c4844..f4ad1fb5 100644 --- a/tests/uml/pssm/cases/Join/Join_003.yaml +++ b/tests/uml/pssm/cases/Join/Join_003.yaml @@ -1,64 +1,64 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- join -expected_traces: -- T1.4(effect)::T5(effect) -- T1.2(effect)::T5(effect) -stimulus: -- event: Start -- event: AnotherSignal -behaviors: - pssm_T5_effect: - - T5(effect) - pssm_T1_2_effect: - - T1.2(effect) - pssm_T3_effect: - - T3(effect) - pssm_T1_4_effect: - - T1.4(effect) -statechart: - name: Join_003 - datamodel: - value: None - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - states: - S1_Region1: - states: - S1_1: - initial: true - transitions: - - target: S2 - cond: value != None and (value <10) - 'on': - - pssm_T1_2_effect - - pssm_T3_effect - S1_Region2: - states: - S1_2: - initial: true - transitions: - - target: S2 - cond: value != None and (value <10) - 'on': - - pssm_T1_4_effect - - pssm_T3_effect - transitions: - - event: AnotherSignal - target: S3 - 'on': - - pssm_T5_effect - S2: - transitions: - - target: FinalState1 - FinalState1: - final: true - S3: - transitions: - - target: FinalState1 +name: Join_003 +x-pssm: + requires: + - join + expected_traces: + - T1.4(effect)::T5(effect) + - T1.2(effect)::T5(effect) + stimulus: + - event: Start + - event: AnotherSignal + behaviors: + pssm_T5_effect: + - T5(effect) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T3_effect: + - T3(effect) + pssm_T1_4_effect: + - T1.4(effect) +datamodel: + value: None +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + transitions: + - target: S2 + cond: value != None and (value <10) + 'on': + - pssm_T1_2_effect + - pssm_T3_effect + S1_Region2: + states: + S1_2: + initial: true + transitions: + - target: S2 + cond: value != None and (value <10) + 'on': + - pssm_T1_4_effect + - pssm_T3_effect + transitions: + - event: AnotherSignal + target: S3 + 'on': + - pssm_T5_effect + S2: + transitions: + - target: FinalState1 + FinalState1: + final: true + S3: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Junction/Junction_001.yaml b/tests/uml/pssm/cases/Junction/Junction_001.yaml index af4c7731..14208b1a 100644 --- a/tests/uml/pssm/cases/Junction/Junction_001.yaml +++ b/tests/uml/pssm/cases/Junction/Junction_001.yaml @@ -1,48 +1,48 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- junction -expected_traces: -- S1(entry)::T1.1(effect)::T1.2(effect)::S1(exit) -stimulus: -- event: Start -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_T1_1_effect: - - T1.1(effect) - pssm_T1_2_effect: - - T1.2(effect) -statechart: - name: Junction_001 - states: - wait: +name: Junction_001 +x-pssm: + requires: + - junction + expected_traces: + - S1(entry)::T1.1(effect)::T1.2(effect)::S1(exit) + stimulus: + - event: Start + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_T1_1_effect: + - T1.1(effect) + pssm_T1_2_effect: + - T1.2(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + transitions: + - target: S1_FinalState1 + S1_2: + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - target: S1_1 initial: true - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - transitions: - - target: S1_FinalState1 - S1_2: - transitions: - - target: S1_FinalState1 - S1_FinalState1: - final: true - transitions: - - target: S1_1 - initial: true - 'on': - - pssm_T1_1_effect - - pssm_T1_2_effect - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true + 'on': + - pssm_T1_1_effect + - pssm_T1_2_effect + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Junction/Junction_002.yaml b/tests/uml/pssm/cases/Junction/Junction_002.yaml index 814f462c..efffc82c 100644 --- a/tests/uml/pssm/cases/Junction/Junction_002.yaml +++ b/tests/uml/pssm/cases/Junction/Junction_002.yaml @@ -1,49 +1,49 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- junction -expected_traces: -- T3(effect) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_T3_effect: +name: Junction_002 +x-pssm: + requires: + - junction + expected_traces: - T3(effect) - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) -statechart: - name: Junction_002 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - - event: Continue - target: S2 - 'on': - - pssm_T3_effect - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - transitions: - - target: S1_FinalState1 - S1_2: - transitions: - - target: S1_FinalState1 - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true - S2: - transitions: - - target: FinalState1 + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_T3_effect: + - T3(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + transitions: + - target: S1_FinalState1 + S1_2: + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Junction/Junction_003.yaml b/tests/uml/pssm/cases/Junction/Junction_003.yaml index 7c375edf..c7b5ec35 100644 --- a/tests/uml/pssm/cases/Junction/Junction_003.yaml +++ b/tests/uml/pssm/cases/Junction/Junction_003.yaml @@ -1,119 +1,119 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- junction -expected_traces: -- T1.3(effect)::T3.1.1(effect)::T3.1.1.2(effect)::T1.6(effect) -- T1.4(effect)::T1.4.1(effect)::T1.8(effect) -stimulus: -- event: Start -behaviors: - pssm_T1_3_effect: - - T1.3(effect) - pssm_T3_1_1_effect: - - T3.1.1(effect) - pssm_T3_1_1_1_effect: - - T3.1.1.1(effect) - pssm_T3_1_1_2_effect: - - T3.1.1.2(effect) - pssm_T3_1_2_effect: - - T3.1.2(effect) - pssm_T1_4_effect: - - T1.4(effect) - pssm_T1_4_2_effect: - - T1.4.2(effect) - pssm_T1_4_1_effect: - - T1.4.1(effect) - pssm_T1_9_effect: - - T1.9(effect) - pssm_T1_5_effect: - - T1.5(effect) - pssm_T1_6_effect: - - T1.6(effect) - pssm_T1_7_effect: - - T1.7(effect) - pssm_T1_8_effect: - - T1.8(effect) -statechart: - name: Junction_003 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - states: - S1_1: - initial: true - transitions: - - target: S1_2 - cond: - - 'True' - - 'True' - - 'False' - 'on': - - pssm_T1_3_effect - - pssm_T3_1_1_effect - - pssm_T3_1_1_1_effect - - target: S1_3 - cond: - - 'True' - - 'True' - - 'True' - 'on': - - pssm_T1_3_effect - - pssm_T3_1_1_effect - - pssm_T3_1_1_2_effect - - target: S1_4 - cond: - - 'True' - - 'False' - 'on': - - pssm_T1_3_effect - - pssm_T3_1_2_effect - - target: S1_6 - cond: - - 'True' - - 'False' - 'on': - - pssm_T1_4_effect - - pssm_T1_4_2_effect - - target: S1_5 - cond: - - 'True' - - 'True' - 'on': - - pssm_T1_4_effect - - pssm_T1_4_1_effect - S1_6: - transitions: - - target: S1_FinalState1 - 'on': - - pssm_T1_9_effect - S1_2: - transitions: - - target: S1_FinalState1 - 'on': - - pssm_T1_5_effect - S1_3: - transitions: - - target: S1_FinalState1 - 'on': - - pssm_T1_6_effect - S1_4: - transitions: - - target: S1_FinalState1 - 'on': - - pssm_T1_7_effect - S1_5: - transitions: - - target: S1_FinalState1 - 'on': - - pssm_T1_8_effect - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: Junction_003 +x-pssm: + requires: + - junction + expected_traces: + - T1.3(effect)::T3.1.1(effect)::T3.1.1.2(effect)::T1.6(effect) + - T1.4(effect)::T1.4.1(effect)::T1.8(effect) + stimulus: + - event: Start + behaviors: + pssm_T1_3_effect: + - T1.3(effect) + pssm_T3_1_1_effect: + - T3.1.1(effect) + pssm_T3_1_1_1_effect: + - T3.1.1.1(effect) + pssm_T3_1_1_2_effect: + - T3.1.1.2(effect) + pssm_T3_1_2_effect: + - T3.1.2(effect) + pssm_T1_4_effect: + - T1.4(effect) + pssm_T1_4_2_effect: + - T1.4.2(effect) + pssm_T1_4_1_effect: + - T1.4.1(effect) + pssm_T1_9_effect: + - T1.9(effect) + pssm_T1_5_effect: + - T1.5(effect) + pssm_T1_6_effect: + - T1.6(effect) + pssm_T1_7_effect: + - T1.7(effect) + pssm_T1_8_effect: + - T1.8(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + states: + S1_1: + initial: true + transitions: + - target: S1_2 + cond: + - 'True' + - 'True' + - 'False' + 'on': + - pssm_T1_3_effect + - pssm_T3_1_1_effect + - pssm_T3_1_1_1_effect + - target: S1_3 + cond: + - 'True' + - 'True' + - 'True' + 'on': + - pssm_T1_3_effect + - pssm_T3_1_1_effect + - pssm_T3_1_1_2_effect + - target: S1_4 + cond: + - 'True' + - 'False' + 'on': + - pssm_T1_3_effect + - pssm_T3_1_2_effect + - target: S1_6 + cond: + - 'True' + - 'False' + 'on': + - pssm_T1_4_effect + - pssm_T1_4_2_effect + - target: S1_5 + cond: + - 'True' + - 'True' + 'on': + - pssm_T1_4_effect + - pssm_T1_4_1_effect + S1_6: + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_9_effect + S1_2: + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_5_effect + S1_3: + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_6_effect + S1_4: + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_7_effect + S1_5: + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_8_effect + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Junction/Junction_004.yaml b/tests/uml/pssm/cases/Junction/Junction_004.yaml index d9cb0f1f..c0beb8eb 100644 --- a/tests/uml/pssm/cases/Junction/Junction_004.yaml +++ b/tests/uml/pssm/cases/Junction/Junction_004.yaml @@ -1,91 +1,91 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- junction -expected_traces: -- T3(effect) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_2_exit: - - S1.2(exit) - pssm_T1_1_effect: - - T1.1(effect) - pssm_S2_1_entry: - - S2.1(entry) - pssm_S2_2_entry: - - S2.2(entry) - pssm_T1_2_effect: - - T1.2(effect) - pssm_T1_3_effect: - - T1.3(effect) - pssm_T3_effect: +name: Junction_004 +x-pssm: + requires: + - junction + expected_traces: - T3(effect) -statechart: - name: Junction_004 - states: - S1: - parallel: true - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S1_1: - enter: - - pssm_S1_1_entry - S1_2: - exit: - - pssm_S1_2_exit - transitions: - - event: Continue - target: Region1_FinalState1 - Region1_FinalState1: - final: true - transitions: - - target: S1_1 - initial: true - 'on': - - pssm_T1_1_effect - S1_Region2: - states: - S2_1: - enter: - - pssm_S2_1_entry - transitions: - - target: FinalState1 - S2_2: - enter: - - pssm_S2_2_entry - transitions: - - target: FinalState1 - wait: - initial: true - transitions: - - event: Start - target: S1_1 - cond: 'False' - 'on': - - pssm_T1_2_effect - - event: Start - target: S1_2 - cond: 'True' - 'on': - - pssm_T1_3_effect - - event: Continue - target: S2 - 'on': - - pssm_T3_effect - FinalState1: - final: true - S2: - transitions: - - target: FinalState1 + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_2_exit: + - S1.2(exit) + pssm_T1_1_effect: + - T1.1(effect) + pssm_S2_1_entry: + - S2.1(entry) + pssm_S2_2_entry: + - S2.2(entry) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_3_effect: + - T1.3(effect) + pssm_T3_effect: + - T3(effect) +states: + S1: + parallel: true + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + enter: + - pssm_S1_1_entry + S1_2: + exit: + - pssm_S1_2_exit + transitions: + - event: Continue + target: Region1_FinalState1 + Region1_FinalState1: + final: true + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + S1_Region2: + states: + S2_1: + enter: + - pssm_S2_1_entry + transitions: + - target: FinalState1 + S2_2: + enter: + - pssm_S2_2_entry + transitions: + - target: FinalState1 + wait: + initial: true + transitions: + - event: Start + target: S1_1 + cond: 'False' + 'on': + - pssm_T1_2_effect + - event: Start + target: S1_2 + cond: 'True' + 'on': + - pssm_T1_3_effect + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Junction/Junction_005.yaml b/tests/uml/pssm/cases/Junction/Junction_005.yaml index f11a4d5e..f235615d 100644 --- a/tests/uml/pssm/cases/Junction/Junction_005.yaml +++ b/tests/uml/pssm/cases/Junction/Junction_005.yaml @@ -1,100 +1,100 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- junction -expected_traces: -- S1(entry)::T2.1(effect)::T1.3(effect)::S2.1(entry)::S1.2(exit)::S1(exit) -- S1(entry)::T2.1(effect)::S2.1(entry)::T1.3(effect)::S1.2(exit)::S1(exit) -- S1(entry)::T1.3(effect)::T2.1(effect)::S2.1(entry)::S1.2(exit)::S1(exit) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_2_exit: - - S1.2(exit) - pssm_T1_1_effect: - - T1.1(effect) - pssm_S2_1_entry: - - S2.1(entry) - pssm_S2_2_entry: - - S2.2(entry) - pssm_T2_1_effect: - - T2.1(effect) - pssm_T1_2_effect: - - T1.2(effect) - pssm_T1_3_effect: - - T1.3(effect) - pssm_T3_effect: - - T3(effect) -statechart: - name: Junction_005 - states: - S1: - parallel: true - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S1_1: - enter: - - pssm_S1_1_entry - S1_2: - exit: - - pssm_S1_2_exit - transitions: - - event: Continue - target: Region1_FinalState1 - Region1_FinalState1: - final: true - transitions: - - target: S1_1 - initial: true - 'on': - - pssm_T1_1_effect - S1_Region2: - states: - S2_1: - enter: - - pssm_S2_1_entry - transitions: - - target: FinalState1 - S2_2: - enter: - - pssm_S2_2_entry - transitions: - - target: FinalState1 - transitions: - - target: S2_1 - initial: true - 'on': - - pssm_T2_1_effect - wait: - initial: true - transitions: - - event: Start - target: S1_1 - cond: 'False' - 'on': - - pssm_T1_2_effect - - event: Start - target: S1_2 - cond: 'True' - 'on': - - pssm_T1_3_effect - - event: Continue - target: S2 - 'on': - - pssm_T3_effect - FinalState1: - final: true - S2: - transitions: - - target: FinalState1 +name: Junction_005 +x-pssm: + requires: + - junction + expected_traces: + - S1(entry)::T2.1(effect)::T1.3(effect)::S2.1(entry)::S1.2(exit)::S1(exit) + - S1(entry)::T2.1(effect)::S2.1(entry)::T1.3(effect)::S1.2(exit)::S1(exit) + - S1(entry)::T1.3(effect)::T2.1(effect)::S2.1(entry)::S1.2(exit)::S1(exit) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_2_exit: + - S1.2(exit) + pssm_T1_1_effect: + - T1.1(effect) + pssm_S2_1_entry: + - S2.1(entry) + pssm_S2_2_entry: + - S2.2(entry) + pssm_T2_1_effect: + - T2.1(effect) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_3_effect: + - T1.3(effect) + pssm_T3_effect: + - T3(effect) +states: + S1: + parallel: true + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + enter: + - pssm_S1_1_entry + S1_2: + exit: + - pssm_S1_2_exit + transitions: + - event: Continue + target: Region1_FinalState1 + Region1_FinalState1: + final: true + transitions: + - target: S1_1 + initial: true + 'on': + - pssm_T1_1_effect + S1_Region2: + states: + S2_1: + enter: + - pssm_S2_1_entry + transitions: + - target: FinalState1 + S2_2: + enter: + - pssm_S2_2_entry + transitions: + - target: FinalState1 + transitions: + - target: S2_1 + initial: true + 'on': + - pssm_T2_1_effect + wait: + initial: true + transitions: + - event: Start + target: S1_1 + cond: 'False' + 'on': + - pssm_T1_2_effect + - event: Start + target: S1_2 + cond: 'True' + 'on': + - pssm_T1_3_effect + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Junction/Junction_006.yaml b/tests/uml/pssm/cases/Junction/Junction_006.yaml index a0b772f7..170effc7 100644 --- a/tests/uml/pssm/cases/Junction/Junction_006.yaml +++ b/tests/uml/pssm/cases/Junction/Junction_006.yaml @@ -1,65 +1,65 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -- exit_point -- junction -expected_traces: -- T1.1(effect)[in=true]::T1.3(effect)[in=true]::T1.7(effect) -stimulus: -- event: Start -- event: Data - kwargs: - value: true -behaviors: - pssm_T1_4_effect: - - T1.4(effect) - pssm_T1_6_effect: - - T1.6(effect) - pssm_T1_7_effect: - - T1.7(effect) - pssm_T1_1_effect: - - T1.1(effect)[in={value}] - pssm_T1_3_effect: - - T1.3(effect)[in={value}] - pssm_T1_2_effect: - - T1.2(effect)[in={value}] -statechart: - name: Junction_006 - states: - S1: - states: - S1_2: - transitions: - - target: S1_FinalState1 - 'on': - - pssm_T1_4_effect - S1_3: - transitions: - - target: S1_FinalState1 - cond: 'False' - 'on': - - pssm_T1_6_effect - - target: FinalState1 - 'on': - - pssm_T1_7_effect - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - wait: - initial: true - transitions: - - event: Data - target: S1_3 - cond: value == True - 'on': - - pssm_T1_1_effect - - pssm_T1_3_effect - - event: Data - target: S1_2 - 'on': - - pssm_T1_1_effect - - pssm_T1_2_effect - FinalState1: - final: true +name: Junction_006 +x-pssm: + requires: + - entry_point + - exit_point + - junction + expected_traces: + - T1.1(effect)[in=true]::T1.3(effect)[in=true]::T1.7(effect) + stimulus: + - event: Start + - event: Data + kwargs: + value: true + behaviors: + pssm_T1_4_effect: + - T1.4(effect) + pssm_T1_6_effect: + - T1.6(effect) + pssm_T1_7_effect: + - T1.7(effect) + pssm_T1_1_effect: + - T1.1(effect)[in={value}] + pssm_T1_3_effect: + - T1.3(effect)[in={value}] + pssm_T1_2_effect: + - T1.2(effect)[in={value}] +states: + S1: + states: + S1_2: + transitions: + - target: S1_FinalState1 + 'on': + - pssm_T1_4_effect + S1_3: + transitions: + - target: S1_FinalState1 + cond: 'False' + 'on': + - pssm_T1_6_effect + - target: FinalState1 + 'on': + - pssm_T1_7_effect + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + wait: + initial: true + transitions: + - event: Data + target: S1_3 + cond: value == True + 'on': + - pssm_T1_1_effect + - pssm_T1_3_effect + - event: Data + target: S1_2 + 'on': + - pssm_T1_1_effect + - pssm_T1_2_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Other/TransitionExecutionAlgorithm.yaml b/tests/uml/pssm/cases/Other/TransitionExecutionAlgorithm.yaml index 70355f5d..9c6fcb65 100644 --- a/tests/uml/pssm/cases/Other/TransitionExecutionAlgorithm.yaml +++ b/tests/uml/pssm/cases/Other/TransitionExecutionAlgorithm.yaml @@ -1,56 +1,56 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -- exit_point -expected_traces: -- S1.1(exit)::T1.2(effect)::S1(exit)::T2(effect)::S2(entry)::S2.1(entry)::T2.1(effect) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_S1_1_exit: - - S1.1(exit) - pssm_T1_2_effect: - - T1.2(effect) - pssm_T2_effect: - - T2(effect) - pssm_T2_1_effect: - - T2.1(effect) - pssm_S2_entry: - - S2(entry) - pssm_S2_1_entry: - - S2.1(entry) -statechart: - name: TransitionExecutionAlgorithm - states: - S1: - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - transitions: - - event: Continue - target: S2_1_1 - 'on': - - pssm_T1_2_effect - - pssm_T2_effect - - pssm_T2_1_effect - S2: - enter: - - pssm_S2_entry - states: - S2_1: - enter: - - pssm_S2_1_entry - states: - S2_1_1: {} - Waiting: - initial: true - transitions: - - event: Start - target: S1 +name: TransitionExecutionAlgorithm +x-pssm: + requires: + - entry_point + - exit_point + expected_traces: + - S1.1(exit)::T1.2(effect)::S1(exit)::T2(effect)::S2(entry)::S2.1(entry)::T2.1(effect) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T2_effect: + - T2(effect) + pssm_T2_1_effect: + - T2.1(effect) + pssm_S2_entry: + - S2(entry) + pssm_S2_1_entry: + - S2.1(entry) +states: + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - event: Continue + target: S2_1_1 + 'on': + - pssm_T1_2_effect + - pssm_T2_effect + - pssm_T2_1_effect + S2: + enter: + - pssm_S2_entry + states: + S2_1: + enter: + - pssm_S2_1_entry + states: + S2_1_1: {} + Waiting: + initial: true + transitions: + - event: Start + target: S1 diff --git a/tests/uml/pssm/cases/Redefinition/Redefinition_001.yaml b/tests/uml/pssm/cases/Redefinition/Redefinition_001.yaml index 1d77561b..e4290654 100644 --- a/tests/uml/pssm/cases/Redefinition/Redefinition_001.yaml +++ b/tests/uml/pssm/cases/Redefinition/Redefinition_001.yaml @@ -1,67 +1,67 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- redefinition -expected_traces: -- S2(entry)-redefined::T3(effect)::S3(entry)-redefined::T4(effect)::S4(entry)::T5(effect)::S2(entry)-redefined::T3(effect)::S3(entry)-redefined -stimulus: -- event: Start -- event: Continue -- event: AnotherSignal -behaviors: - pssm_S2_entry: - - S2(entry)-redefined - pssm_T3_effect: - - T3(effect) - pssm_S3_entry: - - S3(entry)-redefined - pssm_T4_effect_2: - - T4(effect) - pssm_S4_entry: - - S4(entry) - pssm_T5_effect: - - T5(effect) -statechart: - name: Redefinition_001 - states: - S1: - initial: true - transitions: - - event: Start - target: S2 - S2: - enter: - - pssm_S2_entry - states: - S2_1: - initial: true - transitions: - - target: S2_2 - S2_2: - transitions: - - target: S2_FinalState1 - S2_FinalState1: - final: true - transitions: - - event: done.state.S2 - target: S3 - 'on': - - pssm_T3_effect - S3: - enter: - - pssm_S3_entry - transitions: - - event: AnotherSignal - target: FinalState1 - - event: Continue - target: S4 - 'on': - - pssm_T4_effect_2 - FinalState1: - final: true - S4: - enter: - - pssm_S4_entry - transitions: - - target: S2 - 'on': - - pssm_T5_effect +name: Redefinition_001 +x-pssm: + requires: + - redefinition + expected_traces: + - S2(entry)-redefined::T3(effect)::S3(entry)-redefined::T4(effect)::S4(entry)::T5(effect)::S2(entry)-redefined::T3(effect)::S3(entry)-redefined + stimulus: + - event: Start + - event: Continue + - event: AnotherSignal + behaviors: + pssm_S2_entry: + - S2(entry)-redefined + pssm_T3_effect: + - T3(effect) + pssm_S3_entry: + - S3(entry)-redefined + pssm_T4_effect_2: + - T4(effect) + pssm_S4_entry: + - S4(entry) + pssm_T5_effect: + - T5(effect) +states: + S1: + initial: true + transitions: + - event: Start + target: S2 + S2: + enter: + - pssm_S2_entry + states: + S2_1: + initial: true + transitions: + - target: S2_2 + S2_2: + transitions: + - target: S2_FinalState1 + S2_FinalState1: + final: true + transitions: + - event: done.state.S2 + target: S3 + 'on': + - pssm_T3_effect + S3: + enter: + - pssm_S3_entry + transitions: + - event: AnotherSignal + target: FinalState1 + - event: Continue + target: S4 + 'on': + - pssm_T4_effect_2 + FinalState1: + final: true + S4: + enter: + - pssm_S4_entry + transitions: + - target: S2 + 'on': + - pssm_T5_effect diff --git a/tests/uml/pssm/cases/Redefinition/Redefinition_002.yaml b/tests/uml/pssm/cases/Redefinition/Redefinition_002.yaml index e0c35bae..5f8a20b1 100644 --- a/tests/uml/pssm/cases/Redefinition/Redefinition_002.yaml +++ b/tests/uml/pssm/cases/Redefinition/Redefinition_002.yaml @@ -1,54 +1,54 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- redefinition -expected_traces: -- T2(effect)::S1(entry)-redefined-prime::S1.1(entry)-redefined-second::T1.2(effect)::S1.2(exit) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_T2_effect: - - T2(effect) - pssm_S1_entry: - - S1(entry)-redefined-prime - pssm_S1_1_entry: - - S1.1(entry)-redefined-second - pssm_T1_2_effect: - - T1.2(effect) - pssm_S1_2_exit: - - S1.2(exit) -statechart: - name: Redefinition_002 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - 'on': - - pssm_T2_effect - S1: - enter: - - pssm_S1_entry - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - transitions: - - event: Continue - target: S1_2 - 'on': - - pssm_T1_2_effect - S1_2: - exit: - - pssm_S1_2_exit - transitions: - - target: S1_FinalState1 - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: Redefinition_002 +x-pssm: + requires: + - redefinition + expected_traces: + - T2(effect)::S1(entry)-redefined-prime::S1.1(entry)-redefined-second::T1.2(effect)::S1.2(exit) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_T2_effect: + - T2(effect) + pssm_S1_entry: + - S1(entry)-redefined-prime + pssm_S1_1_entry: + - S1.1(entry)-redefined-second + pssm_T1_2_effect: + - T1.2(effect) + pssm_S1_2_exit: + - S1.2(exit) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + S1: + enter: + - pssm_S1_entry + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - event: Continue + target: S1_2 + 'on': + - pssm_T1_2_effect + S1_2: + exit: + - pssm_S1_2_exit + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Redefinition/Redefinition_003.yaml b/tests/uml/pssm/cases/Redefinition/Redefinition_003.yaml index 449b1968..62076e26 100644 --- a/tests/uml/pssm/cases/Redefinition/Redefinition_003.yaml +++ b/tests/uml/pssm/cases/Redefinition/Redefinition_003.yaml @@ -1,59 +1,59 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- redefinition -expected_traces: -- S1(entry)-redefined-second::T3(effect)::S2(entry)-redefined-second::S1(entry)-redefined-second::T4(effect)::S2(entry)-redefined-second::S1(entry)-redefined-second::T6(effect)::S2(entry)-redefined-second -stimulus: -- event: Start -- event: Continue -- event: AnotherSignal -- event: AnotherSignal -- event: AnotherSignal -- event: Pending -- event: Continue -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry)-redefined-second - pssm_T3_effect: - - T3(effect) - pssm_T4_effect: - - T4(effect) - pssm_T6_effect: - - T6(effect) - pssm_S2_entry: - - S2(entry)-redefined-second -statechart: - name: Redefinition_003 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - transitions: - - event: Continue - target: S2 - 'on': - - pssm_T3_effect - - event: AnotherSignal - target: S2 - 'on': - - pssm_T4_effect - - event: Pending - target: S2 - 'on': - - pssm_T6_effect - S2: - enter: - - pssm_S2_entry - transitions: - - event: AnotherSignal - target: S1 - - event: Continue - target: FinalState1 - FinalState1: - final: true +name: Redefinition_003 +x-pssm: + requires: + - redefinition + expected_traces: + - S1(entry)-redefined-second::T3(effect)::S2(entry)-redefined-second::S1(entry)-redefined-second::T4(effect)::S2(entry)-redefined-second::S1(entry)-redefined-second::T6(effect)::S2(entry)-redefined-second + stimulus: + - event: Start + - event: Continue + - event: AnotherSignal + - event: AnotherSignal + - event: AnotherSignal + - event: Pending + - event: Continue + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry)-redefined-second + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) + pssm_T6_effect: + - T6(effect) + pssm_S2_entry: + - S2(entry)-redefined-second +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + transitions: + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + - event: AnotherSignal + target: S2 + 'on': + - pssm_T4_effect + - event: Pending + target: S2 + 'on': + - pssm_T6_effect + S2: + enter: + - pssm_S2_entry + transitions: + - event: AnotherSignal + target: S1 + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Redefinition/Redefinition_004.yaml b/tests/uml/pssm/cases/Redefinition/Redefinition_004.yaml index 7e01df64..08901205 100644 --- a/tests/uml/pssm/cases/Redefinition/Redefinition_004.yaml +++ b/tests/uml/pssm/cases/Redefinition/Redefinition_004.yaml @@ -1,52 +1,52 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- redefinition -expected_traces: -- S1.1(entry)-redefined-prime::T1.2(effect)-redefined-prime::S1.2(entry)-redefined-prime::S1.1(entry)-redefined-prime::T1.2(effect)-redefined-prime::S1.2(entry)-redefined-prime -stimulus: -- event: Start -- event: Continue -- event: Pending -- event: AnotherSignal -- event: Continue -behaviors: - pssm_S1_1_entry: - - S1.1(entry)-redefined-prime - pssm_T1_2__effect: - - T1.2(effect)-redefined-prime - pssm_S1_2_entry: - - S1.2(entry)-redefined-prime -statechart: - name: Redefinition_004 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - transitions: - - event: AnotherSignal Continue - target: S1_2 - 'on': - - pssm_T1_2__effect - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - event: Pending - target: S1_1 - - event: Continue - target: S1_FinalState1 - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: Redefinition_004 +x-pssm: + requires: + - redefinition + expected_traces: + - S1.1(entry)-redefined-prime::T1.2(effect)-redefined-prime::S1.2(entry)-redefined-prime::S1.1(entry)-redefined-prime::T1.2(effect)-redefined-prime::S1.2(entry)-redefined-prime + stimulus: + - event: Start + - event: Continue + - event: Pending + - event: AnotherSignal + - event: Continue + behaviors: + pssm_S1_1_entry: + - S1.1(entry)-redefined-prime + pssm_T1_2__effect: + - T1.2(effect)-redefined-prime + pssm_S1_2_entry: + - S1.2(entry)-redefined-prime +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - event: AnotherSignal Continue + target: S1_2 + 'on': + - pssm_T1_2__effect + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - event: Pending + target: S1_1 + - event: Continue + target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Redefinition/Redefinition_005.yaml b/tests/uml/pssm/cases/Redefinition/Redefinition_005.yaml index e2ca2cf1..8c55cff5 100644 --- a/tests/uml/pssm/cases/Redefinition/Redefinition_005.yaml +++ b/tests/uml/pssm/cases/Redefinition/Redefinition_005.yaml @@ -1,54 +1,54 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- redefinition -expected_traces: -- T2(effect)::S1(entry)::S1(doActivity)::S1(exit)::T3(effect)-redefined::S2(entry)-redefined-prime::S2(doActivity)-redefined-prime::S2(exit)-redefined-prime -stimulus: -- event: Start -behaviors: - pssm_T2__effect: - - T2(effect) - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - on_invoke_S1: - - S1(doActivity) - pssm_T3__effect: - - T3(effect)-redefined - pssm_S2_entry: - - S2(entry)-redefined-prime - pssm_S2_exit: - - S2(exit)-redefined-prime - on_invoke_S2: - - S2(doActivity)-redefined-prime -statechart: - name: Redefinition_005 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - 'on': - - pssm_T2__effect - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - transitions: - - event: done.invoke.S1 - target: S2 - 'on': - - pssm_T3__effect - S2: - enter: - - pssm_S2_entry - exit: - - pssm_S2_exit - transitions: - - event: done.invoke.S2 - target: FinalState1 - FinalState1: - final: true +name: Redefinition_005 +x-pssm: + requires: + - redefinition + expected_traces: + - T2(effect)::S1(entry)::S1(doActivity)::S1(exit)::T3(effect)-redefined::S2(entry)-redefined-prime::S2(doActivity)-redefined-prime::S2(exit)-redefined-prime + stimulus: + - event: Start + behaviors: + pssm_T2__effect: + - T2(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + on_invoke_S1: + - S1(doActivity) + pssm_T3__effect: + - T3(effect)-redefined + pssm_S2_entry: + - S2(entry)-redefined-prime + pssm_S2_exit: + - S2(exit)-redefined-prime + on_invoke_S2: + - S2(doActivity)-redefined-prime +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2__effect + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + transitions: + - event: done.invoke.S1 + target: S2 + 'on': + - pssm_T3__effect + S2: + enter: + - pssm_S2_entry + exit: + - pssm_S2_exit + transitions: + - event: done.invoke.S2 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Redefinition/Redefinition_006.yaml b/tests/uml/pssm/cases/Redefinition/Redefinition_006.yaml index d8909a75..b384b96b 100644 --- a/tests/uml/pssm/cases/Redefinition/Redefinition_006.yaml +++ b/tests/uml/pssm/cases/Redefinition/Redefinition_006.yaml @@ -1,41 +1,41 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- defer -- redefinition -expected_traces: -- S1.1(exit)-redefined-prime::S1(exit) -stimulus: -- event: Start -- event: Continue -- event: AnotherSignal -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_S1_1_exit: - - S1.1(exit)-redefined-prime -statechart: - name: Redefinition_006 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - transitions: - - event: AnotherSignal - target: S1_FinalState1 - S1_FinalState1: - final: true - transitions: - - event: Continue - target: FinalState1 - FinalState1: - final: true +name: Redefinition_006 +x-pssm: + requires: + - defer + - redefinition + expected_traces: + - S1.1(exit)-redefined-prime::S1(exit) + stimulus: + - event: Start + - event: Continue + - event: AnotherSignal + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_S1_1_exit: + - S1.1(exit)-redefined-prime +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - event: AnotherSignal + target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Standalone/Standalone_001.yaml b/tests/uml/pssm/cases/Standalone/Standalone_001.yaml index 4c0bda53..3f12ce6d 100644 --- a/tests/uml/pssm/cases/Standalone/Standalone_001.yaml +++ b/tests/uml/pssm/cases/Standalone/Standalone_001.yaml @@ -1,106 +1,106 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- choice -- entry_point -- exit_point -expected_traces: -- T2(effect)::S1.2(entry)::T1.6(effect)::S1.2(entry)::T1.7(effect)::S2.2(doActivity)::S2.1(entry) -- T2(effect)::S1.2(entry)::T1.6(effect)::S1.2(entry)::T1.7(effect)::S2.1(entry)::S2.2(doActivity) -stimulus: -- event: Start -- event: Continue -- event: Continue -behaviors: - pssm_T2_effect: - - T2(effect) - pssm_S1_2_entry: - - S1.2(entry) - pssm_T1_7_effect: - - T1.7(effect) - pssm_T1_6_effect: - - T1.6(effect) - pssm_S1_3_entry: - - S1.3(entry) - pssm_S2_1_entry: - - S2.1(entry) - on_invoke_S2_2: - - S2.2(doActivity) -statechart: - name: Standalone_001 - datamodel: - balance: None - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - 'on': +name: Standalone_001 +x-pssm: + requires: + - choice + - entry_point + - exit_point + expected_traces: + - T2(effect)::S1.2(entry)::T1.6(effect)::S1.2(entry)::T1.7(effect)::S2.2(doActivity)::S2.1(entry) + - T2(effect)::S1.2(entry)::T1.6(effect)::S1.2(entry)::T1.7(effect)::S2.1(entry)::S2.2(doActivity) + stimulus: + - event: Start + - event: Continue + - event: Continue + behaviors: + pssm_T2_effect: + - T2(effect) + pssm_S1_2_entry: + - S1.2(entry) + pssm_T1_7_effect: + - T1.7(effect) + pssm_T1_6_effect: + - T1.6(effect) + pssm_S1_3_entry: + - S1.3(entry) + pssm_S2_1_entry: + - S2.1(entry) + on_invoke_S2_2: + - S2.2(doActivity) +datamodel: + balance: None +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - assign: + location: balance + expr: '150' + - pssm_T2_effect + S1: + states: + S1_2: + enter: - assign: location: balance - expr: '150' - - pssm_T2_effect - S1: - states: - S1_2: - enter: - - assign: - location: balance - expr: balance - 100 - - pssm_S1_2_entry - transitions: - - target: S2 - cond: balance != None and (balance <= 0) - 'on': - - pssm_T1_7_effect - - target: S1_1 - 'on': - - pssm_T1_6_effect - S1_3: - enter: - - assign: - location: balance - expr: balance - 50 - - pssm_S1_3_entry - transitions: - - target: S2 - cond: balance != None and (balance <= 0) - 'on': - - pssm_T1_7_effect - - target: S1_1 - 'on': - - pssm_T1_6_effect - S1_1: - initial: true - transitions: - - event: Continue - target: S1_2 - - event: AnotherSignal - target: S1_3 - FS1: - final: true - S2: - parallel: true - states: - S2_Region1: - states: - S2_1: - initial: true - enter: - - pssm_S2_1_entry - transitions: - - target: FSR1 - FSR1: - final: true - S2_Region2: - states: - S2_2: - initial: true - transitions: - - event: done.invoke.S2_2 - target: FSR2 - FSR2: - final: true - transitions: - - event: done.state.S2 - target: FS1 + expr: balance - 100 + - pssm_S1_2_entry + transitions: + - target: S2 + cond: balance != None and (balance <= 0) + 'on': + - pssm_T1_7_effect + - target: S1_1 + 'on': + - pssm_T1_6_effect + S1_3: + enter: + - assign: + location: balance + expr: balance - 50 + - pssm_S1_3_entry + transitions: + - target: S2 + cond: balance != None and (balance <= 0) + 'on': + - pssm_T1_7_effect + - target: S1_1 + 'on': + - pssm_T1_6_effect + S1_1: + initial: true + transitions: + - event: Continue + target: S1_2 + - event: AnotherSignal + target: S1_3 + FS1: + final: true + S2: + parallel: true + states: + S2_Region1: + states: + S2_1: + initial: true + enter: + - pssm_S2_1_entry + transitions: + - target: FSR1 + FSR1: + final: true + S2_Region2: + states: + S2_2: + initial: true + transitions: + - event: done.invoke.S2_2 + target: FSR2 + FSR2: + final: true + transitions: + - event: done.state.S2 + target: FS1 diff --git a/tests/uml/pssm/cases/Standalone/Standalone_002.yaml b/tests/uml/pssm/cases/Standalone/Standalone_002.yaml index c94ea69f..98050b6f 100644 --- a/tests/uml/pssm/cases/Standalone/Standalone_002.yaml +++ b/tests/uml/pssm/cases/Standalone/Standalone_002.yaml @@ -1,109 +1,109 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -- exit_point -- junction -expected_traces: -- S1(entry)::S1.1(entry)::S1.1(exit)::S1(exit)::T1.3(effect)[in=5]::S2(entry)[in=5]::S2(exit)[in=5]::T2.1(effect)[in=5] -- S1(entry)::S1.1(entry)::S1.1(exit)::S1(exit)::T1.3(effect)[in=5]::S2(entry)[in=5]::S2.2(entry)[in=5]::S2(exit)[in=5]::T2.1(effect)[in=5] -stimulus: -- event: Start -- event: IntegerData - kwargs: - value: 20 -- event: IntegerData - kwargs: - value: 5 -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_1_exit: - - S1.1(exit) - pssm_T1_3_effect: - - T1.3(effect)[in={value}] - pssm_T2_2_effect: - - T2.2(effect)[in={value}] - pssm_T2_1_effect: - - T2.1(effect)[in={value}] - pssm_T1_1_effect: - - T1.1(effect) - pssm_S2_entry: - - S2(entry)[in={value}] - pssm_S2_exit: - - S2(exit)[in={value}] - pssm_S2_1_entry: - - S2.1(entry)[in={value}] - pssm_S2_2_entry: - - S2.2(entry)[in={value}] -statechart: - name: Standalone_002 - states: - wait: +name: Standalone_002 +x-pssm: + requires: + - entry_point + - exit_point + - junction + expected_traces: + - S1(entry)::S1.1(entry)::S1.1(exit)::S1(exit)::T1.3(effect)[in=5]::S2(entry)[in=5]::S2(exit)[in=5]::T2.1(effect)[in=5] + - S1(entry)::S1.1(entry)::S1.1(exit)::S1(exit)::T1.3(effect)[in=5]::S2(entry)[in=5]::S2.2(entry)[in=5]::S2(exit)[in=5]::T2.1(effect)[in=5] + stimulus: + - event: Start + - event: IntegerData + kwargs: + value: 20 + - event: IntegerData + kwargs: + value: 5 + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_3_effect: + - T1.3(effect)[in={value}] + pssm_T2_2_effect: + - T2.2(effect)[in={value}] + pssm_T2_1_effect: + - T2.1(effect)[in={value}] + pssm_T1_1_effect: + - T1.1(effect) + pssm_S2_entry: + - S2(entry)[in={value}] + pssm_S2_exit: + - S2(exit)[in={value}] + pssm_S2_1_entry: + - S2.1(entry)[in={value}] + pssm_S2_2_entry: + - S2.2(entry)[in={value}] +states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - target: S1 + - event: IntegerData + target: S2_2 S2_1 + cond: value == 10 + 'on': + - pssm_T1_3_effect + - pssm_T2_2_effect + - event: IntegerData + target: S2_2 end + cond: value == 5 + 'on': + - pssm_T1_3_effect + - pssm_T2_1_effect + transitions: + - target: S1_1 initial: true - transitions: - - event: Start - target: S1_1 - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - enter: - - pssm_S1_1_entry - exit: - - pssm_S1_1_exit - transitions: - - target: S1 - - event: IntegerData - target: S2_2 S2_1 - cond: value == 10 - 'on': - - pssm_T1_3_effect - - pssm_T2_2_effect - - event: IntegerData - target: S2_2 end - cond: value == 5 - 'on': - - pssm_T1_3_effect - - pssm_T2_1_effect - transitions: - - target: S1_1 - initial: true - 'on': - - pssm_T1_1_effect - FinalState1: - final: true - S2: - parallel: true - enter: - - pssm_S2_entry - exit: - - pssm_S2_exit - states: - S2_Region1: - states: - S2_1: - enter: - - pssm_S2_1_entry - transitions: - - target: Region1_FinalState1 - Region1_FinalState1: - final: true - S2_Region2: - states: - S2_2: - enter: - - pssm_S2_2_entry - transitions: - - target: Region2_FinalState1 - Region2_FinalState1: - final: true - end: - transitions: - - target: FinalState1 + 'on': + - pssm_T1_1_effect + FinalState1: + final: true + S2: + parallel: true + enter: + - pssm_S2_entry + exit: + - pssm_S2_exit + states: + S2_Region1: + states: + S2_1: + enter: + - pssm_S2_1_entry + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + S2_Region2: + states: + S2_2: + enter: + - pssm_S2_2_entry + transitions: + - target: Region2_FinalState1 + Region2_FinalState1: + final: true + end: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Standalone/Standalone_003.yaml b/tests/uml/pssm/cases/Standalone/Standalone_003.yaml index 8e6b58b9..fba722fe 100644 --- a/tests/uml/pssm/cases/Standalone/Standalone_003.yaml +++ b/tests/uml/pssm/cases/Standalone/Standalone_003.yaml @@ -1,63 +1,63 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- call_event -expected_traces: -- S2.1.1(entry)[in=true][in=true][out=false][out=false]::S1.1(entry)[in=true][in=true][out=true][out=true]::[out=true][out=true] -- S1.1(entry)[in=true][in=true][out=true][out=true]::S2.1.1(entry)[in=true][in=true][out=false][out=false]::[out=false][out=false] -stimulus: -- event: Start -- call: or - kwargs: - left: true - right: true - trace_result: '[out={result}]' -- event: Continue -behaviors: - pssm_S1_1_entry: - - S1.1(entry)[in={left}][in={right}] - pssm_S2_1_1_entry: - - S2.1.1(entry)[in={left}][in={right}] -statechart: - name: Standalone_003 - states: - S1: - parallel: true - states: - S1_Region1: - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - transitions: - - target: Region1_FinalState1 - Region1_FinalState1: - final: true - S1_Region2: - states: - S2_1: - initial: true - states: - S2_1_1: - initial: true - enter: - - pssm_S2_1_1_entry - transitions: - - target: S2_1_FinalState1 - S2_1_FinalState1: - final: true - transitions: - - event: done.state.S2_1 - target: Region2_FinalState1 - Region2_FinalState1: - final: true - transitions: - - event: Continue - target: FinalState1 - wait: - initial: true - transitions: - - event: or - target: S1 - FinalState1: - final: true +name: Standalone_003 +x-pssm: + requires: + - call_event + expected_traces: + - S2.1.1(entry)[in=true][in=true][out=false][out=false]::S1.1(entry)[in=true][in=true][out=true][out=true]::[out=true][out=true] + - S1.1(entry)[in=true][in=true][out=true][out=true]::S2.1.1(entry)[in=true][in=true][out=false][out=false]::[out=false][out=false] + stimulus: + - event: Start + - call: or + kwargs: + left: true + right: true + trace_result: '[out={result}]' + - event: Continue + behaviors: + pssm_S1_1_entry: + - S1.1(entry)[in={left}][in={right}] + pssm_S2_1_1_entry: + - S2.1.1(entry)[in={left}][in={right}] +states: + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + states: + S2_1_1: + initial: true + enter: + - pssm_S2_1_1_entry + transitions: + - target: S2_1_FinalState1 + S2_1_FinalState1: + final: true + transitions: + - event: done.state.S2_1 + target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - event: Continue + target: FinalState1 + wait: + initial: true + transitions: + - event: or + target: S1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Terminate/Terminate_001.yaml b/tests/uml/pssm/cases/Terminate/Terminate_001.yaml index 60385267..c79ea197 100644 --- a/tests/uml/pssm/cases/Terminate/Terminate_001.yaml +++ b/tests/uml/pssm/cases/Terminate/Terminate_001.yaml @@ -1,61 +1,61 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- terminate -expected_traces: -- S1(entry)::S2.1(entry)::S1.1(entry)::S2.1(exit) -- S1(entry)::S1.1(entry)::S2.1(entry)::S2.1(exit) -stimulus: -- event: Start -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S2_1_entry: - - S2.1(entry) - pssm_S2_1_exit: - - S2.1(exit) -statechart: - name: Terminate_001 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - exit: - - pssm_S1_1_exit - transitions: - - event: Continue - target: FinalState1 - FinalState1: - final: true - S1_Region2: - states: - S2_1: - initial: true - enter: - - pssm_S2_1_entry - exit: - - pssm_S2_1_exit - transitions: - - target: Terminate1 - Terminate1: - final: true +name: Terminate_001 +x-pssm: + requires: + - terminate + expected_traces: + - S1(entry)::S2.1(entry)::S1.1(entry)::S2.1(exit) + - S1(entry)::S1.1(entry)::S2.1(entry)::S2.1(exit) + stimulus: + - event: Start + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S2_1_entry: + - S2.1(entry) + pssm_S2_1_exit: + - S2.1(exit) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - event: Continue + target: FinalState1 + FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + enter: + - pssm_S2_1_entry + exit: + - pssm_S2_1_exit + transitions: + - target: Terminate1 + Terminate1: + final: true diff --git a/tests/uml/pssm/cases/Terminate/Terminate_002.yaml b/tests/uml/pssm/cases/Terminate/Terminate_002.yaml index 8dcbab60..a7f923f3 100644 --- a/tests/uml/pssm/cases/Terminate/Terminate_002.yaml +++ b/tests/uml/pssm/cases/Terminate/Terminate_002.yaml @@ -1,64 +1,64 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- do_activity_accept -- terminate -expected_traces: -- S1(entry)::S1.1(entry)::S2.1(entry) -- S1(entry)::S1.1(entry)::S1.1(doActivityPartI)::S2.1(entry) -- S1(entry)::S2.1(entry)::S1.1(entry)::S1.1(doActivityPartI) -- S1(entry)::S2.1(entry)::S1.1(entry) -- S1(entry)::S1.1(entry)::S2.1(entry)::S1.1(doActivityPartI) -stimulus: -- event: Start -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_1_exit: - - S1.1(exit) - on_invoke_S1_1: - - S1.1(doActivityPartI) - - accept: Continue - pssm_S2_1_entry: - - S2.1(entry) -statechart: - name: Terminate_002 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - exit: - - pssm_S1_1_exit - transitions: - - event: done.invoke.S1_1 - target: FinalState1 - FinalState1: - final: true - S1_Region2: - states: - S2_1: - initial: true - enter: - - pssm_S2_1_entry - transitions: - - target: Terminate1 - Terminate1: - final: true +name: Terminate_002 +x-pssm: + requires: + - do_activity_accept + - terminate + expected_traces: + - S1(entry)::S1.1(entry)::S2.1(entry) + - S1(entry)::S1.1(entry)::S1.1(doActivityPartI)::S2.1(entry) + - S1(entry)::S2.1(entry)::S1.1(entry)::S1.1(doActivityPartI) + - S1(entry)::S2.1(entry)::S1.1(entry) + - S1(entry)::S1.1(entry)::S2.1(entry)::S1.1(doActivityPartI) + stimulus: + - event: Start + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + on_invoke_S1_1: + - S1.1(doActivityPartI) + - accept: Continue + pssm_S2_1_entry: + - S2.1(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - event: done.invoke.S1_1 + target: FinalState1 + FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + enter: + - pssm_S2_1_entry + transitions: + - target: Terminate1 + Terminate1: + final: true diff --git a/tests/uml/pssm/cases/Terminate/Terminate_003.yaml b/tests/uml/pssm/cases/Terminate/Terminate_003.yaml index b64de068..267a9cfa 100644 --- a/tests/uml/pssm/cases/Terminate/Terminate_003.yaml +++ b/tests/uml/pssm/cases/Terminate/Terminate_003.yaml @@ -1,24 +1,24 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- terminate -expected_traces: -- T2(effect) -stimulus: -- event: Start -behaviors: - pssm_T2_effect: +name: Terminate_003 +x-pssm: + requires: + - terminate + expected_traces: - T2(effect) -statechart: - name: Terminate_003 - states: - wait: - initial: true - transitions: - - event: Start - target: Terminate1 - 'on': - - pssm_T2_effect - S1: - states: {} - Terminate1: - final: true + stimulus: + - event: Start + behaviors: + pssm_T2_effect: + - T2(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: Terminate1 + 'on': + - pssm_T2_effect + S1: + states: {} + Terminate1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_001.yaml b/tests/uml/pssm/cases/Transition/Transition_001.yaml index 4b46a966..2ced2369 100644 --- a/tests/uml/pssm/cases/Transition/Transition_001.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_001.yaml @@ -1,24 +1,24 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T2(effect) -stimulus: -- event: Start -behaviors: - pssm_T2_effect: +name: Transition_001 +x-pssm: + requires: [] + expected_traces: - T2(effect) -statechart: - name: Transition_001 - states: - S1: - initial: true - transitions: - - event: Start - target: S2 - 'on': - - pssm_T2_effect - S2: - transitions: - - target: FinalState1 - FinalState1: - final: true + stimulus: + - event: Start + behaviors: + pssm_T2_effect: + - T2(effect) +states: + S1: + initial: true + transitions: + - event: Start + target: S2 + 'on': + - pssm_T2_effect + S2: + transitions: + - target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_007.yaml b/tests/uml/pssm/cases/Transition/Transition_007.yaml index 781b74c3..5ca3f739 100644 --- a/tests/uml/pssm/cases/Transition/Transition_007.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_007.yaml @@ -1,41 +1,41 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T1(effect)::T2(effect)::T3(effect) -stimulus: -- event: Start -- event: AnotherSignal -- event: Continue -- event: Continue -behaviors: - pssm_T1_effect: - - T1(effect) - pssm_T3_effect: - - T3(effect) - pssm_T2_effect: - - T2(effect) -statechart: - name: Transition_007 - states: - S1: - initial: true - transitions: - - event: AnotherSignal - target: S3 - 'on': - - pssm_T1_effect - - event: Continue - target: S2 - 'on': - - pssm_T3_effect - S3: - transitions: - - event: Continue AnotherSignal - target: S1 - 'on': - - pssm_T2_effect - FinalState1: - final: true - S2: - transitions: - - target: FinalState1 +name: Transition_007 +x-pssm: + requires: [] + expected_traces: + - T1(effect)::T2(effect)::T3(effect) + stimulus: + - event: Start + - event: AnotherSignal + - event: Continue + - event: Continue + behaviors: + pssm_T1_effect: + - T1(effect) + pssm_T3_effect: + - T3(effect) + pssm_T2_effect: + - T2(effect) +states: + S1: + initial: true + transitions: + - event: AnotherSignal + target: S3 + 'on': + - pssm_T1_effect + - event: Continue + target: S2 + 'on': + - pssm_T3_effect + S3: + transitions: + - event: Continue AnotherSignal + target: S1 + 'on': + - pssm_T2_effect + FinalState1: + final: true + S2: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Transition/Transition_010.yaml b/tests/uml/pssm/cases/Transition/Transition_010.yaml index 207e3f9f..3927b6d9 100644 --- a/tests/uml/pssm/cases/Transition/Transition_010.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_010.yaml @@ -1,41 +1,41 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- Waiting(exit)::S1(entry)::IT::IT::S1(exit) -stimulus: -- event: Start -- event: AnotherSignal -- event: AnotherSignal -- event: Continue -behaviors: - pssm_Waiting_exit: - - Waiting(exit) - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_IT_effect: - - IT -statechart: - name: Transition_010 - states: - Waiting: - initial: true - exit: - - pssm_Waiting_exit - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - transitions: - - event: AnotherSignal - 'on': - - pssm_IT_effect - - event: Continue - target: FinalState1 - FinalState1: - final: true +name: Transition_010 +x-pssm: + requires: [] + expected_traces: + - Waiting(exit)::S1(entry)::IT::IT::S1(exit) + stimulus: + - event: Start + - event: AnotherSignal + - event: AnotherSignal + - event: Continue + behaviors: + pssm_Waiting_exit: + - Waiting(exit) + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_IT_effect: + - IT +states: + Waiting: + initial: true + exit: + - pssm_Waiting_exit + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + transitions: + - event: AnotherSignal + 'on': + - pssm_IT_effect + - event: Continue + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_011-A.yaml b/tests/uml/pssm/cases/Transition/Transition_011-A.yaml index 80323068..d2fd6c08 100644 --- a/tests/uml/pssm/cases/Transition/Transition_011-A.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_011-A.yaml @@ -1,56 +1,56 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1.1(entry)::S1.1(exit)::T1.3(effect)::S1.2(entry)::S1(exit) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_T1_3_effect: - - T1.3(effect) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S1_2_entry: - - S1.2(entry) -statechart: - name: Transition_011-A - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - exit: - - pssm_S1_1_exit - transitions: - - event: Pending - target: S1_2 - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - target: S1_FinalState1 - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - - event: Continue - target: S1_2 - internal: true - 'on': - - pssm_T1_3_effect - FinalState1: - final: true +name: Transition_011-A +x-pssm: + requires: [] + expected_traces: + - S1.1(entry)::S1.1(exit)::T1.3(effect)::S1.2(entry)::S1(exit) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T1_3_effect: + - T1.3(effect) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_2_entry: + - S1.2(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - event: Pending + target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + - event: Continue + target: S1_2 + internal: true + 'on': + - pssm_T1_3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_011-B.yaml b/tests/uml/pssm/cases/Transition/Transition_011-B.yaml index d9c15dcb..8c1ed37d 100644 --- a/tests/uml/pssm/cases/Transition/Transition_011-B.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_011-B.yaml @@ -1,47 +1,47 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -expected_traces: -- S1(entry)::S1.1(entry)::T1.3(effect)::S1(exit) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) - pssm_T1_3_effect: - - T1.3(effect) -statechart: - name: Transition_011-B - states: - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - transitions: - - event: Continue - target: S1_FinalState1 - S1_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - wait: - initial: true - transitions: - - event: Start - target: S1 - 'on': - - pssm_T1_3_effect - FinalState1: - final: true +name: Transition_011-B +x-pssm: + requires: + - entry_point + expected_traces: + - S1(entry)::S1.1(entry)::T1.3(effect)::S1(exit) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_T1_3_effect: + - T1.3(effect) +states: + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + transitions: + - event: Continue + target: S1_FinalState1 + S1_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + wait: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T1_3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_011-C.yaml b/tests/uml/pssm/cases/Transition/Transition_011-C.yaml index ba6c867d..7265d6fb 100644 --- a/tests/uml/pssm/cases/Transition/Transition_011-C.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_011-C.yaml @@ -1,55 +1,55 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::S1.1(entry)::S1.1(exit)::S1.2(exit)::T1.3(effect)::S1(exit) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S1_2_entry: - - S1.2(exit) - pssm_T1_3_effect: - - T1.3(effect) -statechart: - name: Transition_011-C - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - exit: - - pssm_S1_1_exit - transitions: - - target: S1_2 - S1_2: - enter: - - pssm_S1_2_entry - transitions: - - event: Continue - target: S1 - 'on': - - pssm_T1_3_effect - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: Transition_011-C +x-pssm: + requires: [] + expected_traces: + - S1(entry)::S1.1(entry)::S1.1(exit)::S1.2(exit)::T1.3(effect)::S1(exit) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S1_2_entry: + - S1.2(exit) + pssm_T1_3_effect: + - T1.3(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - target: S1_2 + S1_2: + enter: + - pssm_S1_2_entry + transitions: + - event: Continue + target: S1 + 'on': + - pssm_T1_3_effect + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_011-D.yaml b/tests/uml/pssm/cases/Transition/Transition_011-D.yaml index fd909150..7d4e60e8 100644 --- a/tests/uml/pssm/cases/Transition/Transition_011-D.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_011-D.yaml @@ -1,68 +1,68 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- exit_point -expected_traces: -- S1.1(entry)::S2.1(entry)::T3(effect)::S1.1(exit)::S2.1(exit)::S1(exit) -- S1.1(entry)::S2.1(entry)::T3(effect)::S2.1(exit)::S1.1(exit)::S1(exit) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_exit: - - S1(exit) - pssm_T3_effect: - - T3(effect) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_1_exit: - - S1.1(exit) - pssm_S2_1_entry: - - S2.1(entry) - pssm_S2_1_exit: - - S2.1(exit) -statechart: - name: Transition_011-D - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - exit: - - pssm_S1_exit - states: - S1_Region1: - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - exit: - - pssm_S1_1_exit - transitions: - - event: Pending - target: Region1_FinalState1 - Region1_FinalState1: - final: true - S1_Region2: - states: - S2_1: - initial: true - enter: - - pssm_S2_1_entry - exit: - - pssm_S2_1_exit - transitions: - - event: Pending - target: Region2_FinalState1 - Region2_FinalState1: - final: true - transitions: - - event: Continue - target: FinalState1 - 'on': - - pssm_T3_effect - FinalState1: - final: true +name: Transition_011-D +x-pssm: + requires: + - exit_point + expected_traces: + - S1.1(entry)::S2.1(entry)::T3(effect)::S1.1(exit)::S2.1(exit)::S1(exit) + - S1.1(entry)::S2.1(entry)::T3(effect)::S2.1(exit)::S1.1(exit)::S1(exit) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_exit: + - S1(exit) + pssm_T3_effect: + - T3(effect) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + pssm_S2_1_entry: + - S2.1(entry) + pssm_S2_1_exit: + - S2.1(exit) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + exit: + - pssm_S1_exit + states: + S1_Region1: + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - event: Pending + target: Region1_FinalState1 + Region1_FinalState1: + final: true + S1_Region2: + states: + S2_1: + initial: true + enter: + - pssm_S2_1_entry + exit: + - pssm_S2_1_exit + transitions: + - event: Pending + target: Region2_FinalState1 + Region2_FinalState1: + final: true + transitions: + - event: Continue + target: FinalState1 + 'on': + - pssm_T3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_011-E.yaml b/tests/uml/pssm/cases/Transition/Transition_011-E.yaml index 15c4a9d0..edc2080d 100644 --- a/tests/uml/pssm/cases/Transition/Transition_011-E.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_011-E.yaml @@ -1,47 +1,47 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -- exit_point -expected_traces: -- S1(entry)::S1.1(entry)::T1.3(effect)::S1.1(exit)::S1(exit) -stimulus: -- event: Start -behaviors: - pssm_T1_3_effect: - - T1.3(effect) - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_1_exit: - - S1.1(exit) -statechart: - name: Transition_011-E - states: - wait: - initial: true - transitions: - - event: Start - target: FinalState1 - 'on': - - pssm_T1_3_effect - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - initial: true - enter: - - pssm_S1_1_entry - exit: - - pssm_S1_1_exit - transitions: - - target: S1_FinalState1 - S1_FinalState1: - final: true - FinalState1: - final: true +name: Transition_011-E +x-pssm: + requires: + - entry_point + - exit_point + expected_traces: + - S1(entry)::S1.1(entry)::T1.3(effect)::S1.1(exit)::S1(exit) + stimulus: + - event: Start + behaviors: + pssm_T1_3_effect: + - T1.3(effect) + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) +states: + wait: + initial: true + transitions: + - event: Start + target: FinalState1 + 'on': + - pssm_T1_3_effect + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + initial: true + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - target: S1_FinalState1 + S1_FinalState1: + final: true + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_015.yaml b/tests/uml/pssm/cases/Transition/Transition_015.yaml index 9ee55f6c..d377db75 100644 --- a/tests/uml/pssm/cases/Transition/Transition_015.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_015.yaml @@ -1,27 +1,27 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::S1(doActivity) -stimulus: -- event: Start -behaviors: - pssm_S1_entry: - - S1(entry) - on_invoke_S1: - - S1(doActivity) -statechart: - name: Transition_015 - states: - waiting: - initial: true - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - transitions: - - event: done.invoke.S1 - target: FinalState1 - FinalState1: - final: true +name: Transition_015 +x-pssm: + requires: [] + expected_traces: + - S1(entry)::S1(doActivity) + stimulus: + - event: Start + behaviors: + pssm_S1_entry: + - S1(entry) + on_invoke_S1: + - S1(doActivity) +states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + transitions: + - event: done.invoke.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_016.yaml b/tests/uml/pssm/cases/Transition/Transition_016.yaml index 4ca94963..bdaa815d 100644 --- a/tests/uml/pssm/cases/Transition/Transition_016.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_016.yaml @@ -1,24 +1,24 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T2(effect) -stimulus: -- event: Start -behaviors: - pssm_T2_effect: +name: Transition_016 +x-pssm: + requires: [] + expected_traces: - T2(effect) -statechart: - name: Transition_016 - states: - waiting: - initial: true - transitions: - - event: Start - target: S1 - 'on': - - pssm_T2_effect - S1: - transitions: - - target: FinalState1 - FinalState1: - final: true + stimulus: + - event: Start + behaviors: + pssm_T2_effect: + - T2(effect) +states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + S1: + transitions: + - target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_017.yaml b/tests/uml/pssm/cases/Transition/Transition_017.yaml index 568905be..566cc6e4 100644 --- a/tests/uml/pssm/cases/Transition/Transition_017.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_017.yaml @@ -1,76 +1,76 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T2(effect)::S1(entry)::T2.2(effect)::T3.2(effect)::S3.1(doActivity)::T3.1.2(effect) -- T2(effect)::S1(entry)::S3.1(doActivity)::T3.1.2(effect)::T2.2(effect)::T3.2(effect) -- T2(effect)::S1(entry)::T3.1.2(effect)::S3.1(doActivity)::T2.2(effect)::T3.2(effect) -- T2(effect)::S1(entry)::T2.2(effect)::T3.1.2(effect)::S3.1(doActivity)::T3.2(effect) -- T2(effect)::S1(entry)::T3.1.2(effect)::T2.2(effect)::S3.1(doActivity)::T3.2(effect) -- T2(effect)::S1(entry)::S3.1(doActivity)::T2.2(effect)::T3.1.2(effect)::T3.2(effect) -- T2(effect)::S1(entry)::T2.2(effect)::S3.1(doActivity)::T3.1.2(effect)::T3.2(effect) -- T2(effect)::S1(entry)::T2.2(effect)::T3.2(effect)::T3.1.2(effect)::S3.1(doActivity) -stimulus: -- event: Start -behaviors: - pssm_T2_effect: - - T2(effect) - pssm_S1_entry: - - S1(entry) - pssm_T2_2_effect: - - T2.2(effect) - on_invoke_S3_1: - - S3.1(doActivity) - pssm_T3_2_effect: - - T3.2(effect) - pssm_T3_1_2_effect: - - T3.1.2(effect) -statechart: - name: Transition_017 - states: - waiting: - initial: true - transitions: - - event: Start - target: S1 - 'on': - - pssm_T2_effect - S1: - parallel: true - enter: - - pssm_S1_entry - states: - S1_Region2: - states: - Region2_FinalState1: - final: true - S2_1: - initial: true - transitions: - - target: Region2_FinalState1 - 'on': - - pssm_T2_2_effect - S1_Region3: - states: - S3_1: - initial: true - states: - S3_1_1: - initial: true - transitions: - - target: S3_1_FinalState1 - 'on': - - pssm_T3_1_2_effect - S3_1_FinalState1: - final: true - transitions: - - event: done.state.S3_1 - target: Region3_FinalState1 - 'on': - - pssm_T3_2_effect - Region3_FinalState1: - final: true - transitions: - - event: done.state.S1 - target: FinalState1 - FinalState1: - final: true +name: Transition_017 +x-pssm: + requires: [] + expected_traces: + - T2(effect)::S1(entry)::T2.2(effect)::T3.2(effect)::S3.1(doActivity)::T3.1.2(effect) + - T2(effect)::S1(entry)::S3.1(doActivity)::T3.1.2(effect)::T2.2(effect)::T3.2(effect) + - T2(effect)::S1(entry)::T3.1.2(effect)::S3.1(doActivity)::T2.2(effect)::T3.2(effect) + - T2(effect)::S1(entry)::T2.2(effect)::T3.1.2(effect)::S3.1(doActivity)::T3.2(effect) + - T2(effect)::S1(entry)::T3.1.2(effect)::T2.2(effect)::S3.1(doActivity)::T3.2(effect) + - T2(effect)::S1(entry)::S3.1(doActivity)::T2.2(effect)::T3.1.2(effect)::T3.2(effect) + - T2(effect)::S1(entry)::T2.2(effect)::S3.1(doActivity)::T3.1.2(effect)::T3.2(effect) + - T2(effect)::S1(entry)::T2.2(effect)::T3.2(effect)::T3.1.2(effect)::S3.1(doActivity) + stimulus: + - event: Start + behaviors: + pssm_T2_effect: + - T2(effect) + pssm_S1_entry: + - S1(entry) + pssm_T2_2_effect: + - T2.2(effect) + on_invoke_S3_1: + - S3.1(doActivity) + pssm_T3_2_effect: + - T3.2(effect) + pssm_T3_1_2_effect: + - T3.1.2(effect) +states: + waiting: + initial: true + transitions: + - event: Start + target: S1 + 'on': + - pssm_T2_effect + S1: + parallel: true + enter: + - pssm_S1_entry + states: + S1_Region2: + states: + Region2_FinalState1: + final: true + S2_1: + initial: true + transitions: + - target: Region2_FinalState1 + 'on': + - pssm_T2_2_effect + S1_Region3: + states: + S3_1: + initial: true + states: + S3_1_1: + initial: true + transitions: + - target: S3_1_FinalState1 + 'on': + - pssm_T3_1_2_effect + S3_1_FinalState1: + final: true + transitions: + - event: done.state.S3_1 + target: Region3_FinalState1 + 'on': + - pssm_T3_2_effect + Region3_FinalState1: + final: true + transitions: + - event: done.state.S1 + target: FinalState1 + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_019.yaml b/tests/uml/pssm/cases/Transition/Transition_019.yaml index 592161e3..1cd7ada0 100644 --- a/tests/uml/pssm/cases/Transition/Transition_019.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_019.yaml @@ -1,71 +1,71 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- join -expected_traces: -- S2.1(exit)::T2.2(effect)::S1.1(exit)::T1.2(effect)::T2.3(effect)::T1.3(effect) -- S1.1(exit)::T1.2(effect)::S2.1(exit)::T2.2(effect)::T1.3(effect)::T2.3(effect) -- S2.1(exit)::S1.1(exit)::T1.2(effect)::T2.2(effect)::T1.3(effect)::T2.3(effect) -- S1.1(exit)::S2.1(exit)::T1.2(effect)::T2.2(effect)::T1.3(effect)::T2.3(effect) -- S2.1(exit)::S1.1(exit)::T2.2(effect)::T1.2(effect)::T2.3(effect)::T1.3(effect) -- S1.1(exit)::S2.1(exit)::T2.2(effect)::T1.2(effect)::T2.3(effect)::T1.3(effect) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_1_exit: - - S1.1(exit) - pssm_T1_2_effect: - - T1.2(effect) - pssm_T1_3_effect: - - T1.3(effect) - pssm_S2_1_exit: - - S2.1(exit) - pssm_T2_2_effect: - - T2.2(effect) - pssm_T2_3_effect: - - T2.3(effect) -statechart: - name: Transition_019 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - parallel: true - states: - S1_Region1: - states: - S1_1: - initial: true - exit: - - pssm_S1_1_exit - transitions: - - event: Continue - target: S1_2 - 'on': - - pssm_T1_2_effect - S1_2: - transitions: - - target: FinalState1 - 'on': - - pssm_T1_3_effect - S1_Region2: - states: - S2_1: - initial: true - exit: - - pssm_S2_1_exit - transitions: - - event: Continue - target: S2_2 - 'on': - - pssm_T2_2_effect - S2_2: - transitions: - - target: FinalState1 - 'on': - - pssm_T2_3_effect - FinalState1: - final: true +name: Transition_019 +x-pssm: + requires: + - join + expected_traces: + - S2.1(exit)::T2.2(effect)::S1.1(exit)::T1.2(effect)::T2.3(effect)::T1.3(effect) + - S1.1(exit)::T1.2(effect)::S2.1(exit)::T2.2(effect)::T1.3(effect)::T2.3(effect) + - S2.1(exit)::S1.1(exit)::T1.2(effect)::T2.2(effect)::T1.3(effect)::T2.3(effect) + - S1.1(exit)::S2.1(exit)::T1.2(effect)::T2.2(effect)::T1.3(effect)::T2.3(effect) + - S2.1(exit)::S1.1(exit)::T2.2(effect)::T1.2(effect)::T2.3(effect)::T1.3(effect) + - S1.1(exit)::S2.1(exit)::T2.2(effect)::T1.2(effect)::T2.3(effect)::T1.3(effect) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_2_effect: + - T1.2(effect) + pssm_T1_3_effect: + - T1.3(effect) + pssm_S2_1_exit: + - S2.1(exit) + pssm_T2_2_effect: + - T2.2(effect) + pssm_T2_3_effect: + - T2.3(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + parallel: true + states: + S1_Region1: + states: + S1_1: + initial: true + exit: + - pssm_S1_1_exit + transitions: + - event: Continue + target: S1_2 + 'on': + - pssm_T1_2_effect + S1_2: + transitions: + - target: FinalState1 + 'on': + - pssm_T1_3_effect + S1_Region2: + states: + S2_1: + initial: true + exit: + - pssm_S2_1_exit + transitions: + - event: Continue + target: S2_2 + 'on': + - pssm_T2_2_effect + S2_2: + transitions: + - target: FinalState1 + 'on': + - pssm_T2_3_effect + FinalState1: + final: true diff --git a/tests/uml/pssm/cases/Transition/Transition_020.yaml b/tests/uml/pssm/cases/Transition/Transition_020.yaml index 5e7152e5..25affb45 100644 --- a/tests/uml/pssm/cases/Transition/Transition_020.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_020.yaml @@ -1,38 +1,38 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- S1(entry)::T4(effect) -stimulus: -- event: Start -- event: Continue -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_T3_effect: - - T3(effect) - pssm_T4_effect: - - T4(effect) -statechart: - name: Transition_020 - states: - wait: - initial: true - transitions: - - event: Start - target: S1 - S1: - enter: - - pssm_S1_entry - transitions: - - event: Continue - target: end - 'on': - - pssm_T3_effect - - target: end - 'on': - - pssm_T4_effect - FinalState1: - final: true - end: - transitions: - - target: FinalState1 +name: Transition_020 +x-pssm: + requires: [] + expected_traces: + - S1(entry)::T4(effect) + stimulus: + - event: Start + - event: Continue + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_T3_effect: + - T3(effect) + pssm_T4_effect: + - T4(effect) +states: + wait: + initial: true + transitions: + - event: Start + target: S1 + S1: + enter: + - pssm_S1_entry + transitions: + - event: Continue + target: end + 'on': + - pssm_T3_effect + - target: end + 'on': + - pssm_T4_effect + FinalState1: + final: true + end: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/cases/Transition/Transition_022.yaml b/tests/uml/pssm/cases/Transition/Transition_022.yaml index 13b197c3..c8292ab1 100644 --- a/tests/uml/pssm/cases/Transition/Transition_022.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_022.yaml @@ -1,32 +1,32 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: [] -expected_traces: -- T3::T3::T3::T3::T3 -stimulus: -- event: Start -behaviors: - pssm_T3_effect: - - T3 -statechart: - name: Transition_022 - datamodel: - count: '0' - states: - Incrementing: - transitions: - - target: FS1 - cond: count == 5 - - target: Incrementing - cond: count < 5 - 'on': - - assign: - location: count - expr: count + 1 - - pssm_T3_effect - FS1: - final: true - Waiting: - initial: true - transitions: - - event: Start - target: Incrementing +name: Transition_022 +x-pssm: + requires: [] + expected_traces: + - T3::T3::T3::T3::T3 + stimulus: + - event: Start + behaviors: + pssm_T3_effect: + - T3 +datamodel: + count: '0' +states: + Incrementing: + transitions: + - target: FS1 + cond: count == 5 + - target: Incrementing + cond: count < 5 + 'on': + - assign: + location: count + expr: count + 1 + - pssm_T3_effect + FS1: + final: true + Waiting: + initial: true + transitions: + - event: Start + target: Incrementing diff --git a/tests/uml/pssm/cases/Transition/Transition_023.yaml b/tests/uml/pssm/cases/Transition/Transition_023.yaml index e0b0bd73..ec785144 100644 --- a/tests/uml/pssm/cases/Transition/Transition_023.yaml +++ b/tests/uml/pssm/cases/Transition/Transition_023.yaml @@ -1,123 +1,123 @@ # Generated by tests/uml/pssm/convert.py from the OMG PSSM 1.0 test suite (ptc/18-11-06, https://www.omg.org/spec/PSSM/20181101/PSSM_TestSuite.xmi). Do not edit. -requires: -- entry_point -- exit_point -- junction -expected_traces: -- S1(entry)::S1.1(entry)::S1.1(exit)::S1(exit)::T1.3(effect)::S2(entry)::S2.1(entry)::S2.3(entry)::T2.1(effect)[in=5]::S2(exit)::T2.2(effect)[in=5] -- S1(entry)::S1.1(entry)::S1.1(exit)::S1(exit)::T1.3(effect)::S2(entry)::S2.3(entry)::S2.1(entry)::T2.1(effect)[in=5]::S2(exit)::T2.2(effect)[in=5] -stimulus: -- event: Start -- event: Continue -- event: IntegerData - kwargs: - value: 20 -- event: IntegerData - kwargs: - value: 5 -behaviors: - pssm_S1_entry: - - S1(entry) - pssm_S1_exit: - - S1(exit) - pssm_S1_1_entry: - - S1.1(entry) - pssm_S1_1_exit: - - S1.1(exit) - pssm_T1_3_effect: - - T1.3(effect) - pssm_T1_1_effect: - - T1.1(effect) - pssm_S2_entry: - - S2(entry) - pssm_S2_exit: - - S2(exit) - pssm_S2_2_entry: - - S2.2(entry) - pssm_S2_1_entry: - - S2.1(entry) - pssm_T2_1_effect: - - T2.1(effect)[in={value}] - pssm_T2_3_effect: - - T2.3(effect)[in={value}] - pssm_T2_2_effect: - - T2.2(effect)[in={value}] - pssm_S2_3_entry: - - S2.3(entry) -statechart: - name: Transition_023 - states: - wait: +name: Transition_023 +x-pssm: + requires: + - entry_point + - exit_point + - junction + expected_traces: + - S1(entry)::S1.1(entry)::S1.1(exit)::S1(exit)::T1.3(effect)::S2(entry)::S2.1(entry)::S2.3(entry)::T2.1(effect)[in=5]::S2(exit)::T2.2(effect)[in=5] + - S1(entry)::S1.1(entry)::S1.1(exit)::S1(exit)::T1.3(effect)::S2(entry)::S2.3(entry)::S2.1(entry)::T2.1(effect)[in=5]::S2(exit)::T2.2(effect)[in=5] + stimulus: + - event: Start + - event: Continue + - event: IntegerData + kwargs: + value: 20 + - event: IntegerData + kwargs: + value: 5 + behaviors: + pssm_S1_entry: + - S1(entry) + pssm_S1_exit: + - S1(exit) + pssm_S1_1_entry: + - S1.1(entry) + pssm_S1_1_exit: + - S1.1(exit) + pssm_T1_3_effect: + - T1.3(effect) + pssm_T1_1_effect: + - T1.1(effect) + pssm_S2_entry: + - S2(entry) + pssm_S2_exit: + - S2(exit) + pssm_S2_2_entry: + - S2.2(entry) + pssm_S2_1_entry: + - S2.1(entry) + pssm_T2_1_effect: + - T2.1(effect)[in={value}] + pssm_T2_3_effect: + - T2.3(effect)[in={value}] + pssm_T2_2_effect: + - T2.2(effect)[in={value}] + pssm_S2_3_entry: + - S2.3(entry) +states: + wait: + initial: true + transitions: + - event: Start + target: S1_1 + S1: + enter: + - pssm_S1_entry + exit: + - pssm_S1_exit + states: + S1_1: + enter: + - pssm_S1_1_entry + exit: + - pssm_S1_1_exit + transitions: + - target: S1 + cond: 'False' + - event: Continue + target: S2_3 S2_1 + 'on': + - pssm_T1_3_effect + transitions: + - target: S1_1 initial: true - transitions: - - event: Start - target: S1_1 - S1: - enter: - - pssm_S1_entry - exit: - - pssm_S1_exit - states: - S1_1: - enter: - - pssm_S1_1_entry - exit: - - pssm_S1_1_exit - transitions: - - target: S1 - cond: 'False' - - event: Continue - target: S2_3 S2_1 - 'on': - - pssm_T1_3_effect - transitions: - - target: S1_1 - initial: true - 'on': - - pssm_T1_1_effect - FinalState1: - final: true - S2: - parallel: true - enter: - - pssm_S2_entry - exit: - - pssm_S2_exit - states: - S2_Region1: - states: - S2_2: - enter: - - pssm_S2_2_entry - transitions: - - target: Region1_FinalState1 - Region1_FinalState1: - final: true - S2_1: - enter: - - pssm_S2_1_entry - transitions: - - event: IntegerData - target: S2_2 - cond: value==10 - 'on': - - pssm_T2_1_effect - - pssm_T2_3_effect - - event: IntegerData - target: end - cond: value == 5 - 'on': - - pssm_T2_1_effect - - pssm_T2_2_effect - S2_Region2: - states: - S2_3: - enter: - - pssm_S2_3_entry - transitions: - - target: Region2_FinalState1 - Region2_FinalState1: - final: true - end: - transitions: - - target: FinalState1 + 'on': + - pssm_T1_1_effect + FinalState1: + final: true + S2: + parallel: true + enter: + - pssm_S2_entry + exit: + - pssm_S2_exit + states: + S2_Region1: + states: + S2_2: + enter: + - pssm_S2_2_entry + transitions: + - target: Region1_FinalState1 + Region1_FinalState1: + final: true + S2_1: + enter: + - pssm_S2_1_entry + transitions: + - event: IntegerData + target: S2_2 + cond: value==10 + 'on': + - pssm_T2_1_effect + - pssm_T2_3_effect + - event: IntegerData + target: end + cond: value == 5 + 'on': + - pssm_T2_1_effect + - pssm_T2_2_effect + S2_Region2: + states: + S2_3: + enter: + - pssm_S2_3_entry + transitions: + - target: Region2_FinalState1 + Region2_FinalState1: + final: true + end: + transitions: + - target: FinalState1 diff --git a/tests/uml/pssm/convert.py b/tests/uml/pssm/convert.py index 89032e1f..9d680868 100644 --- a/tests/uml/pssm/convert.py +++ b/tests/uml/pssm/convert.py @@ -35,6 +35,8 @@ HERE = Path(__file__).parent OVERLAYS_DIR = HERE / "overlays" +PSSM_KEY = "x-pssm" +"""Extension key that carries the test next to the statechart in each case document.""" _XMI = "{http://www.omg.org/spec/XMI/20131001}" _PASS_THROUGH = {"junction", "choice", "entryPoint", "exitPoint", "join"} @@ -1208,13 +1210,13 @@ def convert(self, test_id: str, package: ET.Element, overlay: dict) -> dict: builder.requires.add("call_event") if test_id not in self.oracle: raise ConversionError(f"{test_id}: no expected traces") - return { + test = { "requires": sorted(builder.requires), "expected_traces": self.oracle[test_id], "stimulus": stimulus, "behaviors": builder.behaviors, - "statechart": statechart, } + return {"name": statechart.pop("name"), PSSM_KEY: test, **statechart} def canonical_states(states: dict) -> dict: diff --git a/tests/uml/pssm/test_convert.py b/tests/uml/pssm/test_convert.py index d25b9287..7356cc1b 100644 --- a/tests/uml/pssm/test_convert.py +++ b/tests/uml/pssm/test_convert.py @@ -178,14 +178,17 @@ def test_discovers_tests_and_reads_the_oracle_from_compiled_activities(): def test_converts_a_case(): case = convert_demo() - assert case["requires"] == [] - assert case["stimulus"] == [{"event": "Start"}, {"event": "Data", "kwargs": {"value": 7}}] - assert case["behaviors"] == { - "pssm_S1_entry": ["S1(entry)"], - "pssm_T2_effect": ["T2(effect)[in={value}]"], - } - assert case["statechart"] == { + assert case == { "name": "Demo_001", + c.PSSM_KEY: { + "requires": [], + "expected_traces": ["S1(entry)"], + "stimulus": [{"event": "Start"}, {"event": "Data", "kwargs": {"value": 7}}], + "behaviors": { + "pssm_S1_entry": ["S1(entry)"], + "pssm_T2_effect": ["T2(effect)[in={value}]"], + }, + }, "datamodel": {"count": "0"}, "states": { "wait": {"initial": True, "transitions": [{"event": "Start", "target": "S1"}]}, @@ -214,15 +217,20 @@ def test_converts_a_case(): } +def test_case_document_starts_with_its_name_and_test(): + assert list(convert_demo()) == ["name", c.PSSM_KEY, "datamodel", "states"] + + def test_converted_case_runs_on_the_harness(): case = yaml.safe_load(c.dump_case(convert_demo())) - recorder = TraceRecorder(case["behaviors"], is_async=False) + test = case[c.PSSM_KEY] + recorder = TraceRecorder(test["behaviors"], is_async=False) sm = build_machine(case, recorder) - for item in case["stimulus"]: + for item in test["stimulus"]: sm.send(item["event"], **item.get("kwargs", {})) - assert "::".join(recorder.trace) in case["expected_traces"] + assert "::".join(recorder.trace) in test["expected_traces"] def test_dumped_case_starts_with_the_generated_header(): @@ -246,9 +254,9 @@ def test_overlay_replaces_a_behavior(): case = convert_demo(overlay) - effect = case["statechart"]["states"]["S1"]["transitions"][0]["on"] + effect = case["states"]["S1"]["transitions"][0]["on"] assert effect == [{"assign": {"location": "count", "expr": "count + 1"}}, "pssm_T2_effect"] - assert case["behaviors"]["pssm_T2_effect"] == ["T2"] + assert case[c.PSSM_KEY]["behaviors"]["pssm_T2_effect"] == ["T2"] def test_unused_overlay_entry_fails_the_conversion(): diff --git a/tests/uml/pssm/test_pssm_cases.py b/tests/uml/pssm/test_pssm_cases.py index bc6ea3ed..ca884023 100644 --- a/tests/uml/pssm/test_pssm_cases.py +++ b/tests/uml/pssm/test_pssm_cases.py @@ -1,8 +1,9 @@ """Run every case generated from the OMG PSSM 1.0 test suite, on both engines. -Each case is a native YAML document loaded untrusted through ``statemachine.io.load``. The -harness listener provides the callbacks the document references and records the trace tokens -they emit; the joined trace must equal one of the case's ``expected_traces``. +Each case is a native YAML statechart loaded untrusted through ``statemachine.io.load``; its +``x-pssm`` extension key holds the test. The harness listener provides the callbacks the +document references and records the trace tokens they emit; the joined trace must equal one +of the case's ``expected_traces``. """ import asyncio @@ -21,6 +22,7 @@ from .conftest import LOWERED from .conftest import XFAIL_ASYNC from .conftest import XFAIL_SYNC +from .convert import PSSM_KEY SETTLE_TIMEOUT_S = 5.0 MAX_TRACE_TOKENS = 500 @@ -145,7 +147,7 @@ def build_machine(case: dict, recorder: TraceRecorder): library drops an error raised while processing a doActivity's completion when that same step leaves the doActivity's state, and it records ``error.execution`` sends. """ - cls = load(json.dumps(case["statechart"]), format="json", trusted=False, validate=True) + cls = load(json.dumps(case), format="json", trusted=False, validate=True) cls.catch_errors_as_events = False original_send = cls.send @@ -174,7 +176,7 @@ async def _recording(result, recorder: TraceRecorder): def assert_trace(case: dict, recorder: TraceRecorder): assert not recorder.errors, recorder.errors trace = "::".join(recorder.trace) - assert trace in case["expected_traces"], f"trace {trace!r} not expected" + assert trace in case[PSSM_KEY]["expected_traces"], f"trace {trace!r} not expected" def _stimulus_args(item: dict) -> "tuple[str, dict]": @@ -199,7 +201,7 @@ def trace_result(item: dict, result, recorder: TraceRecorder) -> None: def run_sync(case: dict, recorder: TraceRecorder): sm = build_machine(case, recorder) settle_sync(sm, recorder) - for item in case["stimulus"]: + for item in case[PSSM_KEY]["stimulus"]: if append_tester_trace(item, recorder): continue name, kwargs = _stimulus_args(item) @@ -211,7 +213,7 @@ async def run_async(case: dict, recorder: TraceRecorder): sm = build_machine(case, recorder) await sm.activate_initial_state() await settle_async(sm, recorder) - for item in case["stimulus"]: + for item in case[PSSM_KEY]["stimulus"]: if append_tester_trace(item, recorder): continue name, kwargs = _stimulus_args(item) @@ -229,12 +231,12 @@ def check_sync(case: dict, recorder: TraceRecorder): def test_pssm_case_sync(pssm_case: Path): case = load_case(pssm_case) - check_sync(case, TraceRecorder(case["behaviors"], is_async=False)) + check_sync(case, TraceRecorder(case[PSSM_KEY]["behaviors"], is_async=False)) async def test_pssm_case_async(pssm_case: Path): case = load_case(pssm_case) - recorder = TraceRecorder(case["behaviors"], is_async=True) + recorder = TraceRecorder(case[PSSM_KEY]["behaviors"], is_async=True) try: await run_async(case, recorder) finally: @@ -251,31 +253,33 @@ def test_every_case_needing_a_construct_is_classified(xfail): for reasons, prefix in ((xfail, "requires"), (LOWERED, "lowered")): for case_id, reason in reasons.items(): codes = set(re.findall(rf"{prefix}:(\w+)", reason)) - assert codes == set(cases[case_id]["requires"]), case_id - assert {cid for cid, case in cases.items() if case["requires"]} <= set(xfail) | set(LOWERED) + assert codes == set(cases[case_id][PSSM_KEY]["requires"]), case_id + assert {cid for cid, case in cases.items() if case[PSSM_KEY]["requires"]} <= set(xfail) | set( + LOWERED + ) ERRING_CASE = { - "expected_traces": ["S1(do)"], - "stimulus": [], - "behaviors": {"on_invoke_S1": ["S1(do)"]}, - "statechart": { - "name": "erring", - "states": { - "S1": { - "initial": True, - "transitions": [ - {"event": "done.invoke.S1", "target": "S2", "cond": "undefined_name == 1"} - ], - }, - "S2": {}, + "name": "erring", + PSSM_KEY: { + "expected_traces": ["S1(do)"], + "stimulus": [], + "behaviors": {"on_invoke_S1": ["S1(do)"]}, + }, + "states": { + "S1": { + "initial": True, + "transitions": [ + {"event": "done.invoke.S1", "target": "S2", "cond": "undefined_name == 1"} + ], }, + "S2": {}, }, } def test_error_after_a_do_activity_fails_the_sync_case(): - recorder = TraceRecorder(ERRING_CASE["behaviors"], is_async=False) + recorder = TraceRecorder(ERRING_CASE[PSSM_KEY]["behaviors"], is_async=False) # Whichever thread processes the completion, the error surfaces. with pytest.raises((NameError, AssertionError), match="undefined_name"): @@ -283,7 +287,7 @@ def test_error_after_a_do_activity_fails_the_sync_case(): async def test_error_after_a_do_activity_fails_the_async_case(): - recorder = TraceRecorder(ERRING_CASE["behaviors"], is_async=True) + recorder = TraceRecorder(ERRING_CASE[PSSM_KEY]["behaviors"], is_async=True) await run_async(ERRING_CASE, recorder) @@ -292,30 +296,30 @@ async def test_error_after_a_do_activity_fails_the_async_case(): ERRING_EXIT_CASE = { - "expected_traces": ["S1(do)"], - "stimulus": [], - "behaviors": {"on_invoke_S1": ["S1(do)"]}, - "statechart": { - "name": "erring_exit", - "states": { - "S1": { - "initial": True, - "transitions": [ - { - "event": "done.invoke.S1", - "target": "S2", - "on": [{"assign": {"location": "x", "expr": "undefined_name + 1"}}], - } - ], - }, - "S2": {}, + "name": "erring_exit", + PSSM_KEY: { + "expected_traces": ["S1(do)"], + "stimulus": [], + "behaviors": {"on_invoke_S1": ["S1(do)"]}, + }, + "states": { + "S1": { + "initial": True, + "transitions": [ + { + "event": "done.invoke.S1", + "target": "S2", + "on": [{"assign": {"location": "x", "expr": "undefined_name + 1"}}], + } + ], }, + "S2": {}, }, } async def test_error_leaving_a_do_activity_state_fails_the_async_case(): - recorder = TraceRecorder(ERRING_EXIT_CASE["behaviors"], is_async=True) + recorder = TraceRecorder(ERRING_EXIT_CASE[PSSM_KEY]["behaviors"], is_async=True) await run_async(ERRING_EXIT_CASE, recorder) @@ -324,7 +328,7 @@ async def test_error_leaving_a_do_activity_state_fails_the_async_case(): def test_error_leaving_a_do_activity_state_fails_the_sync_case(): - recorder = TraceRecorder(ERRING_EXIT_CASE["behaviors"], is_async=False) + recorder = TraceRecorder(ERRING_EXIT_CASE[PSSM_KEY]["behaviors"], is_async=False) with pytest.raises((NameError, AssertionError), match="undefined_name"): check_sync(ERRING_EXIT_CASE, recorder)