Skip to content

Commit 8154a2d

Browse files
committed
Add tests with chained delegates
1 parent 7ed6be5 commit 8154a2d

File tree

2 files changed

+73
-2
lines changed

2 files changed

+73
-2
lines changed

tests/dataset/measurement/test_measurement_context_manager.py

+24-2
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ def test_register_custom_parameter(DAC) -> None:
207207
)
208208

209209

210-
def test_register_delegate_parameters():
210+
def test_register_delegate_parameters() -> None:
211211
x_param = Parameter("x", set_cmd=None, get_cmd=None)
212212

213213
complex_param = Parameter(
@@ -224,7 +224,7 @@ def test_register_delegate_parameters():
224224
assert meas.parameters["x"].type == "numeric"
225225

226226

227-
def test_register_delegate_parameters_with_late_source():
227+
def test_register_delegate_parameters_with_late_source() -> None:
228228
x_param = Parameter("x", set_cmd=None, get_cmd=None)
229229

230230
complex_param = Parameter(
@@ -244,6 +244,28 @@ def test_register_delegate_parameters_with_late_source():
244244
assert meas.parameters["x"].type == "numeric"
245245

246246

247+
def test_register_delegate_parameters_with_late_source_chain():
248+
x_param = Parameter("x", set_cmd=None, get_cmd=None)
249+
250+
complex_param = Parameter(
251+
"complex_param", get_cmd=None, set_cmd=None, vals=ComplexNumbers()
252+
)
253+
delegate_inner = DelegateParameter("delegate_inner", source=None)
254+
delegate_outer = DelegateParameter("delegate_outer", source=None)
255+
256+
meas = Measurement()
257+
258+
meas.register_parameter(x_param)
259+
260+
delegate_outer.source = delegate_inner
261+
delegate_inner.source = complex_param
262+
263+
meas.register_parameter(delegate_outer, setpoints=(x_param,))
264+
assert len(meas.parameters) == 2
265+
assert meas.parameters["delegate_outer"].type == "complex"
266+
assert meas.parameters["x"].type == "numeric"
267+
268+
247269
def test_unregister_parameter(DAC, DMM) -> None:
248270
"""
249271
Test the unregistering of parameters.

tests/parameter/test_delegate_parameter.py

+49
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,55 @@ def test_validator_delegates_and_source() -> None:
660660
assert delegate_param.vals == some_other_validator
661661

662662

663+
def test_validator_delegates_and_source_chain() -> None:
664+
source_param = Parameter("source", set_cmd=None, get_cmd=None)
665+
delegate_inner = DelegateParameter("delegate_inner", source=source_param)
666+
delegate_outer = DelegateParameter("delegate_outer", source=delegate_inner)
667+
source_validator = vals.Numbers(-10, 10)
668+
delegate_inner_validator = vals.Numbers(-7, 7)
669+
delegate_outer_validator = vals.Numbers(-5, 5)
670+
671+
source_param.vals = source_validator
672+
delegate_inner.vals = delegate_inner_validator
673+
delegate_outer.vals = delegate_outer_validator
674+
675+
delegate_outer.validate(1)
676+
with pytest.raises(ValueError):
677+
delegate_outer.validate(6)
678+
679+
delegate_inner.validate(6)
680+
source_param.validate(6)
681+
682+
assert delegate_outer.validators == (
683+
delegate_outer_validator,
684+
delegate_inner_validator,
685+
source_validator,
686+
)
687+
assert delegate_outer.vals == delegate_outer_validator
688+
689+
assert delegate_inner.validators == (
690+
delegate_inner_validator,
691+
source_validator,
692+
)
693+
assert delegate_inner.vals == delegate_inner_validator
694+
695+
assert delegate_outer.source is not None
696+
delegate_outer.source.vals = None
697+
698+
assert delegate_outer.validators == (
699+
delegate_outer_validator,
700+
source_validator,
701+
)
702+
assert delegate_outer.vals == delegate_outer_validator
703+
704+
assert isinstance(delegate_outer.source, DelegateParameter)
705+
assert delegate_outer.source.source is not None
706+
delegate_outer.source.source.vals = None
707+
708+
assert delegate_outer.validators == (delegate_outer_validator,)
709+
assert delegate_outer.vals == delegate_outer_validator
710+
711+
663712
def test_value_validation_with_offset_and_scale() -> None:
664713
source_param = Parameter(
665714
"source", set_cmd=None, get_cmd=None, vals=vals.Numbers(-5, 5)

0 commit comments

Comments
 (0)