From 5ade8e47f0a7de7d2501976bb0523bd9ce8a76d0 Mon Sep 17 00:00:00 2001 From: tobi-wan-kenobi Date: Sat, 28 Mar 2020 14:03:50 +0100 Subject: [PATCH] [core/theme] Add some unit tests --- core/theme.py | 26 ++++++++++++++++---------- tests/core/test_theme.py | 19 +++++++++++++++++++ 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/core/theme.py b/core/theme.py index 7f541ed..63ca433 100644 --- a/core/theme.py +++ b/core/theme.py @@ -22,16 +22,14 @@ class Theme(object): self.__previous = {} self.__current = {} self.__keywords = {} - if raw_data: - self.__data = raw_data - else: - self.__data = self.load(name) - for icons in self.__data['icons']: - util.algorithm.merge(self.__data, self.load(icons, 'icons')) - if iconset != 'auto': - util.algorithm.merge(self.__data, self.load(iconset, 'icons')) - for colors in self.__data.get('colors', []): - util.algorithm.merge(self.__keywords, self.load_keywords(colors)) + self.__data = raw_data if raw_data else self.load(name) + for icons in self.__data.get('icons', []): + util.algorithm.merge(self.__data, self.load(icons, 'icons')) + if iconset != 'auto': + print("merging iconset") + util.algorithm.merge(self.__data, self.load(iconset, 'icons')) + for colors in self.__data.get('colors', []): + util.algorithm.merge(self.__keywords, self.load_keywords(colors)) core.event.register('update', self.__start) core.event.register('next-widget', self.__next_widget) @@ -50,7 +48,15 @@ class Theme(object): ]: setattr(self, attr.replace('-', '_'), lambda widget=None, default=default, attr=attr: self.__get(widget, attr, default)) + def keywords(self): + return self.__keywords + def load(self, name, subdir=''): + if isinstance(name, dict): + print("returning name") + return name # support plain data + else: + print("not returning name") for path in PATHS: theme_file = os.path.join(path, subdir, '{}.json'.format(name)) if os.path.isfile(theme_file): diff --git a/tests/core/test_theme.py b/tests/core/test_theme.py index 1618461..c362549 100644 --- a/tests/core/test_theme.py +++ b/tests/core/test_theme.py @@ -20,6 +20,11 @@ class theme(unittest.TestCase): { 'fg': 'white', 'bg': 'blue' } ] } + self.colorTheme = { + 'colors': [{ + 'red': '#ff0000', 'blue': '#0000ff' + }] + } def test_invalid_theme(self): with self.assertRaises(RuntimeError): @@ -50,4 +55,18 @@ class theme(unittest.TestCase): self.assertEqual(self.cycleTheme['cycle'][0]['fg'], theme.fg()) self.assertEqual(self.cycleTheme['cycle'][0]['bg'], theme.bg()) + def test_custom_iconset(self): + theme = core.theme.Theme(raw_data=self.defaultsTheme) + self.assertNotEqual('aaa', theme.padding()) + theme = core.theme.Theme(raw_data=self.defaultsTheme, iconset={ + 'defaults': { 'padding': 'aaa' } + }) + self.assertEqual('aaa', theme.padding()) + + def test_colors(self): + theme = core.theme.Theme(raw_data=self.defaultsTheme) + self.assertEqual({}, theme.keywords()) + theme = core.theme.Theme(raw_data=self.colorTheme) + self.assertEqual(self.colorTheme['colors'][0], theme.keywords()) + # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4