def METHOD_NAME(self, test_object):
    """Test effect of update_value and set_value"""
    startval = test_object.get_value()
    test_object.update_value(startval)
    assert (
        test_object._nominal_value == startval
    ), f"Updating value to {startval} does not set _nominal_value"
    # Must be set to None so the next command causes a change
    test_object._nominal_value = None
    test_object.update_value(startval)
    assert (
        test_object._nominal_value == startval
    ), "update_value(%s) leaves _nominal_value as %s" % (
        startval,
        test_object._nominal_value,
    )
    if test_object.read_only:
        # test that there is an exception as read only
        with pytest.raises(ValueError):
            test_object.set_value(test_object.default_value)
    else:
        # Test set_value with and without a timeout (different code branch)
        # Must be set to None so the next command causes a change
        test_object._nominal_value = None
        test_object._set_value(startval)
        test_object.wait_ready()
        # _nominal_value is only updated by update_value or get_value
        test_object.get_value()
        assert test_object._nominal_value == startval, (
            "_set_value(%s) leaves _nominal_value as %s"
            % (startval, test_object._nominal_value),
        )
        # Must be set to None so the next command causes a change
        test_object._nominal_value = None
        test_object.set_value(startval, timeout=None)
        assert test_object._nominal_value == startval, (
            "Setting to %s leaves _nominal_value aa %s"
            % (startval, test_object._nominal_value),
        )