diff options
Diffstat (limited to 'test/test_formatter.py')
| -rw-r--r-- | test/test_formatter.py | 60 |
1 files changed, 57 insertions, 3 deletions
diff --git a/test/test_formatter.py b/test/test_formatter.py index 5b8ca0a..aec091a 100644 --- a/test/test_formatter.py +++ b/test/test_formatter.py @@ -9,12 +9,13 @@ import os import sys +import time import unittest import datetime import tempfile sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -from gallery_dl import formatter # noqa E402 +from gallery_dl import formatter, text, util # noqa E402 class TestFormatter(unittest.TestCase): @@ -98,6 +99,14 @@ class TestFormatter(unittest.TestCase): self._run_test("{missing[key]}", replacement, default) self._run_test("{missing:?a//}", "a" + default, default) + def test_fmt_func(self): + self._run_test("{t}" , self.kwdict["t"] , None, int) + self._run_test("{t}" , self.kwdict["t"] , None, util.identity) + self._run_test("{dt}", self.kwdict["dt"], None, util.identity) + self._run_test("{ds}", self.kwdict["dt"], None, text.parse_datetime) + self._run_test("{ds:D%Y-%m-%dT%H:%M:%S%z}", self.kwdict["dt"], + None, util.identity) + def test_alternative(self): self._run_test("{a|z}" , "hElLo wOrLd") self._run_test("{z|a}" , "hElLo wOrLd") @@ -184,6 +193,31 @@ class TestFormatter(unittest.TestCase): self._run_test("{ds:D%Y}", "2010-01-01T01:00:00+0100") self._run_test("{l:D%Y}", "None") + def test_offset(self): + self._run_test("{dt:O 01:00}", "2010-01-01 01:00:00") + self._run_test("{dt:O+02:00}", "2010-01-01 02:00:00") + self._run_test("{dt:O-03:45}", "2009-12-31 20:15:00") + + self._run_test("{dt:O12}", "2010-01-01 12:00:00") + self._run_test("{dt:O-24}", "2009-12-31 00:00:00") + + self._run_test("{ds:D%Y-%m-%dT%H:%M:%S%z/O1}", "2010-01-01 01:00:00") + self._run_test("{t!d:O2}", "2010-01-01 02:00:00") + + orig_daylight = time.daylight + orig_timezone = time.timezone + orig_altzone = time.altzone + try: + time.daylight = False + time.timezone = -3600 + self._run_test("{dt:O}", "2010-01-01 01:00:00") + time.timezone = 7200 + self._run_test("{dt:Olocal}", "2009-12-31 22:00:00") + finally: + time.daylight = orig_daylight + time.timezone = orig_timezone + time.altzone = orig_altzone + def test_chain_special(self): # multiple replacements self._run_test("{a:Rh/C/RE/e/RL/l/}", "Cello wOrld") @@ -202,6 +236,26 @@ class TestFormatter(unittest.TestCase): # parse and format datetime self._run_test("{ds:D%Y-%m-%dT%H:%M:%S%z/%Y%m%d}", "20100101") + def test_separator(self): + orig_separator = formatter._SEPARATOR + try: + formatter._SEPARATOR = "|" + self._run_test("{a:Rh|C|RE|e|RL|l|}", "Cello wOrld") + self._run_test("{d[b]!s:R1|Q|R2|A|R0|Y|}", "Y") + + formatter._SEPARATOR = "##" + self._run_test("{l:J-##Rb##E##}", "a-E-c") + self._run_test("{l:J-##[1:-1]}", "-b-") + + formatter._SEPARATOR = "\0" + self._run_test("{d[a]:?<\0>\0L1\0too long\0}", "<too long>") + self._run_test("{d[c]:?<\0>\0L5\0too long\0}", "") + + formatter._SEPARATOR = "?" + self._run_test("{ds:D%Y-%m-%dT%H:%M:%S%z?%Y%m%d}", "20100101") + finally: + formatter._SEPARATOR = orig_separator + def test_globals_env(self): os.environ["FORMATTER_TEST"] = value = self.kwdict["a"] @@ -316,8 +370,8 @@ def noarg(): with self.assertRaises(TypeError): self.assertEqual(fmt3.format_map(self.kwdict), "") - def _run_test(self, format_string, result, default=None): - fmt = formatter.parse(format_string, default) + def _run_test(self, format_string, result, default=None, fmt=format): + fmt = formatter.parse(format_string, default, fmt) output = fmt.format_map(self.kwdict) self.assertEqual(output, result, format_string) |
