aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/test_memedit_edits.py
blob: 167f467f968c0c26b99f92edcdbeb99a99fb91e4 (plain) (blame)
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
75
76
77
78
79
80
81
82
83
84
85
from mox3 import mox

#try:
#    import mox3
#except ImportError:
#    from mox3 import mox

from tests.unit import base

__builtins__["_"] = lambda s: s

memedit = None


class TestEdits(base.BaseTest):
    def setUp(self):
        global memedit
        super(TestEdits, self).setUp()
        base.mock_gtk()
        from chirp.ui import memedit as memedit_module
        memedit = memedit_module

    def tearDown(self):
        super(TestEdits, self).tearDown()
        base.unmock_gtk()

    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')