diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/test_formatter.py | 11 | ||||
| -rw-r--r-- | test/test_job.py | 30 | ||||
| -rw-r--r-- | test/test_results.py | 8 | ||||
| -rw-r--r-- | test/test_util.py | 68 |
4 files changed, 116 insertions, 1 deletions
diff --git a/test/test_formatter.py b/test/test_formatter.py index 088b45b..8464b1b 100644 --- a/test/test_formatter.py +++ b/test/test_formatter.py @@ -29,6 +29,7 @@ class TestFormatter(unittest.TestCase): "u": "'< / >'", "t": 1262304000, "dt": datetime.datetime(2010, 1, 1), + "ds": "2010-01-01T01:00:00+0100", "name": "Name", "title1": "Title", "title2": "", @@ -162,6 +163,11 @@ class TestFormatter(unittest.TestCase): self._run_test("{a!l:Rl//}" , "heo word") self._run_test("{name:Rame/othing/}", "Nothing") + def test_datetime(self): + self._run_test("{ds:D%Y-%m-%dT%H:%M:%S%z}", "2010-01-01 00:00:00") + self._run_test("{ds:D%Y}", "2010-01-01T01:00:00+0100") + self._run_test("{l:D%Y}", "None") + def test_chain_special(self): # multiple replacements self._run_test("{a:Rh/C/RE/e/RL/l/}", "Cello wOrld") @@ -174,6 +180,9 @@ class TestFormatter(unittest.TestCase): self._run_test("{d[a]:?</>/L1/too long/}", "<too long>") self._run_test("{d[c]:?</>/L5/too long/}", "") + # parse and format datetime + self._run_test("{ds:D%Y-%m-%dT%H:%M:%S%z/%Y%m%d}", "20100101") + def test_globals_env(self): os.environ["FORMATTER_TEST"] = value = self.kwdict["a"] @@ -259,7 +268,7 @@ def noarg(): sys.path.pop(0) self.assertEqual(fmt1.format_map(self.kwdict), "'Title' by Name") - self.assertEqual(fmt2.format_map(self.kwdict), "65") + self.assertEqual(fmt2.format_map(self.kwdict), "89") with self.assertRaises(TypeError): self.assertEqual(fmt3.format_map(self.kwdict), "") diff --git a/test/test_job.py b/test/test_job.py index 1aeec1c..0276555 100644 --- a/test/test_job.py +++ b/test/test_job.py @@ -37,6 +37,31 @@ class TestJob(unittest.TestCase): return buffer.getvalue() +class TestDownloadJob(TestJob): + jobclass = job.DownloadJob + + def test_extractor_filter(self): + extr = TestExtractor.from_url("test:") + tjob = self.jobclass(extr) + + func = tjob._build_extractor_filter() + self.assertEqual(func(TestExtractor) , False) + self.assertEqual(func(TestExtractorParent), False) + self.assertEqual(func(TestExtractorAlt) , True) + + config.set((), "blacklist", ":test_subcategory") + func = tjob._build_extractor_filter() + self.assertEqual(func(TestExtractor) , False) + self.assertEqual(func(TestExtractorParent), True) + self.assertEqual(func(TestExtractorAlt) , False) + + config.set((), "whitelist", "test_category:test_subcategory") + func = tjob._build_extractor_filter() + self.assertEqual(func(TestExtractor) , True) + self.assertEqual(func(TestExtractorParent), False) + self.assertEqual(func(TestExtractorAlt) , False) + + class TestKeywordJob(TestJob): jobclass = job.KeywordJob @@ -334,5 +359,10 @@ class TestExtractorException(Extractor): return 1/0 +class TestExtractorAlt(Extractor): + category = "test_category_alt" + subcategory = "test_subcategory" + + if __name__ == '__main__': unittest.main() diff --git a/test/test_results.py b/test/test_results.py index ba1e0b1..944f14d 100644 --- a/test/test_results.py +++ b/test/test_results.py @@ -148,6 +148,14 @@ class TestExtractorResults(unittest.TestCase): self._test_kwdict(value, test) elif isinstance(test, type): self.assertIsInstance(value, test, msg=key) + elif isinstance(test, list): + subtest = False + for idx, item in enumerate(test): + if isinstance(item, dict): + subtest = True + self._test_kwdict(value[idx], item) + if not subtest: + self.assertEqual(value, test, msg=key) elif isinstance(test, str): if test.startswith("re:"): self.assertRegex(value, test[3:], msg=key) diff --git a/test/test_util.py b/test/test_util.py index 0fbbbce..32e9784 100644 --- a/test/test_util.py +++ b/test/test_util.py @@ -357,6 +357,58 @@ class TestOther(unittest.TestCase): with self.assertRaises(exception.StopExtraction): expr() + def test_extractor_filter(self): + # empty + func = util.build_extractor_filter("") + self.assertEqual(func(TestExtractor) , True) + self.assertEqual(func(TestExtractorParent), True) + self.assertEqual(func(TestExtractorAlt) , True) + + # category + func = util.build_extractor_filter("test_category") + self.assertEqual(func(TestExtractor) , False) + self.assertEqual(func(TestExtractorParent), False) + self.assertEqual(func(TestExtractorAlt) , True) + + # subcategory + func = util.build_extractor_filter("*:test_subcategory") + self.assertEqual(func(TestExtractor) , False) + self.assertEqual(func(TestExtractorParent), True) + self.assertEqual(func(TestExtractorAlt) , False) + + # basecategory + func = util.build_extractor_filter("test_basecategory") + self.assertEqual(func(TestExtractor) , False) + self.assertEqual(func(TestExtractorParent), False) + self.assertEqual(func(TestExtractorAlt) , False) + + # category-subcategory pair + func = util.build_extractor_filter("test_category:test_subcategory") + self.assertEqual(func(TestExtractor) , False) + self.assertEqual(func(TestExtractorParent), True) + self.assertEqual(func(TestExtractorAlt) , True) + + # combination + func = util.build_extractor_filter( + ["test_category", "*:test_subcategory"]) + self.assertEqual(func(TestExtractor) , False) + self.assertEqual(func(TestExtractorParent), False) + self.assertEqual(func(TestExtractorAlt) , False) + + # whitelist + func = util.build_extractor_filter( + "test_category:test_subcategory", negate=False) + self.assertEqual(func(TestExtractor) , True) + self.assertEqual(func(TestExtractorParent), False) + self.assertEqual(func(TestExtractorAlt) , False) + + func = util.build_extractor_filter( + ["test_category:test_subcategory", "*:test_subcategory_parent"], + negate=False) + self.assertEqual(func(TestExtractor) , True) + self.assertEqual(func(TestExtractorParent), True) + self.assertEqual(func(TestExtractorAlt) , False) + def test_generate_token(self): tokens = set() for _ in range(100): @@ -469,5 +521,21 @@ class TestOther(unittest.TestCase): self.assertIs(obj["key"], obj) +class TestExtractor(): + category = "test_category" + subcategory = "test_subcategory" + basecategory = "test_basecategory" + + +class TestExtractorParent(TestExtractor): + category = "test_category" + subcategory = "test_subcategory_parent" + + +class TestExtractorAlt(TestExtractor): + category = "test_category_alt" + subcategory = "test_subcategory" + + if __name__ == '__main__': unittest.main() |
