Verify that the actual event order matches the expected event order, accounting for sets in the expected order. Args: actual_event_order: the actual events recorded in the State. exp_event_order: the expected events recorded in the State, where some entries may be sets of events
(
actual_event_order: list[str], exp_event_order: Sequence[str | set[str]]
)
| 79 | |
| 80 | |
| 81 | def assert_event_order( |
| 82 | actual_event_order: list[str], exp_event_order: Sequence[str | set[str]] |
| 83 | ) -> None: |
| 84 | """Verify that the actual event order matches the expected event order, accounting for sets in the expected order. |
| 85 | |
| 86 | Args: |
| 87 | actual_event_order: the actual events recorded in the State. |
| 88 | exp_event_order: the expected events recorded in the State, where some entries may be sets of events that can occur in any order. |
| 89 | |
| 90 | Raises: |
| 91 | AssertionError: if the actual event order does not match the expected event order. |
| 92 | """ |
| 93 | actual_idx = 0 |
| 94 | for expected in exp_event_order: |
| 95 | if isinstance(expected, str): |
| 96 | assert actual_event_order[actual_idx] == expected, ( |
| 97 | f"Expected event '{expected}' at position {actual_idx}, but got '{actual_event_order[actual_idx]}'." |
| 98 | ) |
| 99 | actual_idx += 1 |
| 100 | else: # expected is a set of events that can occur in any order |
| 101 | expected_events = set(expected) |
| 102 | actual_events = set( |
| 103 | actual_event_order[actual_idx : actual_idx + len(expected_events)] |
| 104 | ) |
| 105 | assert actual_events == expected_events, ( |
| 106 | f"Expected events {expected_events} at positions {actual_idx} to {actual_idx + len(expected_events) - 1}, but got {actual_events}." |
| 107 | ) |
| 108 | actual_idx += len(expected_events) |
| 109 | assert actual_idx == len(actual_event_order), ( |
| 110 | f"Expected {actual_idx} events, but got {len(actual_event_order)}: {actual_event_order[actual_idx:]} remain." |
| 111 | ) |
| 112 | |
| 113 | |
| 114 | def poll_assert_event_order( |
no outgoing calls
no test coverage detected