def create_test_files(): test_images = [ CoverArtImage(url='file://file1', data=create_fake_png(b'a')), CoverArtImage(url='file://file2', data=create_fake_png(b'b')), ] test_files = [File('test1.flac'), File('test2.flac'), File('test2.flac')] test_files[0].metadata.append_image(test_images[0]) test_files[1].metadata.append_image(test_images[1]) test_files[2].metadata.append_image(test_images[1]) test_files[0].orig_metadata.append_image(test_images[0]) test_files[1].orig_metadata.append_image(test_images[1]) test_files[2].orig_metadata.append_image(test_images[1]) return (test_images, test_files)
def test_save_large_pics(self): # 16 MB image data = create_fake_png(b"a" * 1024 * 1024 * 16) image = CoverArtImage(data=data) file_save_image(self.filename, image) raw_metadata = load_raw(self.filename) # Images with more than 16 MB cannot be saved to FLAC self.assertEqual(0, len(raw_metadata.pictures))
def create_image(name, types): return CoverArtImage( url='file://file' + name, data=create_fake_png(name.encode('utf-8')), types=types, support_types=True, support_multi_types=True )
def create_test_files(): test_images = [ CoverArtImage(url='file://file1', data=create_fake_png(b'a')), CoverArtImage(url='file://file2', data=create_fake_png(b'b')), ] test_files = [ File('test1.flac'), File('test2.flac'), File('test2.flac') ] test_files[0].metadata.images.append(test_images[0]) test_files[1].metadata.images.append(test_images[1]) test_files[2].metadata.images.append(test_images[1]) test_files[0].orig_metadata.images.append(test_images[0]) test_files[1].orig_metadata.images.append(test_images[1]) test_files[2].orig_metadata.images.append(test_images[1]) return (test_images, test_files)
def create_image(extra_data, types=None, support_types=False, support_multi_types=False, comment=None): return CoverArtImage( data=create_fake_png(extra_data), types=types, comment=comment, support_types=support_types, support_multi_types=support_multi_types, )
def test_metadata_init_with_existing_metadata(self): self.metadata.delete("single1") cover = CoverArtImage(url='file://file1', data=create_fake_png(b'a')) self.metadata.images.append(cover) m = Metadata(self.metadata) self.assertEqual(self.metadata.length, m.length) self.assertEqual(self.metadata.deleted_tags, m.deleted_tags) self.assertEqual(self.metadata.images, m.images) self.assertEqual(self.metadata._store, m._store)
def test_set_data(self): imgdata = create_fake_png(b'a') imgdata2 = create_fake_png(b'xxx') # set data once coverartimage = CoverArtImage(data=imgdata2) tmp_file = coverartimage.tempfile_filename filesize = os.path.getsize(tmp_file) # ensure file was written, and check its length self.assertEqual(filesize, len(imgdata2)) self.assertEqual(coverartimage.data, imgdata2) # set data again, with another payload coverartimage.set_data(imgdata) tmp_file = coverartimage.tempfile_filename filesize = os.path.getsize(tmp_file) # check file length again self.assertEqual(filesize, len(imgdata)) self.assertEqual(coverartimage.data, imgdata)
def create_image(extra_data, types=None, support_types=False, support_multi_types=False, comment=None, id3_type=None): return CoverArtImage( data=create_fake_png(extra_data), types=types, comment=comment, support_types=support_types, support_multi_types=support_multi_types, id3_type=id3_type, )
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
def _test_invalid_picture(self, invalid_picture_data): png_data = create_fake_png(b'x') tags = { 'WM/Picture': [ ASFByteArrayAttribute(invalid_picture_data), ASFByteArrayAttribute(asf.pack_image( "image/png", png_data)) ] } save_raw(self.filename, tags) metadata = load_metadata(self.filename) self.assertEqual(1, len(metadata.images)) self.assertEqual(png_data, metadata.images[0].data)
def test_pack_and_unpack_image(self): mime = 'image/png' image_data = create_fake_png(b'x') image_type = 4 description = 'testing' tag_data = asf.pack_image(mime, image_data, image_type, description) expected_length = 5 + 2 * len(mime) + 2 + 2 * len(description) + 2 + len(image_data) self.assertEqual(tag_data[0], image_type) self.assertEqual(len(tag_data), expected_length) self.assertEqual(image_data, tag_data[-len(image_data):]) unpacked = asf.unpack_image(tag_data) self.assertEqual(mime, unpacked[0]) self.assertEqual(image_data, unpacked[1]) self.assertEqual(image_type, unpacked[2]) self.assertEqual(description, unpacked[3])
def test_metadata_update(self): m = Metadata() m["old"] = "old-value" self.metadata.delete("single1") cover = CoverArtImage(url='file://file1', data=create_fake_png(b'a')) self.metadata.images.append(cover) m.update(self.metadata) self.assertIn("old", m) self.assertNotIn("single1", m) self.assertIn("single1", m.deleted_tags) self.assertEqual("single2-value", m["single2"]) self.assertEqual(self.metadata.length, m.length) self.assertEqual(self.metadata.deleted_tags, m.deleted_tags) self.assertEqual(self.metadata.images, m.images) self.metadata["old"] = "old-value" self.assertEqual(self.metadata._store, m._store)
def test_clear_tags_preserve_images_all(self): imagedata = APEValue(b'filename.png\0' + create_fake_png(b'a'), BINARY) save_raw( self.filename, { 'Cover Art (Front)': imagedata, 'Cover Art': imagedata, 'Cover Art (foo)': imagedata, 'cover art (bar)': imagedata, }) config.setting['clear_existing_tags'] = True config.setting['preserve_images'] = True metadata = save_and_load_metadata(self.filename, Metadata()) self.assertEqual(4, len(metadata.images)) config.setting['preserve_images'] = False metadata = save_and_load_metadata(self.filename, Metadata()) self.assertEqual(0, len(metadata.images))