1# Copyright 2013 Christoph Reiter 2# 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 2 of the License, or 6# (at your option) any later version. 7 8from tests import TestCase, get_data_path, mkstemp 9 10import os 11 12from quodlibet.formats import AudioFile, EmbeddedImage, APICType 13 14 15class TAPICType(TestCase): 16 17 def test_basic(self): 18 self.assertEqual(APICType.COVER_FRONT, 3) 19 20 def test_sort_key(self): 21 values = [ 22 APICType.OTHER, APICType.COVER_FRONT, APICType.FILE_ICON, 23 APICType.ARTIST, APICType.PUBLISHER_LOGOTYPE 24 ] 25 26 values.sort(key=APICType.sort_key, reverse=True) 27 28 wanted = [ 29 APICType.OTHER, APICType.FILE_ICON, APICType.PUBLISHER_LOGOTYPE, 30 APICType.ARTIST, APICType.COVER_FRONT 31 ] 32 33 self.assertEqual(values, wanted) 34 35 36class TImageContainer(TestCase): 37 38 def setUp(self): 39 self.a = AudioFile() 40 41 def test_default_get(self): 42 self.assertFalse(self.a.get_primary_image()) 43 44 def test_has_image(self): 45 self.assertFalse(self.a.has_images) 46 self.a["~picture"] = "y" 47 self.assertTrue(self.a.has_images) 48 self.a.has_images = False 49 self.assertFalse(self.a.has_images) 50 51 def test_default_can_change(self): 52 self.assertFalse(self.a.can_change_images) 53 54 55class TEmbeddedImages(TestCase): 56 57 def setUp(self): 58 from gi.repository import GdkPixbuf 59 60 h, self.filename = mkstemp() 61 os.close(h) 62 pb = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB, True, 8, 150, 10) 63 pb.savev(self.filename, "png", [], []) 64 65 def tearDown(self): 66 os.remove(self.filename) 67 68 def test_repr(self): 69 image = EmbeddedImage.from_path(self.filename) 70 repr(image) 71 72 def test_from_path(self): 73 image = EmbeddedImage.from_path(self.filename) 74 self.assertTrue(image) 75 self.assertEqual(image.file.name, self.filename) 76 self.assertEqual(image.mime_type, "image/png") 77 self.assertEqual(image.width, 150) 78 self.assertEqual(image.height, 10) 79 self.assertEqual(image.color_depth, 8) 80 81 def test_from_path_bogus(self): 82 image = EmbeddedImage.from_path(self.filename + "nope") 83 self.assertFalse(image) 84 85 def test_not_an_image(self): 86 path = get_data_path('test-2.wma') 87 image = EmbeddedImage.from_path(path) 88 self.assertFalse(image) 89 90 def test_get_extensions(self): 91 image = EmbeddedImage.from_path(self.filename) 92 self.assertTrue("png" in image.extensions) 93 94 def test_from_path_empty(self): 95 h, empty = mkstemp() 96 os.close(h) 97 try: 98 image = EmbeddedImage.from_path(empty) 99 self.assertFalse(image) 100 finally: 101 os.remove(empty) 102