Skip to content

Commit a629d74

Browse files
committed
Add test that DelegateParameter correctly can see source param's validator
1 parent aa2d389 commit a629d74

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/qcodes/parameters/delegate_parameter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,4 +347,4 @@ def validators(self) -> tuple[Validator, ...]:
347347
self.source.validators if self.source is not None else ()
348348
)
349349

350-
return source_validators + tuple(self._vals)
350+
return tuple(self._vals) + source_validators

tests/parameter/test_delegate_parameter.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,26 @@ def test_validator_delegates_as_expected() -> None:
640640
assert delegate_param.vals == some_validator
641641

642642

643+
def test_validator_delegates_and_source() -> None:
644+
source_param = Parameter("source", set_cmd=None, get_cmd=None)
645+
delegate_param = DelegateParameter("delegate", source=source_param)
646+
some_validator = vals.Numbers(-10, 10)
647+
some_other_validator = vals.Numbers(-5, 5)
648+
source_param.vals = some_validator
649+
delegate_param.vals = some_other_validator
650+
delegate_param.validate(1)
651+
with pytest.raises(ValueError):
652+
delegate_param.validate(6)
653+
assert delegate_param.validators == (some_other_validator, some_validator)
654+
assert delegate_param.vals == some_other_validator
655+
656+
assert delegate_param.source is not None
657+
delegate_param.source.vals = None
658+
659+
assert delegate_param.validators == (some_other_validator,)
660+
assert delegate_param.vals == some_other_validator
661+
662+
643663
def test_value_validation_with_offset_and_scale() -> None:
644664
source_param = Parameter(
645665
"source", set_cmd=None, get_cmd=None, vals=vals.Numbers(-5, 5)

0 commit comments

Comments
 (0)