lib: Implement save and load functions for settings
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
e119a6cf19
commit
76338da8fe
|
@ -1,7 +1,9 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from. import data
|
||||
import configparser
|
||||
import threading
|
||||
|
||||
config_file = "settings.cfg"
|
||||
config = configparser.ConfigParser()
|
||||
lock = threading.Lock()
|
||||
|
||||
|
@ -37,6 +39,14 @@ def set(setting, value):
|
|||
if not config.has_section(section):
|
||||
config.add_section(section)
|
||||
config.set(section, key, str(value))
|
||||
with data.DataFile(config_file, data.WRITE_TEXT) as f:
|
||||
config.write(f.file)
|
||||
|
||||
def load():
|
||||
with data.DataFile(config_file, data.READ_TEXT) as f:
|
||||
if f.exists():
|
||||
config.read_file(f.file)
|
||||
|
||||
def reset():
|
||||
config.clear()
|
||||
data.DataFile(config_file, data.WRITE_TEXT).remove()
|
||||
|
|
|
@ -1,21 +1,28 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from . import data
|
||||
from . import settings
|
||||
import configparser
|
||||
import threading
|
||||
import unittest
|
||||
|
||||
class TestSettings(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.cfg_file = data.DataFile(settings.config_file, data.READ_TEXT)
|
||||
|
||||
def tearDown(self):
|
||||
settings.reset()
|
||||
|
||||
def test_init(self):
|
||||
self.assertEqual(settings.config_file, "settings.cfg")
|
||||
self.assertIsInstance(settings.config, configparser.ConfigParser)
|
||||
self.assertIsInstance(settings.lock, type(threading.Lock()))
|
||||
|
||||
def test_set_get(self):
|
||||
self.assertIsNone(settings.get("test.key"))
|
||||
|
||||
self.assertFalse(self.cfg_file.exists())
|
||||
settings.set("test.key", 42)
|
||||
self.assertTrue(self.cfg_file.exists())
|
||||
self.assertEqual(settings.get("test.key"), "42")
|
||||
self.assertIsNone(settings.get("test.nokey"))
|
||||
self.assertEqual(settings.get("test.nokey", 1), 1)
|
||||
|
@ -28,7 +35,25 @@ class TestSettings(unittest.TestCase):
|
|||
settings.set("test.bool", True)
|
||||
self.assertTrue(settings.get_bool("test.bool"))
|
||||
|
||||
def test_load(self):
|
||||
settings.load()
|
||||
|
||||
settings.set("test.key1", 1)
|
||||
settings.set("test.key2", 2)
|
||||
settings.set("test.key3", True)
|
||||
settings.set("test.key4", 4.2)
|
||||
|
||||
settings.config.clear()
|
||||
settings.load()
|
||||
|
||||
self.assertEqual(settings.get_int("test.key1"), 1)
|
||||
self.assertEqual(settings.get_int("test.key2"), 2)
|
||||
self.assertEqual(settings.get_bool("test.key3"), True)
|
||||
self.assertEqual(settings.get_float("test.key4"), 4.2)
|
||||
|
||||
def test_reset(self):
|
||||
settings.set("test.key", 42)
|
||||
self.assertTrue(self.cfg_file.exists())
|
||||
settings.reset()
|
||||
self.assertIsNone(settings.get("test.key"))
|
||||
self.assertFalse(self.cfg_file.exists())
|
||||
|
|
Loading…
Reference in New Issue
Block a user