diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/test_formatter.py | 3 | ||||
| -rw-r--r-- | test/test_postprocessor.py | 46 | ||||
| -rw-r--r-- | test/test_text.py | 19 | ||||
| -rw-r--r-- | test/test_util.py | 36 |
4 files changed, 102 insertions, 2 deletions
diff --git a/test/test_formatter.py b/test/test_formatter.py index aec091a..b335332 100644 --- a/test/test_formatter.py +++ b/test/test_formatter.py @@ -58,6 +58,7 @@ class TestFormatter(unittest.TestCase): self._run_test("{dt!T}", "1262304000") self._run_test("{l!j}", '["a", "b", "c"]') self._run_test("{dt!j}", '"2010-01-01 00:00:00"') + self._run_test("{a!g}", "hello-world") with self.assertRaises(KeyError): self._run_test("{a!q}", "hello world") @@ -177,7 +178,7 @@ class TestFormatter(unittest.TestCase): self._run_test("{l:J - />20}", " a - b - c") self._run_test("{a:J/}" , self.kwdict["a"]) - self._run_test("{a:J, /}" , ", ".join(self.kwdict["a"])) + self._run_test("{a:J, /}" , self.kwdict["a"]) def test_replace(self): self._run_test("{a:Rh/C/}" , "CElLo wOrLd") diff --git a/test/test_postprocessor.py b/test/test_postprocessor.py index 7a216bb..42babd3 100644 --- a/test/test_postprocessor.py +++ b/test/test_postprocessor.py @@ -339,6 +339,52 @@ class MetadataTest(BasePostprocessorTest): {"category": "test", "extension": "ext", "filename": "file"} """) + def test_metadata_modify(self): + kwdict = {"foo": 0, "bar": {"bax": 1, "bay": 2, "baz": 3}} + self._create({ + "mode": "modify", + "fields": { + "foo" : "{filename}-{foo!s}", + "foo2" : "\fE bar['bax'] + 122", + "bar[baz]": "{_now}", + "bar[ba2]": "test", + }, + }, kwdict) + pdict = self.pathfmt.kwdict + + self.assertIsNot(kwdict, pdict) + self.assertEqual(pdict["foo"], kwdict["foo"]) + self.assertEqual(pdict["bar"], kwdict["bar"]) + + self._trigger() + + self.assertEqual(pdict["foo"] , "file-0") + self.assertEqual(pdict["foo2"] , 123) + self.assertEqual(pdict["bar"]["ba2"], "test") + self.assertIsInstance(pdict["bar"]["baz"], datetime) + + def test_metadata_delete(self): + kwdict = {"foo": 0, "bar": {"bax": 1, "bay": 2, "baz": 3}} + self._create({"mode": "delete", "fields": ["foo", "bar[baz]"]}, kwdict) + pdict = self.pathfmt.kwdict + + self.assertIsNot(kwdict, pdict) + self.assertEqual(pdict["foo"], kwdict["foo"]) + self.assertEqual(pdict["bar"], kwdict["bar"]) + + del kwdict["foo"] + del kwdict["bar"]["baz"] + + self._trigger() + self.assertNotIn("foo", pdict) + self.assertNotIn("baz", pdict["bar"]) + self.assertEqual(kwdict["bar"], pdict["bar"]) + + self._trigger() + self.assertNotIn("foo", pdict) + self.assertNotIn("baz", pdict["bar"]) + self.assertEqual(kwdict["bar"], pdict["bar"]) + @staticmethod def _output(mock): return "".join( diff --git a/test/test_text.py b/test/test_text.py index ffed726..0ac7767 100644 --- a/test/test_text.py +++ b/test/test_text.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -# Copyright 2015-2021 Mike Fährmann +# Copyright 2015-2022 Mike Fährmann # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as @@ -75,6 +75,23 @@ class TestText(unittest.TestCase): for value in INVALID: self.assertEqual(f(value), empty) + def test_slugify(self, f=text.slugify): + self.assertEqual(f("Hello World"), "hello-world") + self.assertEqual(f("-HeLLo---World-"), "hello-world") + self.assertEqual(f("_-H#e:l#l:o+\t+W?o!rl=d-_"), "hello-world") + self.assertEqual(f("_Hello_World_"), "hello_world") + + self.assertEqual(f(""), "") + self.assertEqual(f("-"), "") + self.assertEqual(f("--"), "") + + self.assertEqual(f(()), "") + self.assertEqual(f([]), "") + self.assertEqual(f({}), "") + self.assertEqual(f(None), "none") + self.assertEqual(f(1), "1") + self.assertEqual(f(2.3), "23") + def test_ensure_http_scheme(self, f=text.ensure_http_scheme): result = "https://example.org/filename.ext" diff --git a/test/test_util.py b/test/test_util.py index 7ab1175..2921ea2 100644 --- a/test/test_util.py +++ b/test/test_util.py @@ -15,6 +15,7 @@ import io import random import string import datetime +import itertools import http.cookiejar sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) @@ -541,6 +542,41 @@ class TestOther(unittest.TestCase): r = util.filter_dict(d) self.assertEqual(r, {"foo": 123}) + def test_enumerate_reversed(self): + + seq = [11, 22, 33] + result = [(3, 33), (2, 22), (1, 11)] + + def gen(): + for i in seq: + yield i + + def gen_2(): + yield from seq + + def assertEqual(it1, it2): + ae = self.assertEqual + for i1, i2 in itertools.zip_longest(it1, it2): + ae(i1, i2) + + assertEqual( + util.enumerate_reversed(seq), [(2, 33), (1, 22), (0, 11)]) + assertEqual( + util.enumerate_reversed(seq, 1), result) + assertEqual( + util.enumerate_reversed(seq, 2), [(4, 33), (3, 22), (2, 11)]) + + assertEqual( + util.enumerate_reversed(gen(), 0, len(seq)), + [(2, 33), (1, 22), (0, 11)]) + assertEqual( + util.enumerate_reversed(gen(), 1, len(seq)), result) + assertEqual( + util.enumerate_reversed(gen_2(), 1, len(seq)), result) + assertEqual( + util.enumerate_reversed(gen_2(), 2, len(seq)), + [(4, 33), (3, 22), (2, 11)]) + def test_number_to_string(self, f=util.number_to_string): self.assertEqual(f(1) , "1") self.assertEqual(f(1.0) , "1.0") |
