Files
picard/test/test_coverart_image.py
Philipp Wolfer ccebf9c8b9 Refactored local cover art class
Generalized the handling of cover art URLs to also handle file:// scheme.
2019-02-22 14:14:00 +01:00

103 lines
4.2 KiB
Python

#!/usr/bin/env python
# coding: utf-8
from test.picardtestcase import (
PicardTestCase,
create_fake_png,
)
from picard.coverart.image import (
CoverArtImage,
LocalFileCoverArtImage,
)
def create_image(extra_data, types=None, support_types=False,
support_multi_types=False):
image = CoverArtImage(
data=create_fake_png(extra_data),
types=types,
)
image.support_types = support_types
image.support_multi_types = support_multi_types
return image
class CoverArtImageTest(PicardTestCase):
def test_is_front_image_no_types(self):
image = create_image(b'a')
self.assertTrue(image.is_front_image())
image.can_be_saved_to_metadata = False
self.assertFalse(image.is_front_image())
def test_is_front_image_types_supported(self):
image = create_image(b'a', types=["booklet", "front"], support_types=True)
self.assertTrue(image.is_front_image())
image.is_front = False
self.assertFalse(image.is_front_image())
image = create_image(b'a', support_types=True)
self.assertFalse(image.is_front_image())
def test_is_front_image_no_types_supported(self):
image = create_image(b'a', types=["back"], support_types=False)
self.assertTrue(image.is_front_image())
def test_maintype(self):
self.assertEqual("front", create_image(b'a').maintype)
self.assertEqual("front", create_image(b'a', support_types=True).maintype)
self.assertEqual("front", create_image(b'a', types=["back", "front"], support_types=True).maintype)
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_compare_without_type(self):
image1 = create_image(b'a', types=["front"])
image2 = create_image(b'a', types=["back"])
image3 = create_image(b'a', types=["back"], support_types=True)
image4 = create_image(b'b', types=["front"])
self.assertEqual(image1, image2)
self.assertEqual(image1, image3)
self.assertNotEqual(image1, image4)
def test_compare_with_primary_type(self):
image1 = create_image(b'a', types=["front"], support_types=True)
image2 = create_image(b'a', types=["front", "booklet"], support_types=True, support_multi_types=True)
image3 = create_image(b'a', types=["back"], support_types=True)
image4 = create_image(b'b', types=["front"], support_types=True)
image5 = create_image(b'a', types=[], support_types=True)
image6 = create_image(b'a', types=[], support_types=True)
self.assertEqual(image1, image2)
self.assertNotEqual(image1, image3)
self.assertNotEqual(image1, image4)
self.assertNotEqual(image3, image5)
self.assertEqual(image5, image6)
def test_compare_with_multiple_types(self):
image1 = create_image(b'a', types=["front"], support_types=True, support_multi_types=True)
image2 = create_image(b'a', types=["front", "booklet"], support_types=True, support_multi_types=True)
image3 = create_image(b'a', types=["front", "booklet"], support_types=True, support_multi_types=True)
image4 = create_image(b'b', types=["front", "booklet"], support_types=True, support_multi_types=True)
self.assertNotEqual(image1, image2)
self.assertEqual(image2, image3)
self.assertNotEqual(image2, image4)
class LocalFileCoverArtImageTest(PicardTestCase):
def test_set_file_url(self):
path = '/some/path/image.jpeg'
image = LocalFileCoverArtImage(path)
self.assertEqual(image.url.toString(), 'file://' + path)
def test_support_types(self):
path = '/some/path/image.jpeg'
image = LocalFileCoverArtImage(path)
self.assertFalse(image.support_types)
self.assertFalse(image.support_multi_types)
image = LocalFileCoverArtImage(path, support_types=True)
self.assertTrue(image.support_types)
self.assertFalse(image.support_multi_types)
image = LocalFileCoverArtImage(path, support_multi_types=True)
self.assertFalse(image.support_types)
self.assertTrue(image.support_multi_types)