File: test_memedit_edits.py

package info (click to toggle)
chirp 1%3A20221106%2Bpy3-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 11,144 kB
  • sloc: python: 119,334; ansic: 296; sh: 184; makefile: 41
file content (74 lines) | stat: -rw-r--r-- 2,906 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
try:
    import mox
except ImportError:
    from mox3 import mox
from tests.unit import base

__builtins__["_"] = lambda s: s

try:
    from chirp.ui import memedit
except ImportError:
    memedit = None


class TestEdits(base.BaseGTKTest):
    def _test_tone_column_change(self, col,
                                 ini_tmode='', ini_cmode='',
                                 exp_tmode=None, exp_cmode=None):
        editor = self.mox.CreateMock(memedit.MemoryEditor)
        editor._config = self.mox.CreateMockAnything()
        editor._config.get_bool("no_smart_tmode").AndReturn(False)
        editor.col = lambda x: x
        editor.store = self.mox.CreateMockAnything()
        editor.store.get_iter('path').AndReturn('iter')
        editor.store.get('iter', 'Tone Mode', 'Cross Mode').AndReturn(
            (ini_tmode, ini_cmode))
        if exp_tmode:
            editor.store.set('iter', 'Tone Mode', exp_tmode)
        if exp_cmode and col != 'Cross Mode':
            editor.store.set('iter', 'Cross Mode', exp_cmode)
        self.mox.ReplayAll()
        memedit.MemoryEditor.ed_tone_field(editor, None, 'path', None, col)

    def _test_auto_tone_mode(self, col, exp_tmode, exp_cmode):
        cross_exp_cmode = (exp_tmode == "Cross" and exp_cmode or None)

        # No tmode -> expected tmode, maybe requires cross mode change
        self._test_tone_column_change(col, exp_tmode=exp_tmode,
                                      exp_cmode=cross_exp_cmode)

        # Expected tmode does not re-set tmode, may change cmode
        self._test_tone_column_change(col, ini_tmode=exp_tmode,
                                      exp_cmode=cross_exp_cmode)

        # Invalid tmode -> expected, may change cmode
        self._test_tone_column_change(col, ini_tmode="foo",
                                      exp_tmode=exp_tmode,
                                      exp_cmode=cross_exp_cmode)

        # Expected cmode does not re-set cmode
        self._test_tone_column_change(col, ini_tmode="Cross",
                                      ini_cmode=exp_cmode)

        # Invalid cmode -> expected
        self._test_tone_column_change(col, ini_tmode="Cross",
                                      ini_cmode="foo", exp_cmode=exp_cmode)

    def test_auto_tone_mode_tone(self):
        self._test_auto_tone_mode('Tone', 'Tone', 'Tone->Tone')

    def test_auto_tone_mode_tsql(self):
        self._test_auto_tone_mode('ToneSql', 'TSQL', 'Tone->Tone')

    def test_auto_tone_mode_dtcs(self):
        self._test_auto_tone_mode('DTCS Code', 'DTCS', 'DTCS->')

    def test_auto_tone_mode_dtcs_rx(self):
        self._test_auto_tone_mode('DTCS Rx Code', 'Cross', '->DTCS')

    def test_auto_tone_mode_dtcs_pol(self):
        self._test_auto_tone_mode('DTCS Pol', 'DTCS', 'DTCS->')

    def test_auto_tone_mode_cross(self):
        self._test_auto_tone_mode('Cross Mode', 'Cross', 'Tone->Tone')