1# -*- coding: utf-8 -*-
2#
3# Picard, the next-generation MusicBrainz tagger
4#
5# Copyright (C) 2019 Laurent Monin
6#
7# This program is free software; you can redistribute it and/or
8# modify it under the terms of the GNU General Public License
9# as published by the Free Software Foundation; either version 2
10# of the License, or (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
21
22from test.picardtestcase import PicardTestCase
23
24from picard import config
25from picard.util.settingsoverride import SettingsOverride
26
27
28class SettingsOverrideTest(PicardTestCase):
29
30    def setUp(self):
31        super().setUp()
32        self.set_config_values({'key1': 'origval1', 'key2': 'origval2'})
33        self.new_settings = {'key1': 'newval2'}
34
35    def test_read_orig_settings(self):
36        override = SettingsOverride(config.setting, self.new_settings)
37        self.assertEqual(override['key1'], 'newval2')
38        self.assertEqual(override['key2'], 'origval2')
39        with self.assertRaises(KeyError):
40            x = override['key3']  # noqa: F841
41
42    def test_read_orig_settings_kw(self):
43        override = SettingsOverride(config.setting, key1='newval2')
44        self.assertEqual(override['key1'], 'newval2')
45        self.assertEqual(override['key2'], 'origval2')
46
47    def test_write_orig_settings(self):
48        override = SettingsOverride(config.setting, self.new_settings)
49        override['key1'] = 'newval3'
50        self.assertEqual(override['key1'], 'newval3')
51        self.assertEqual(config.setting['key1'], 'origval1')
52
53        override['key2'] = 'newval4'
54        self.assertEqual(override['key2'], 'newval4')
55        self.assertEqual(config.setting['key2'], 'origval2')
56
57        override['key3'] = 'newval5'
58        self.assertEqual(override['key3'], 'newval5')
59        with self.assertRaises(KeyError):
60            x = config.setting['key3']  # noqa: F841
61
62    def test_del_orig_settings(self):
63        override = SettingsOverride(config.setting, self.new_settings)
64
65        override['key1'] = 'newval3'
66        self.assertEqual(override['key1'], 'newval3')
67        del override['key1']
68        self.assertEqual(override['key1'], 'origval1')
69
70        self.assertEqual(override['key2'], 'origval2')
71        del override['key2']
72        self.assertEqual(override['key2'], 'origval2')
73