chirp/tests/test_settings.py
Dan Smith 90027b4850 Add test to assert mem.extra contents
This must be a list (or RadioSettingGroup) of RadioSetting objects.
2023-11-05 10:58:51 -08:00

61 lines
2.2 KiB
Python

from chirp import chirp_common
from chirp import settings
from tests import base
class TestCaseSettings(base.DriverTest):
def test_has_settings(self):
return
settings = self.radio.get_settings()
if settings:
self.assertFalse(self.rf.has_settings,
'Radio returned settings but has_settings=False')
else:
self.assertTrue(self.rf.has_settings,
'Radio returned no settings but has_settings=True')
@base.requires_feature('has_settings')
def test_get_settings(self):
lst = self.radio.get_settings()
self.assertIsInstance(lst, list)
@base.requires_feature('has_settings')
def test_same_settings(self):
o = self.radio.get_settings()
self.radio.set_settings(o)
n = self.radio.get_settings()
list(map(self.compare_settings, o, n))
def compare_settings(self, a, b):
try:
if isinstance(a, settings.RadioSettingValue):
raise StopIteration
list(map(self.compare_settings, a, b))
except StopIteration:
self.assertEqual(a.get_value(), b.get_value(),
'Setting value changed from %r to %r' % (
a.get_value(), b.get_value()))
def test_memory_extra_frozen(self):
# Find the first non-empty memory and try to set it back as a
# FrozenMemory to make sure the driver does not try to modify
# any of the settings.
for i in range(*self.rf.memory_bounds):
m = self.radio.get_memory(i)
if not m.empty:
self.radio.set_memory(chirp_common.FrozenMemory(m))
break
def test_memory_extra_flat(self):
for i in range(*self.rf.memory_bounds):
m = self.radio.get_memory(i)
if not m.empty:
self.assertIsInstance(
m.extra,
(list, settings.RadioSettingGroup),
'mem.extra must be a list or RadioSettingGroup')
for e in m.extra:
self.assertIsInstance(
e, settings.RadioSetting,
'mem.extra items must be RadioSetting objects')