48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
"""The run table's `d=` argument: which shape it accepts, and why.
|
|
|
|
`Run_Table_DataFrame._get_adjustable_values` looks names up as
|
|
``"bernina." + name`` in a flat mapping. `Daq` passed it the whole
|
|
`get_status()` result instead, so nothing ever matched and it silently fell
|
|
back to reading every adjustable over Channel Access - a full CA fan-out at
|
|
every scan start, while apparently being handed the values.
|
|
"""
|
|
|
|
import pytest
|
|
|
|
runtable = pytest.importorskip("eco.utilities.runtable")
|
|
|
|
|
|
def test_flat_mapping_is_passed_through():
|
|
d = {"bernina.att.transmission": 0.5}
|
|
assert runtable.Run_Table_DataFrame._status_values(d) == d
|
|
|
|
|
|
def test_get_status_shape_is_unwrapped():
|
|
"""The shape Daq was passing."""
|
|
d = {
|
|
"status": {"bernina.att.transmission": 0.5},
|
|
"status_channels": {"bernina.att.transmission": "PV:X"},
|
|
"status_times": {},
|
|
"selections": {},
|
|
}
|
|
assert runtable.Run_Table_DataFrame._status_values(d) == {
|
|
"bernina.att.transmission": 0.5
|
|
}
|
|
|
|
|
|
def test_an_older_settings_block_is_merged_in():
|
|
d = {"status": {"a": 1}, "settings": {"b": 2}}
|
|
assert runtable.Run_Table_DataFrame._status_values(d) == {"a": 1, "b": 2}
|
|
|
|
|
|
def test_empty_and_none_are_empty():
|
|
assert runtable.Run_Table_DataFrame._status_values({}) == {}
|
|
assert runtable.Run_Table_DataFrame._status_values(None) == {}
|
|
|
|
|
|
def test_a_status_key_that_is_not_a_mapping_is_left_alone():
|
|
"""A channel literally called "status" must not be mistaken for the
|
|
wrapper."""
|
|
d = {"status": 3, "bernina.x": 1}
|
|
assert runtable.Run_Table_DataFrame._status_values(d) == d
|