diff --git a/meshtastic/__main__.py b/meshtastic/__main__.py index f71567c..a4b1560 100644 --- a/meshtastic/__main__.py +++ b/meshtastic/__main__.py @@ -95,6 +95,8 @@ def setPref(attributes, name, valStr): snake_name = meshtastic.util.camel_to_snake(name) camel_name = meshtastic.util.snake_to_camel(name) + logging.debug(f'snake_name:{snake_name}') + logging.debug(f'camel_name:{camel_name}') objDesc = attributes.DESCRIPTOR field = objDesc.fields_by_name.get(snake_name) @@ -125,9 +127,9 @@ def setPref(attributes, name, valStr): val = e.number else: if Globals.getInstance().get_camel_case(): - print(f"{snake_name} does not have an enum called {val}, so you can not set it.") - else: print(f"{camel_name} does not have an enum called {val}, so you can not set it.") + else: + print(f"{snake_name} does not have an enum called {val}, so you can not set it.") print(f"Choices in sorted order are:") names = [] for f in enumType.values: diff --git a/meshtastic/tests/test_main.py b/meshtastic/tests/test_main.py index 4448fef..6adba2b 100644 --- a/meshtastic/tests/test_main.py +++ b/meshtastic/tests/test_main.py @@ -19,6 +19,7 @@ from ..tcp_interface import TCPInterface from ..node import Node from ..channel_pb2 import Channel from ..remote_hardware import onGPIOreceive +from ..radioconfig_pb2 import RadioConfig @pytest.mark.unit @@ -1908,6 +1909,74 @@ def test_main_setPref_valid_field_int_as_string(capsys): assert err == '' +@pytest.mark.unit +@pytest.mark.usefixtures("reset_globals") +def test_main_setPref_valid_field_invalid_enum(capsys, caplog): + """Test setPref() with a valid field but invalid enum value""" + + radioConfig = RadioConfig() + prefs = radioConfig.preferences + + with caplog.at_level(logging.DEBUG): + setPref(prefs, 'charge_current', 'foo') + out, err = capsys.readouterr() + assert re.search(r'charge_current does not have an enum called foo', out, re.MULTILINE) + assert err == '' + + +@pytest.mark.unit +@pytest.mark.usefixtures("reset_globals") +def test_main_setPref_valid_field_invalid_enum_camel(capsys, caplog): + """Test setPref() with a valid field but invalid enum value""" + Globals.getInstance().set_camel_case() + + radioConfig = RadioConfig() + prefs = radioConfig.preferences + + with caplog.at_level(logging.DEBUG): + setPref(prefs, 'charge_current', 'foo') + out, err = capsys.readouterr() + assert re.search(r'chargeCurrent does not have an enum called foo', out, re.MULTILINE) + assert err == '' + + +@pytest.mark.unit +@pytest.mark.usefixtures("reset_globals") +def test_main_setPref_valid_field_valid_enum(capsys, caplog): + """Test setPref() with a valid field and valid enum value""" + + # charge_current + # some valid values: MA100 MA1000 MA1080 + + radioConfig = RadioConfig() + prefs = radioConfig.preferences + + with caplog.at_level(logging.DEBUG): + setPref(prefs, 'charge_current', 'MA100') + out, err = capsys.readouterr() + assert re.search(r'Set charge_current to MA100', out, re.MULTILINE) + assert err == '' + + +@pytest.mark.unit +@pytest.mark.usefixtures("reset_globals") +def test_main_setPref_valid_field_valid_enum_camel(capsys, caplog): + """Test setPref() with a valid field and valid enum value""" + Globals.getInstance().set_camel_case() + + # charge_current + # some valid values: MA100 MA1000 MA1080 + + radioConfig = RadioConfig() + prefs = radioConfig.preferences + + with caplog.at_level(logging.DEBUG): + setPref(prefs, 'charge_current', 'MA100') + out, err = capsys.readouterr() + assert re.search(r'Set chargeCurrent to MA100', out, re.MULTILINE) + assert err == '' + + @pytest.mark.unit @pytest.mark.usefixtures("reset_globals") def test_main_setPref_invalid_field(capsys):