예제 #1
0
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)
예제 #2
0
 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))
예제 #3
0
 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
     )
예제 #4
0
 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
     )
예제 #5
0
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)
예제 #6
0
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,
    )
예제 #7
0
 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)
예제 #8
0
    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)
예제 #9
0
    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)
예제 #10
0
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,
    )
예제 #11
0
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
예제 #12
0
 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)
예제 #13
0
    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])
예제 #14
0
 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)
예제 #15
0
파일: test_apev2.py 프로젝트: ruipin/picard
 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))