diff --git a/test/formats/common.py b/test/formats/common.py index 70531b134..bea426b7b 100644 --- a/test/formats/common.py +++ b/test/formats/common.py @@ -363,7 +363,7 @@ class CommonTests: instrument = "accordéon clavier « boutons »" artist = "桑山哲也" tag = "performer:" + instrument - metadata = Metadata({ tag: artist }) + metadata = Metadata({tag: artist}) loaded_metadata = save_and_load_metadata(self.filename, metadata) self.assertIn(tag, loaded_metadata) self.assertEqual(artist, loaded_metadata[tag]) diff --git a/test/test_acoustidmanager.py b/test/test_acoustidmanager.py index e70e5f288..f0e252040 100644 --- a/test/test_acoustidmanager.py +++ b/test/test_acoustidmanager.py @@ -107,4 +107,3 @@ class AcoustIDManagerTest(PicardTestCase): self.assertEqual(self.mock_api_helper.submit_acoustid_fingerprints.call_count, 6) for f in files: self.assertFalse(self.acoustidmanager.is_submitted(f)) - diff --git a/test/test_bytes2human.py b/test/test_bytes2human.py index 581cb8d41..1b1c2ad1d 100644 --- a/test/test_bytes2human.py +++ b/test/test_bytes2human.py @@ -62,7 +62,8 @@ class Testbytes2human(PicardTestCase): # be sure it is disabled self.fail('!!! UNSET create_test_data mode !!! (%s)' % filename) - def _create_testlist(self): + @staticmethod + def _create_testlist(): values = [0, 1] for n in [1000, 1024]: p = 1 @@ -77,12 +78,14 @@ class Testbytes2human(PicardTestCase): bytes2human.short_string(x, 1024, 2)])) return list - def _save_expected_to(self, path, a_list): + @staticmethod + def _save_expected_to(path, a_list): with open(path, 'wb') as f: f.writelines([l + "\n" for l in a_list]) f.close() - def _read_expected_from(self, path): + @staticmethod + def _read_expected_from(path): with open(path, 'r') as f: lines = [l.rstrip("\n") for l in f.readlines()] f.close() diff --git a/test/test_config.py b/test/test_config.py index c0795c50a..60ab49309 100644 --- a/test/test_config.py +++ b/test/test_config.py @@ -73,7 +73,7 @@ class TestPicardConfig(TestPicardConfigCommon): class TestPicardConfigTextOption(TestPicardConfigCommon): - ### TextOption + # TextOption def test_text_opt_convert(self): opt = TextOption("setting", "text_option", "abc") self.assertEqual(opt.convert(123), "123") @@ -117,7 +117,7 @@ class TestPicardConfigTextOption(TestPicardConfigCommon): class TestPicardConfigBoolOption(TestPicardConfigCommon): - ### BoolOption + # BoolOption def test_bool_opt_convert(self): opt = BoolOption("setting", "bool_option", False) self.assertEqual(opt.convert(1), True) @@ -175,7 +175,7 @@ class TestPicardConfigBoolOption(TestPicardConfigCommon): class TestPicardConfigIntOption(TestPicardConfigCommon): - ### IntOption + # IntOption def test_int_opt_convert(self): opt = IntOption("setting", "int_option", 666) self.assertEqual(opt.convert("123"), 123) @@ -277,7 +277,7 @@ class TestPicardConfigFloatOption(TestPicardConfigCommon): class TestPicardConfigListOption(TestPicardConfigCommon): - ### ListOption + # ListOption def test_list_opt_convert(self): opt = ListOption("setting", "list_option", []) self.assertEqual(opt.convert("123"), ['1', '2', '3']) @@ -328,7 +328,7 @@ class TestPicardConfigListOption(TestPicardConfigCommon): class TestPicardConfigVarOption(TestPicardConfigCommon): - ### Option + # Option def test_var_opt_convert(self): opt = Option("setting", "var_option", set()) self.assertEqual(opt.convert(["a", "b", "a"]), {"a", "b"}) diff --git a/test/test_coverart_image.py b/test/test_coverart_image.py index cab7762b6..f13eec0c8 100644 --- a/test/test_coverart_image.py +++ b/test/test_coverart_image.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # coding: utf-8 import os.path import unittest diff --git a/test/test_coverart_utils.py b/test/test_coverart_utils.py index 4155a55d0..7d0748e50 100644 --- a/test/test_coverart_utils.py +++ b/test/test_coverart_utils.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # coding: utf-8 import os.path diff --git a/test/test_imagelist.py b/test/test_imagelist.py index 151960796..e3441b9f2 100644 --- a/test/test_imagelist.py +++ b/test/test_imagelist.py @@ -321,30 +321,29 @@ class ImageListTest(PicardTestCase): self.assertEqual(len(self.imagelist), 1) def test_imagelist_insert(self): - l = ImageList() - l.insert(0, 'a') - self.assertEqual(l[0], 'a') - l.insert(0, 'b') - self.assertEqual(l[0], 'b') - self.assertEqual(l[1], 'a') + imagelist = ImageList() + imagelist.insert(0, 'a') + self.assertEqual(imagelist[0], 'a') + imagelist.insert(0, 'b') + self.assertEqual(imagelist[0], 'b') + self.assertEqual(imagelist[1], 'a') def test_imagelist_clear(self): - l = ImageList(['a', 'b']) - self.assertEqual(len(l), 2) - l.clear() - self.assertEqual(len(l), 0) + imagelist = ImageList(['a', 'b']) + self.assertEqual(len(imagelist), 2) + imagelist.clear() + self.assertEqual(len(imagelist), 0) def test_imagelist_copy(self): - l = ['a', 'b'] - l1 = ImageList(l) - l2 = l1.copy() - l3 = l1 - l1[0] = 'c' - self.assertEqual(l2[0], 'a') - self.assertEqual(l3[0], 'c') + imagelist1 = ImageList(['a', 'b']) + imagelist2 = imagelist1.copy() + imagelist3 = imagelist1 + imagelist1[0] = 'c' + self.assertEqual(imagelist2[0], 'a') + self.assertEqual(imagelist3[0], 'c') def test_imagelist_del(self): - l = ImageList(['a', 'b']) - del l[0] - self.assertEqual(l[0], 'b') - self.assertEqual(len(l), 1) + imagelist = ImageList(['a', 'b']) + del imagelist[0] + self.assertEqual(imagelist[0], 'b') + self.assertEqual(len(imagelist), 1) diff --git a/test/test_metadata.py b/test/test_metadata.py index b0c544741..02e309e22 100644 --- a/test/test_metadata.py +++ b/test/test_metadata.py @@ -202,7 +202,8 @@ class MetadataTest(PicardTestCase): self.assertNotIn("single1", self.metadata.deleted_tags) def test_metadata_applyfunc(self): - def func(x): return x[1:] + def func(x): + return x[1:] self.metadata.apply_func(func) self.assertEqual("ingle1-value", self.metadata["single1"]) @@ -219,14 +220,16 @@ class MetadataTest(PicardTestCase): m[PRESERVED_TAGS[0]] = 'value1' m['not_preserved'] = 'value2' - def func(x): return x[1:] + def func(x): + return x[1:] m.apply_func(func) self.assertEqual("value1", m[PRESERVED_TAGS[0]]) self.assertEqual("alue2", m['not_preserved']) def test_metadata_applyfunc_delete_tags(self): - def func(x): return None + def func(x): + return None metadata = Metadata(self.metadata) metadata.apply_func(func) self.assertEqual(0, len(metadata.rawitems())) @@ -356,16 +359,13 @@ class MetadataTest(PicardTestCase): self.assertIn('unknown', m.deleted_tags) def test_metadata_mapping_iter(self): - l = set(self.metadata_d1) - self.assertEqual(l, {'a', 'c', 'd'}) + self.assertEqual(set(self.metadata_d1), {'a', 'c', 'd'}) def test_metadata_mapping_keys(self): - l = set(self.metadata_d1.keys()) - self.assertEqual(l, {'a', 'c', 'd'}) + self.assertEqual(set(self.metadata_d1.keys()), {'a', 'c', 'd'}) def test_metadata_mapping_values(self): - l = set(self.metadata_d1.values()) - self.assertEqual(l, {'b', '2', 'x; y'}) + self.assertEqual(set(self.metadata_d1.values()), {'b', '2', 'x; y'}) def test_metadata_mapping_len(self): m = self.metadata_d1 @@ -462,7 +462,7 @@ class MetadataTest(PicardTestCase): m1 = Metadata(a='b', length=1234, images=[image1]) self.assertEqual(m1.images[0], image1) - self.assertEqual(len(m1), 2) # one tag, one image + self.assertEqual(len(m1), 2) # one tag, one image m1.images.append(image2) self.assertEqual(m1.images[1], image2) diff --git a/test/test_textencoding.py b/test/test_textencoding.py index ebbecad00..82f9cf7ad 100644 --- a/test/test_textencoding.py +++ b/test/test_textencoding.py @@ -9,45 +9,45 @@ from picard.const.sys import IS_WIN show_latin2ascii_coverage = False compatibility_from = ( - u"\u0132\u0133\u017F\u01C7\u01C8\u01C9\u01CA\u01CB\u01CC\u01F1" # IJijſLJLjljNJNjnjDZ - u"\u01F2\u01F3\uFB00\uFB01\uFB02\uFB03\uFB04\uFB05\uFB06\uFF21" # DzdzfffiflffifflſtstA - u"\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A\uFF2B" # BCDEFGHIJK - u"\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35" # LMNOPQRSTU - u"\uFF36\uFF37\uFF38\uFF39\uFF3A\uFF41\uFF42\uFF43\uFF44\uFF45" # VWXYZabcde - u"\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F" # fghijklmno - u"\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59" # pqrstuvwxy - u"\uFF5A\u2100\u2101\u2102\u2105\u2106\u210A\u210B\u210C\u210D" # z℀℁ℂ℅℆ℊℋℌℍ - u"\u210E\u2110\u2111\u2112\u2113\u2115\u2116\u2119\u211A\u211B" # ℎℐℑℒℓℕ№ℙℚℛ - u"\u211C\u211D\u2121\u2124\u2128\u212C\u212D\u212F\u2130\u2131" # ℜℝ℡ℤℨℬℭℯℰℱ - u"\u2133\u2134\u2139\u213B\u2145\u2146\u2147\u2148\u2149\u3371" # ℳℴℹ℻ⅅⅆⅇⅈⅉ㍱ - u"\u3372\u3373\u3374\u3375\u3376\u3377\u337A\u3380\u3381\u3383" # ㍲㍳㍴㍵㍶㍷㍺㎀㎁㎃ - u"\u3384\u3385\u3386\u3387\u3388\u3389\u338A\u338B\u338E\u338F" # ㎄㎅㎆㎇㎈㎉㎊㎋㎎㎏ - u"\u3390\u3391\u3392\u3393\u3394\u3399\u339A\u339C\u339D\u339E" # ㎐㎑㎒㎓㎔㎙㎚㎜㎝㎞ - u"\u33A9\u33AA\u33AB\u33AC\u33AD\u33B0\u33B1\u33B3\u33B4\u33B5" # ㎩㎪㎫㎬㎭㎰㎱㎳㎴㎵ - u"\u33B7\u33B8\u33B9\u33BA\u33BB\u33BD\u33BE\u33BF\u33C2\u33C3" # ㎷㎸㎹㎺㎻㎽㎾㎿㏂㏃ - u"\u33C4\u33C5\u33C7\u33C8\u33C9\u33CA\u33CB\u33CC\u33CD\u33CE" # ㏄㏅㏇㏈㏉㏊㏋㏌㏍㏎ - u"\u33CF\u33D0\u33D1\u33D2\u33D3\u33D4\u33D5\u33D6\u33D7\u33D8" # ㏏㏐㏑㏒㏓㏔㏕㏖㏗㏘ - u"\u33D9\u33DA\u33DB\u33DC\u33DD\u249C\u249D\u249E\u249F\u24A0" # ㏙㏚㏛㏜㏝⒜⒝⒞⒟⒠ - u"\u24A1\u24A2\u24A3\u24A4\u24A5\u24A6\u24A7\u24A8\u24A9\u24AA" # ⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪ - u"\u24AB\u24AC\u24AD\u24AE\u24AF\u24B0\u24B1\u24B2\u24B3\u24B4" # ⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴ - u"\u24B5\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168" # ⒵ⅠⅡⅢⅣⅤⅥⅦⅧⅨ - u"\u2169\u216A\u216B\u216C\u216D\u216E\u216F\u2170\u2171\u2172" # ⅩⅪⅫⅬⅭⅮⅯⅰⅱⅲ - u"\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A\u217B\u217C" # ⅳⅴⅵⅶⅷⅸⅹⅺⅻⅼ - u"\u217D\u217E\u217F\u2474\u2475\u2476\u2477\u2478\u2479\u247A" # ⅽⅾⅿ⑴⑵⑶⑷⑸⑹⑺ - u"\u247B\u247C\u247D\u247E\u247F\u2480\u2481\u2482\u2483\u2484" # ⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄ - u"\u2485\u2486\u2487\u2488\u2489\u248A\u248B\u248C\u248D\u248E" # ⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎ - u"\u248F\u2490\u2491\u2492\u2493\u2494\u2495\u2496\u2497\u2498" # ⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘ - u"\u2499\u249A\u249B\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15\uFF16" # ⒙⒚⒛0123456 - u"\uFF17\uFF18\uFF19\u2002\u2003\u2004\u2005\u2006\u2007\u2008" # 789\u2002\u2003\u2004\u2005\u2006\u2007\u2008 - u"\u2009\u200A\u205F\uFF02\uFF07\uFE63\uFF0D\u2024\u2025\u2026" # \u2009\u200A\u205F"'﹣-․‥… - u"\u203C\u2047\u2048\u2049\uFE10\uFE13\uFE14\uFE15\uFE16\uFE19" # ‼⁇⁈⁉︐︓︔︕︖︙ - u"\uFE30\uFE35\uFE36\uFE37\uFE38\uFE47\uFE48\uFE50\uFE52\uFE54" # ︰︵︶︷︸﹇﹈﹐﹒﹔ - u"\uFE55\uFE56\uFE57\uFE59\uFE5A\uFE5B\uFE5C\uFE5F\uFE60\uFE61" # ﹕﹖﹗﹙﹚﹛﹜﹟﹠﹡ - u"\uFE62\uFE64\uFE65\uFE66\uFE68\uFE69\uFE6A\uFE6B\uFF01\uFF03" # ﹢﹤﹥﹦﹨﹩﹪﹫!# - u"\uFF04\uFF05\uFF06\uFF08\uFF09\uFF0A\uFF0B\uFF0C\uFF0E\uFF0F" # $%&()*+,./ - u"\uFF1A\uFF1B\uFF1C\uFF1D\uFF1E\uFF1F\uFF20\uFF3B\uFF3C\uFF3D" # :;<=>?@[\] - u"\uFF3E\uFF3F\uFF40\uFF5B\uFF5C\uFF5D\uFF5E\u2A74\u2A75\u2A76" # ^_`{|}~⩴⩵⩶ - ) + u"\u0132\u0133\u017F\u01C7\u01C8\u01C9\u01CA\u01CB\u01CC\u01F1" # IJijſLJLjljNJNjnjDZ + u"\u01F2\u01F3\uFB00\uFB01\uFB02\uFB03\uFB04\uFB05\uFB06\uFF21" # DzdzfffiflffifflſtstA + u"\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A\uFF2B" # BCDEFGHIJK + u"\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35" # LMNOPQRSTU + u"\uFF36\uFF37\uFF38\uFF39\uFF3A\uFF41\uFF42\uFF43\uFF44\uFF45" # VWXYZabcde + u"\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C\uFF4D\uFF4E\uFF4F" # fghijklmno + u"\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59" # pqrstuvwxy + u"\uFF5A\u2100\u2101\u2102\u2105\u2106\u210A\u210B\u210C\u210D" # z℀℁ℂ℅℆ℊℋℌℍ + u"\u210E\u2110\u2111\u2112\u2113\u2115\u2116\u2119\u211A\u211B" # ℎℐℑℒℓℕ№ℙℚℛ + u"\u211C\u211D\u2121\u2124\u2128\u212C\u212D\u212F\u2130\u2131" # ℜℝ℡ℤℨℬℭℯℰℱ + u"\u2133\u2134\u2139\u213B\u2145\u2146\u2147\u2148\u2149\u3371" # ℳℴℹ℻ⅅⅆⅇⅈⅉ㍱ + u"\u3372\u3373\u3374\u3375\u3376\u3377\u337A\u3380\u3381\u3383" # ㍲㍳㍴㍵㍶㍷㍺㎀㎁㎃ + u"\u3384\u3385\u3386\u3387\u3388\u3389\u338A\u338B\u338E\u338F" # ㎄㎅㎆㎇㎈㎉㎊㎋㎎㎏ + u"\u3390\u3391\u3392\u3393\u3394\u3399\u339A\u339C\u339D\u339E" # ㎐㎑㎒㎓㎔㎙㎚㎜㎝㎞ + u"\u33A9\u33AA\u33AB\u33AC\u33AD\u33B0\u33B1\u33B3\u33B4\u33B5" # ㎩㎪㎫㎬㎭㎰㎱㎳㎴㎵ + u"\u33B7\u33B8\u33B9\u33BA\u33BB\u33BD\u33BE\u33BF\u33C2\u33C3" # ㎷㎸㎹㎺㎻㎽㎾㎿㏂㏃ + u"\u33C4\u33C5\u33C7\u33C8\u33C9\u33CA\u33CB\u33CC\u33CD\u33CE" # ㏄㏅㏇㏈㏉㏊㏋㏌㏍㏎ + u"\u33CF\u33D0\u33D1\u33D2\u33D3\u33D4\u33D5\u33D6\u33D7\u33D8" # ㏏㏐㏑㏒㏓㏔㏕㏖㏗㏘ + u"\u33D9\u33DA\u33DB\u33DC\u33DD\u249C\u249D\u249E\u249F\u24A0" # ㏙㏚㏛㏜㏝⒜⒝⒞⒟⒠ + u"\u24A1\u24A2\u24A3\u24A4\u24A5\u24A6\u24A7\u24A8\u24A9\u24AA" # ⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪ + u"\u24AB\u24AC\u24AD\u24AE\u24AF\u24B0\u24B1\u24B2\u24B3\u24B4" # ⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴ + u"\u24B5\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168" # ⒵ⅠⅡⅢⅣⅤⅥⅦⅧⅨ + u"\u2169\u216A\u216B\u216C\u216D\u216E\u216F\u2170\u2171\u2172" # ⅩⅪⅫⅬⅭⅮⅯⅰⅱⅲ + u"\u2173\u2174\u2175\u2176\u2177\u2178\u2179\u217A\u217B\u217C" # ⅳⅴⅵⅶⅷⅸⅹⅺⅻⅼ + u"\u217D\u217E\u217F\u2474\u2475\u2476\u2477\u2478\u2479\u247A" # ⅽⅾⅿ⑴⑵⑶⑷⑸⑹⑺ + u"\u247B\u247C\u247D\u247E\u247F\u2480\u2481\u2482\u2483\u2484" # ⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄ + u"\u2485\u2486\u2487\u2488\u2489\u248A\u248B\u248C\u248D\u248E" # ⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎ + u"\u248F\u2490\u2491\u2492\u2493\u2494\u2495\u2496\u2497\u2498" # ⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘ + u"\u2499\u249A\u249B\uFF10\uFF11\uFF12\uFF13\uFF14\uFF15\uFF16" # ⒙⒚⒛0123456 + u"\uFF17\uFF18\uFF19\u2002\u2003\u2004\u2005\u2006\u2007\u2008" # 789\u2002\u2003\u2004\u2005\u2006\u2007\u2008 + u"\u2009\u200A\u205F\uFF02\uFF07\uFE63\uFF0D\u2024\u2025\u2026" # \u2009\u200A\u205F"'﹣-․‥… + u"\u203C\u2047\u2048\u2049\uFE10\uFE13\uFE14\uFE15\uFE16\uFE19" # ‼⁇⁈⁉︐︓︔︕︖︙ + u"\uFE30\uFE35\uFE36\uFE37\uFE38\uFE47\uFE48\uFE50\uFE52\uFE54" # ︰︵︶︷︸﹇﹈﹐﹒﹔ + u"\uFE55\uFE56\uFE57\uFE59\uFE5A\uFE5B\uFE5C\uFE5F\uFE60\uFE61" # ﹕﹖﹗﹙﹚﹛﹜﹟﹠﹡ + u"\uFE62\uFE64\uFE65\uFE66\uFE68\uFE69\uFE6A\uFE6B\uFF01\uFF03" # ﹢﹤﹥﹦﹨﹩﹪﹫!# + u"\uFF04\uFF05\uFF06\uFF08\uFF09\uFF0A\uFF0B\uFF0C\uFF0E\uFF0F" # $%&()*+,./ + u"\uFF1A\uFF1B\uFF1C\uFF1D\uFF1E\uFF1F\uFF20\uFF3B\uFF3C\uFF3D" # :;<=>?@[\] + u"\uFF3E\uFF3F\uFF40\uFF5B\uFF5C\uFF5D\uFF5E\u2A74\u2A75\u2A76" # ^_`{|}~⩴⩵⩶ +) compatibility_to = ( u"IJijsLJLjljNJNjnjDZDzdzfffiflffifflststABCDEFGHIJKLMNOPQRSTU" u"VWXYZabcdefghijklmnopqrstuvwxyza/ca/sCc/oc/ugHHH" @@ -59,49 +59,49 @@ compatibility_to = ( u"18.19.20.0123456789 \"'--......!!???!!?,:;!?..." u"..(){}[],.;:?!(){}#&*+<>=\\$%@!#$%&()*+,./" u":;<=>?@[\\]^_`{|}~::======" - ) +) compatibility_from += ( - u"\u1D00\u1D04\u1D05\u1D07\u1D0A\u1D0B\u1D0D\u1D0F\u1D18\u1D1B" # ᴀᴄᴅᴇᴊᴋᴍᴏᴘᴛ - u"\u1D1C\u1D20\u1D21\u1D22\u3007\u00A0\u3000" # ᴜᴠᴡᴢ〇\u00A0\u3000 - ) + u"\u1D00\u1D04\u1D05\u1D07\u1D0A\u1D0B\u1D0D\u1D0F\u1D18\u1D1B" # ᴀᴄᴅᴇᴊᴋᴍᴏᴘᴛ + u"\u1D1C\u1D20\u1D21\u1D22\u3007\u00A0\u3000" # ᴜᴠᴡᴢ〇\u00A0\u3000 +) compatibility_to += u"ACDEJKMOPTUVWZ0 " punctuation_from = ( - u"\u2018\u2019\u201A\u201B\u201C\u201D\u201E\u201F\u2032\u301D" # ‘’‚‛“”„‟′〝 - u"\u301E\u00AB\u00BB\u2039\u203A\u00AD\u2010\u2012\u2013\u2014" # 〞«»‹›\u00AD‐‒–— - u"\u2015\u2016\u2044\u2045\u2046\u204E\u3008\u3009\u300A\u300B" # ―‖⁄⁅⁆⁎〈〉《》 - u"\u3014\u3015\u3018\u3019\u301A\u301B\u2212\u2215\u2216\u2223" # 〔〕〘〙〚〛−∕∖∣ - u"\u2225\u226A\u226B\u2985\u2986\u200B" # ∥≪≫⦅⦆· - ) + u"\u2018\u2019\u201A\u201B\u201C\u201D\u201E\u201F\u2032\u301D" # ‘’‚‛“”„‟′〝 + u"\u301E\u00AB\u00BB\u2039\u203A\u00AD\u2010\u2012\u2013\u2014" # 〞«»‹›\u00AD‐‒–— + u"\u2015\u2016\u2044\u2045\u2046\u204E\u3008\u3009\u300A\u300B" # ―‖⁄⁅⁆⁎〈〉《》 + u"\u3014\u3015\u3018\u3019\u301A\u301B\u2212\u2215\u2216\u2223" # 〔〕〘〙〚〛−∕∖∣ + u"\u2225\u226A\u226B\u2985\u2986\u200B" # ∥≪≫⦅⦆· +) punctuation_to = u"''''\"\"\"\"'\"\"<<>><>-----||/[]*<><<>>[][][]-/\\|||<<>>(())" combinations_from = ( - u"\u00C6\u00D0\u00D8\u00DE\u00DF\u00E6\u00F0\u00F8\u00FE\u0110" # ÆÐØÞßæðøþĐ - u"\u0111\u0126\u0127\u0131\u0138\u0141\u0142\u014A\u014B\u0152" # đĦħıĸŁłŊŋŒ - u"\u0153\u0166\u0167\u0180\u0181\u0182\u0183\u0187\u0188\u0189" # œŦŧƀƁƂƃƇƈƉ - u"\u018A\u018B\u018C\u0190\u0191\u0192\u0193\u0195\u0196\u0197" # ƊƋƌƐƑƒƓƕƖƗ - u"\u0198\u0199\u019A\u019D\u019E\u01A2\u01A3\u01A4\u01A5\u01AB" # ƘƙƚƝƞƢƣƤƥƫ - u"\u01AC\u01AD\u01AE\u01B2\u01B3\u01B4\u01B5\u01B6\u01E4\u01E5" # ƬƭƮƲƳƴƵƶǤǥ - u"\u0221\u0224\u0225\u0234\u0235\u0236\u0237\u0238\u0239\u023A" # ȡȤȥȴȵȶȷȸȹȺ - u"\u023B\u023C\u023D\u023E\u023F\u0240\u0243\u0244\u0246\u0247" # ȻȼȽȾȿɀɃɄɆɇ - u"\u0248\u0249\u024C\u024D\u024E\u024F\u0253\u0255\u0256\u0257" # ɈɉɌɍɎɏɓɕɖɗ - u"\u025B\u025F\u0260\u0261\u0262\u0266\u0267\u0268\u026A\u026B" # ɛɟɠɡɢɦɧɨɪɫ - u"\u026C\u026D\u0271\u0272\u0273\u0274\u027C\u027D\u027E\u0280" # ɬɭɱɲɳɴɼɽɾʀ - u"\u0282\u0288\u0289\u028B\u028F\u0290\u0291\u0299\u029B\u029C" # ʂʈʉʋʏʐʑʙʛʜ - u"\u029D\u029F\u02A0\u02A3\u02A5\u02A6\u02AA\u02AB\u1D03\u1D06" # ʝʟʠʣʥʦʪʫᴃᴆ - u"\u1D0C\u1D6B\u1D6C\u1D6D\u1D6E\u1D6F\u1D70\u1D71\u1D72\u1D73" # ᴌᵫᵬᵭᵮᵯᵰᵱᵲᵳ - u"\u1D74\u1D75\u1D76\u1D7A\u1D7B\u1D7D\u1D7E\u1D80\u1D81\u1D82" # ᵴᵵᵶᵺᵻᵽᵾᶀᶁᶂ - u"\u1D83\u1D84\u1D85\u1D86\u1D87\u1D88\u1D89\u1D8A\u1D8C\u1D8D" # ᶃᶄᶅᶆᶇᶈᶉᶊᶌᶍ - u"\u1D8E\u1D8F\u1D91\u1D92\u1D93\u1D96\u1D99\u1E9C\u1E9D\u1E9E" # ᶎᶏᶑᶒᶓᶖᶙẜẝẞ - u"\u1EFA\u1EFB\u1EFC\u1EFD\u1EFE\u1EFF\u00A9\u00AE\u20A0\u20A2" # ỺỻỼỽỾỿ©®₠₢ - u"\u20A3\u20A4\u20A7\u20BA\u20B9\u211E\u3001\u3002\u00D7\u00F7" # ₣₤₧₺₹℞、。×÷ - u"\u00B7\u1E9F\u0184\u0185\u01BE" # ·ẟƄƅƾ - ) + u"\u00C6\u00D0\u00D8\u00DE\u00DF\u00E6\u00F0\u00F8\u00FE\u0110" # ÆÐØÞßæðøþĐ + u"\u0111\u0126\u0127\u0131\u0138\u0141\u0142\u014A\u014B\u0152" # đĦħıĸŁłŊŋŒ + u"\u0153\u0166\u0167\u0180\u0181\u0182\u0183\u0187\u0188\u0189" # œŦŧƀƁƂƃƇƈƉ + u"\u018A\u018B\u018C\u0190\u0191\u0192\u0193\u0195\u0196\u0197" # ƊƋƌƐƑƒƓƕƖƗ + u"\u0198\u0199\u019A\u019D\u019E\u01A2\u01A3\u01A4\u01A5\u01AB" # ƘƙƚƝƞƢƣƤƥƫ + u"\u01AC\u01AD\u01AE\u01B2\u01B3\u01B4\u01B5\u01B6\u01E4\u01E5" # ƬƭƮƲƳƴƵƶǤǥ + u"\u0221\u0224\u0225\u0234\u0235\u0236\u0237\u0238\u0239\u023A" # ȡȤȥȴȵȶȷȸȹȺ + u"\u023B\u023C\u023D\u023E\u023F\u0240\u0243\u0244\u0246\u0247" # ȻȼȽȾȿɀɃɄɆɇ + u"\u0248\u0249\u024C\u024D\u024E\u024F\u0253\u0255\u0256\u0257" # ɈɉɌɍɎɏɓɕɖɗ + u"\u025B\u025F\u0260\u0261\u0262\u0266\u0267\u0268\u026A\u026B" # ɛɟɠɡɢɦɧɨɪɫ + u"\u026C\u026D\u0271\u0272\u0273\u0274\u027C\u027D\u027E\u0280" # ɬɭɱɲɳɴɼɽɾʀ + u"\u0282\u0288\u0289\u028B\u028F\u0290\u0291\u0299\u029B\u029C" # ʂʈʉʋʏʐʑʙʛʜ + u"\u029D\u029F\u02A0\u02A3\u02A5\u02A6\u02AA\u02AB\u1D03\u1D06" # ʝʟʠʣʥʦʪʫᴃᴆ + u"\u1D0C\u1D6B\u1D6C\u1D6D\u1D6E\u1D6F\u1D70\u1D71\u1D72\u1D73" # ᴌᵫᵬᵭᵮᵯᵰᵱᵲᵳ + u"\u1D74\u1D75\u1D76\u1D7A\u1D7B\u1D7D\u1D7E\u1D80\u1D81\u1D82" # ᵴᵵᵶᵺᵻᵽᵾᶀᶁᶂ + u"\u1D83\u1D84\u1D85\u1D86\u1D87\u1D88\u1D89\u1D8A\u1D8C\u1D8D" # ᶃᶄᶅᶆᶇᶈᶉᶊᶌᶍ + u"\u1D8E\u1D8F\u1D91\u1D92\u1D93\u1D96\u1D99\u1E9C\u1E9D\u1E9E" # ᶎᶏᶑᶒᶓᶖᶙẜẝẞ + u"\u1EFA\u1EFB\u1EFC\u1EFD\u1EFE\u1EFF\u00A9\u00AE\u20A0\u20A2" # ỺỻỼỽỾỿ©®₠₢ + u"\u20A3\u20A4\u20A7\u20BA\u20B9\u211E\u3001\u3002\u00D7\u00F7" # ₣₤₧₺₹℞、。×÷ + u"\u00B7\u1E9F\u0184\u0185\u01BE" # ·ẟƄƅƾ +) combinations_to = ( u"AEDOETHssaedoethDdHhiqLlNnOEoeTtbBBbCcDDDdEFfGhvII" u"KklNnGHghPptTtTVYyZzGgdZzlntjdbqpACcLTszBUEe" u"JjRrYybcddejggGhhiIlllmnnNrrrRstuvYzzBGH" u"jLqdzdztslslzBDLuebdfmnprrstzthIpUbdfgklmnprsvx" u"zadeeiussSSLLllVvYy(C)(R)CECrFr.L.PtsTLRsRx,.x/.ddHhts" - ) +) ascii_chars = u" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" @@ -159,10 +159,10 @@ class CombinationsTest(PicardTestCase): class AsciiPunctTest(PicardTestCase): def test_correct(self): - self.assertEqual(util.textencoding.asciipunct(u"‘Test’"), u"'Test'") # Quotations - self.assertEqual(util.textencoding.asciipunct(u"“Test”"), u"\"Test\"") # Quotations - self.assertEqual(util.textencoding.asciipunct(u"1′6″"), u"1'6\"") # Quotations - self.assertEqual(util.textencoding.asciipunct(u"…"), u"...") # Ellipses + self.assertEqual(util.textencoding.asciipunct(u"‘Test’"), u"'Test'") # Quotations + self.assertEqual(util.textencoding.asciipunct(u"“Test”"), u"\"Test\"") # Quotations + self.assertEqual(util.textencoding.asciipunct(u"1′6″"), u"1'6\"") # Quotations + self.assertEqual(util.textencoding.asciipunct(u"…"), u"...") # Ellipses def test_incorrect(self): pass @@ -192,15 +192,15 @@ class ReplaceNonAsciiTest(PicardTestCase): self.assertEqual(util.textencoding.replace_non_ascii(u"Ænima"), u"AEnima") self.assertEqual(util.textencoding.replace_non_ascii(u"ænima"), u"aenima") self.assertEqual(util.textencoding.replace_non_ascii(u"小室哲哉"), u"____") - self.assertEqual(util.textencoding.replace_non_ascii(u"ᴀᴄᴇ"), u"ACE") # Latin Letter Small - self.assertEqual(util.textencoding.replace_non_ascii(u"Abc"), u"Abc") # Fullwidth Latin - self.assertEqual(util.textencoding.replace_non_ascii(u"500㎏,2㎓"), u"500kg,2GHz") # Technical - self.assertEqual(util.textencoding.replace_non_ascii(u"⒜⒝⒞"), u"(a)(b)(c)") # Parenthesised Latin - self.assertEqual(util.textencoding.replace_non_ascii(u"ⅯⅯⅩⅣ"), u"MMXIV") # Roman numerals - self.assertEqual(util.textencoding.replace_non_ascii(u"ⅿⅿⅹⅳ"), u"mmxiv") # Roman numerals small - self.assertEqual(util.textencoding.replace_non_ascii(u"⑴⑵⑶"), u"(1)(2)(3)") # Parenthesised numbers - self.assertEqual(util.textencoding.replace_non_ascii(u"⒈ ⒉ ⒊"), u"1. 2. 3.") # Digit full stop - self.assertEqual(util.textencoding.replace_non_ascii(u"123"), u"123") # Fullwidth digits + self.assertEqual(util.textencoding.replace_non_ascii(u"ᴀᴄᴇ"), u"ACE") # Latin Letter Small + self.assertEqual(util.textencoding.replace_non_ascii(u"Abc"), u"Abc") # Fullwidth Latin + self.assertEqual(util.textencoding.replace_non_ascii(u"500㎏,2㎓"), u"500kg,2GHz") # Technical + self.assertEqual(util.textencoding.replace_non_ascii(u"⒜⒝⒞"), u"(a)(b)(c)") # Parenthesised Latin + self.assertEqual(util.textencoding.replace_non_ascii(u"ⅯⅯⅩⅣ"), u"MMXIV") # Roman numerals + self.assertEqual(util.textencoding.replace_non_ascii(u"ⅿⅿⅹⅳ"), u"mmxiv") # Roman numerals small + self.assertEqual(util.textencoding.replace_non_ascii(u"⑴⑵⑶"), u"(1)(2)(3)") # Parenthesised numbers + self.assertEqual(util.textencoding.replace_non_ascii(u"⒈ ⒉ ⒊"), u"1. 2. 3.") # Digit full stop + self.assertEqual(util.textencoding.replace_non_ascii(u"123"), u"123") # Fullwidth digits def test_pathsave(self): expected = '__/8 1_2\\' if IS_WIN else '\\_/8 1_2\\' @@ -213,6 +213,7 @@ class ReplaceNonAsciiTest(PicardTestCase): self.assertNotEqual(util.textencoding.replace_non_ascii(u"Lukáš"), u"Lukáš") self.assertNotEqual(util.textencoding.replace_non_ascii(u"Lukáš"), u"Luk____") + if show_latin2ascii_coverage: # The following code set blocks are taken from: # http://en.wikipedia.org/wiki/Latin_script_in_Unicode @@ -240,13 +241,13 @@ if show_latin2ascii_coverage: print("The following lines show the coverage of Latin characters conversion to ascii.") print("Underscores are characters which currently do not have an ASCII representation.") print() - print("latin-1: ",util.textencoding.replace_non_ascii(latin_1)) - print("latin-1: ",util.textencoding.replace_non_ascii(latin_1)) - print("latin-a: ",util.textencoding.replace_non_ascii(latin_a)) - print("latin-b: ",util.textencoding.replace_non_ascii(latin_b)) - print("ipa-ext: ",util.textencoding.replace_non_ascii(ipa_ext)) - print("phonetic: ",util.textencoding.replace_non_ascii(phonetic)) - print("latin-ext-add: ",util.textencoding.replace_non_ascii(latin_ext_add)) - print("letter-like: ",util.textencoding.replace_non_ascii(letter_like)) - print("enclosed: ",util.textencoding.replace_non_ascii(enclosed)) + print("latin-1: ", util.textencoding.replace_non_ascii(latin_1)) + print("latin-1: ", util.textencoding.replace_non_ascii(latin_1)) + print("latin-a: ", util.textencoding.replace_non_ascii(latin_a)) + print("latin-b: ", util.textencoding.replace_non_ascii(latin_b)) + print("ipa-ext: ", util.textencoding.replace_non_ascii(ipa_ext)) + print("phonetic: ", util.textencoding.replace_non_ascii(phonetic)) + print("latin-ext-add: ", util.textencoding.replace_non_ascii(latin_ext_add)) + print("letter-like: ", util.textencoding.replace_non_ascii(letter_like)) + print("enclosed: ", util.textencoding.replace_non_ascii(enclosed)) print() diff --git a/test/test_util_lrucache.py b/test/test_util_lrucache.py index 07c39d591..829d86efd 100644 --- a/test/test_util_lrucache.py +++ b/test/test_util_lrucache.py @@ -37,7 +37,7 @@ class LRUCacheTest(PicardTestCase): self.assertEqual('test3', lrucache._ordered_keys[0]) self.assertEqual('test2', lrucache._ordered_keys[1]) self.assertEqual('test1', lrucache._ordered_keys[2]) - v = lrucache['test2'] + self.assertEqual(2, lrucache['test2']) self.assertEqual('test2', lrucache._ordered_keys[0]) self.assertEqual('test3', lrucache._ordered_keys[1]) self.assertEqual('test1', lrucache._ordered_keys[2]) diff --git a/test/test_util_natsort.py b/test/test_util_natsort.py index ee4f13f4d..43da5861d 100644 --- a/test/test_util_natsort.py +++ b/test/test_util_natsort.py @@ -1,6 +1,4 @@ # -*- coding: utf-8 -*- -import unittest - from test.picardtestcase import PicardTestCase from picard.util import natsort @@ -13,7 +11,7 @@ class NatsortTest(PicardTestCase): self.assertTrue(natsort.natkey('foo (100)') < natsort.natkey('foo (00200)')) def test_natsorted(self): - l = ['foo11', 'foo0012', 'foo02', 'foo0', 'foo1', 'foo10', 'foo9'] - ls = natsort.natsorted(l) - self.assertEqual( - ['foo0', 'foo1', 'foo02', 'foo9', 'foo10', 'foo11', 'foo0012'], ls) + unsorted_list = ['foo11', 'foo0012', 'foo02', 'foo0', 'foo1', 'foo10', 'foo9'] + expected = ['foo0', 'foo1', 'foo02', 'foo9', 'foo10', 'foo11', 'foo0012'] + sorted_list = natsort.natsorted(unsorted_list) + self.assertEqual(expected, sorted_list) diff --git a/test/test_versions.py b/test/test_versions.py index c60cde7af..5bc157312 100644 --- a/test/test_versions.py +++ b/test/test_versions.py @@ -18,7 +18,7 @@ from picard.version import ( class VersionsTest(PicardTestCase): def test_version_conversion(self): - versions = ( + versions = ( (Version(1, 1, 0, 'final', 0), '1.1.0.final0'), (Version(0, 0, 1, 'dev', 1), '0.0.1.dev1'), (Version(1, 1, 0, 'dev', 0), '1.1.0.dev0'), @@ -36,7 +36,7 @@ class VersionsTest(PicardTestCase): self.assertEqual(v, version_from_string(s)) def test_version_conversion_short(self): - versions = ( + versions = ( (Version(1, 1, 0, 'final', 0), '1.1'), (Version(1, 1, 1, 'final', 0), '1.1.1'), (Version(0, 0, 1, 'dev', 1), '0.0.1.dev1'), @@ -54,8 +54,8 @@ class VersionsTest(PicardTestCase): self.assertEqual(v, version_from_string(s)) def test_version_to_string_invalid_identifier(self): - l = (1, 0, 2, 'xx', 0) - self.assertRaises(VersionError, version_to_string, (l)) + invalid = (1, 0, 2, 'xx', 0) + self.assertRaises(VersionError, version_to_string, (invalid)) def test_version_from_string_underscores(self): l, s = (1, 1, 0, 'dev', 0), '1_1_0_dev_0' @@ -66,8 +66,8 @@ class VersionsTest(PicardTestCase): self.assertEqual(l, version_from_string(s)) def test_version_from_string_invalid(self): - l = 'anything_28x_1_0_dev_0' - self.assertRaises(VersionError, version_to_string, (l)) + invalid = 'anything_28x_1_0_dev_0' + self.assertRaises(VersionError, version_to_string, (invalid)) def test_version_from_string_prefixed_final(self): l, s = (1, 1, 0, 'final', 0), 'anything_28_1_1_0'