Skip to content

Commit

Permalink
Merge branch 'main' into 117_45_extend_asyncstatus_wrap
Browse files Browse the repository at this point in the history
  • Loading branch information
coretl authored May 17, 2024
2 parents 2a12be3 + 4c4da2c commit 16f77b0
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 6 deletions.
39 changes: 33 additions & 6 deletions src/ophyd_async/core/signal.py
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,19 @@ def soft_signal_r_and_setter(
return (signal, backend.set_value)


def _generate_assert_error_msg(
name: str, expected_result: str, actuall_result: str
) -> str:
WARNING = "\033[93m"
FAIL = "\033[91m"
ENDC = "\033[0m"
return (
f"Expected {WARNING}{name}{ENDC} to produce"
+ f"\n{FAIL}{actuall_result}{ENDC}"
+ f"\nbut actually got \n{FAIL}{expected_result}{ENDC}"
)


async def assert_value(signal: SignalR[T], value: Any) -> None:
"""Assert a signal's value and compare it an expected signal.
Expand All @@ -295,11 +308,14 @@ async def assert_value(signal: SignalR[T], value: Any) -> None:
await assert_value(signal, value)
"""
assert await signal.get_value() == value
actual_value = await signal.get_value()
assert actual_value == value, _generate_assert_error_msg(
signal.name, value, actual_value
)


async def assert_reading(
readable: AsyncReadable, reading: Mapping[str, Reading]
readable: AsyncReadable, expected_reading: Mapping[str, Reading]
) -> None:
"""Assert readings from readable.
Expand All @@ -317,7 +333,10 @@ async def assert_reading(
await assert_reading(readable, reading)
"""
assert await readable.read() == reading
actual_reading = await readable.read()
assert expected_reading == actual_reading, _generate_assert_error_msg(
readable.name, expected_reading, actual_reading
)


async def assert_configuration(
Expand All @@ -340,7 +359,10 @@ async def assert_configuration(
await assert_configuration(configurable configuration)
"""
assert await configurable.read_configuration() == configuration
actual_configurable = await configurable.read_configuration()
assert configuration == actual_configurable, _generate_assert_error_msg(
configurable.name, configuration, actual_configurable
)


def assert_emitted(docs: Mapping[str, list[dict]], **numbers: int):
Expand All @@ -360,8 +382,13 @@ def assert_emitted(docs: Mapping[str, list[dict]], **numbers: int):
assert_emitted(docs, start=1, descriptor=1,
resource=1, datum=1, event=1, stop=1)
"""
assert list(docs) == list(numbers)
assert {name: len(d) for name, d in docs.items()} == numbers
assert list(docs) == list(numbers), _generate_assert_error_msg(
"documents", list(numbers), list(docs)
)
actual_numbers = {name: len(d) for name, d in docs.items()}
assert actual_numbers == numbers, _generate_assert_error_msg(
"emitted", numbers, actual_numbers
)


async def observe_value(
Expand Down
9 changes: 9 additions & 0 deletions tests/core/test_signal.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,15 @@ async def test_assert_reaading(mock_signal: SignalRW):
await assert_reading(mock_signal, dummy_reading)


async def test_failed_assert_reaading(mock_signal: SignalRW):
set_mock_value(mock_signal, 888)
dummy_reading = {
"mock_signal": Reading({"alarm_severity": 0, "timestamp": ANY, "value": 88})
}
with pytest.raises(AssertionError):
await assert_reading(mock_signal, dummy_reading)


class DummyReadable(StandardReadable):
"""A demo Readable to produce read and config signal"""

Expand Down

0 comments on commit 16f77b0

Please sign in to comment.