aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/test_formatter.py3
-rw-r--r--test/test_postprocessor.py46
-rw-r--r--test/test_text.py19
-rw-r--r--test/test_util.py36
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")