normalized_types(): ensure front type is first and the rest sorted

It fixes a minor issue where back cover could appear before front cover in dialogs showing those
This commit is contained in:
Laurent Monin
2024-05-19 13:01:00 +02:00
committed by Philipp Wolfer
parent 970c6d3b61
commit 86736c5cc1
2 changed files with 14 additions and 2 deletions

View File

@@ -414,8 +414,12 @@ class CoverArtImage:
return self.datahash.filename
def normalized_types(self):
if self.types:
types = sorted(set(self.types))
if self.types and self.support_types:
# ensure front type is first, if any
# the rest is sorted
types_front = ['front'] if 'front' in self.types else []
types_without_front = sorted(set(t for t in self.types if t != 'front'))
types = types_front + types_without_front
elif self.is_front_image():
types = ['front']
else:

View File

@@ -124,6 +124,14 @@ class CoverArtImageTest(PicardTestCase):
self.assertEqual("back", create_image(b'a', types=["back", "medium"], support_types=True).maintype)
self.assertEqual("front", create_image(b'a', types=["back", "medium"], support_types=False).maintype)
def test_normalized_types(self):
self.assertEqual(["front"], create_image(b'a').normalized_types())
self.assertEqual(["-"], create_image(b'a', support_types=True).normalized_types())
self.assertEqual(["front"], create_image(b'a', types=["front"], support_types=True).normalized_types())
self.assertEqual(["front", "back"], create_image(b'a', types=["back", "front"], support_types=True).normalized_types())
self.assertEqual(["back", "medium"], create_image(b'a', types=["medium", "back"], support_types=True).normalized_types())
self.assertEqual(["front"], create_image(b'a', types=["back", "medium"], support_types=False).normalized_types())
def test_id3_type_derived(self):
self.assertEqual(Id3ImageType.COVER_FRONT, create_image(b'a').id3_type)
self.assertEqual(Id3ImageType.COVER_FRONT, create_image(b'a', support_types=True).id3_type)