mirror of
https://github.com/taglib/taglib.git
synced 2025-07-18 21:14:23 -04:00
Support for ASF embedded pictures
Patch by Anton Sergunov <setosha@gmail.com> CCMAIL: setosha@gmail.com git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@1214788 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
This commit is contained in:
@ -20,6 +20,8 @@ class TestASF : public CppUnit::TestFixture
|
||||
CPPUNIT_TEST(testSaveLanguage);
|
||||
CPPUNIT_TEST(testDWordTrackNumber);
|
||||
CPPUNIT_TEST(testSaveLargeValue);
|
||||
CPPUNIT_TEST(testSavePicture);
|
||||
CPPUNIT_TEST(testSaveMultiplePictures);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
public:
|
||||
@ -141,6 +143,78 @@ public:
|
||||
delete f;
|
||||
}
|
||||
|
||||
void testSavePicture()
|
||||
{
|
||||
ScopedFileCopy copy("silence-1", ".wma");
|
||||
string newname = copy.fileName();
|
||||
|
||||
ASF::File *f = new ASF::File(newname.c_str());
|
||||
ASF::AttributeList values;
|
||||
ASF::Picture picture;
|
||||
picture.setMimeType("image/jpeg");
|
||||
picture.setType(ASF::Picture::FrontCover);
|
||||
picture.setDescription("description");
|
||||
picture.setPicture("data");
|
||||
ASF::Attribute attr(picture);
|
||||
values.append(attr);
|
||||
f->tag()->attributeListMap()["WM/Picture"] = values;
|
||||
f->save();
|
||||
delete f;
|
||||
|
||||
f = new ASF::File(newname.c_str());
|
||||
ASF::AttributeList values2 = f->tag()->attributeListMap()["WM/Picture"];
|
||||
CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), values2.size());
|
||||
ASF::Attribute attr2 = values2.front();
|
||||
ASF::Picture picture2 = attr2.toPicture();
|
||||
CPPUNIT_ASSERT(picture2.isValid());
|
||||
CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), picture2.mimeType());
|
||||
CPPUNIT_ASSERT_EQUAL(ASF::Picture::FrontCover, picture2.type());
|
||||
CPPUNIT_ASSERT_EQUAL(String("description"), picture2.description());
|
||||
CPPUNIT_ASSERT_EQUAL(ByteVector("data"), picture2.picture());
|
||||
delete f;
|
||||
}
|
||||
|
||||
void testSaveMultiplePictures()
|
||||
{
|
||||
ScopedFileCopy copy("silence-1", ".wma");
|
||||
string newname = copy.fileName();
|
||||
|
||||
ASF::File *f = new ASF::File(newname.c_str());
|
||||
ASF::AttributeList values;
|
||||
ASF::Picture picture;
|
||||
picture.setMimeType("image/jpeg");
|
||||
picture.setType(ASF::Picture::FrontCover);
|
||||
picture.setDescription("description");
|
||||
picture.setPicture("data");
|
||||
values.append(ASF::Attribute(picture));
|
||||
ASF::Picture picture2;
|
||||
picture2.setMimeType("image/png");
|
||||
picture2.setType(ASF::Picture::BackCover);
|
||||
picture2.setDescription("back cover");
|
||||
picture2.setPicture("PNG data");
|
||||
values.append(ASF::Attribute(picture2));
|
||||
f->tag()->attributeListMap()["WM/Picture"] = values;
|
||||
f->save();
|
||||
delete f;
|
||||
|
||||
f = new ASF::File(newname.c_str());
|
||||
ASF::AttributeList values2 = f->tag()->attributeListMap()["WM/Picture"];
|
||||
CPPUNIT_ASSERT_EQUAL(TagLib::uint(2), values2.size());
|
||||
ASF::Picture picture3 = values2[1].toPicture();
|
||||
CPPUNIT_ASSERT(picture3.isValid());
|
||||
CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), picture3.mimeType());
|
||||
CPPUNIT_ASSERT_EQUAL(ASF::Picture::FrontCover, picture3.type());
|
||||
CPPUNIT_ASSERT_EQUAL(String("description"), picture3.description());
|
||||
CPPUNIT_ASSERT_EQUAL(ByteVector("data"), picture3.picture());
|
||||
ASF::Picture picture4 = values2[0].toPicture();
|
||||
CPPUNIT_ASSERT(picture4.isValid());
|
||||
CPPUNIT_ASSERT_EQUAL(String("image/png"), picture4.mimeType());
|
||||
CPPUNIT_ASSERT_EQUAL(ASF::Picture::BackCover, picture4.type());
|
||||
CPPUNIT_ASSERT_EQUAL(String("back cover"), picture4.description());
|
||||
CPPUNIT_ASSERT_EQUAL(ByteVector("PNG data"), picture4.picture());
|
||||
delete f;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(TestASF);
|
||||
|
@ -38,6 +38,7 @@ class TestByteVector : public CppUnit::TestFixture
|
||||
CPPUNIT_TEST(testRfind1);
|
||||
CPPUNIT_TEST(testRfind2);
|
||||
CPPUNIT_TEST(testToHex);
|
||||
CPPUNIT_TEST(testToUShort);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
public:
|
||||
@ -181,6 +182,15 @@ public:
|
||||
CPPUNIT_ASSERT_EQUAL(ByteVector("f0e1d2c3b4a5968778695a4b3c2d1e0f"), v.toHex());
|
||||
}
|
||||
|
||||
void testToUShort()
|
||||
{
|
||||
CPPUNIT_ASSERT_EQUAL((unsigned short)0xFFFF, ByteVector("\xff\xff", 2).toUShort());
|
||||
CPPUNIT_ASSERT_EQUAL((unsigned short)0x0001, ByteVector("\x00\x01", 2).toUShort());
|
||||
CPPUNIT_ASSERT_EQUAL((unsigned short)0x0100, ByteVector("\x00\x01", 2).toUShort(false));
|
||||
CPPUNIT_ASSERT_EQUAL((unsigned short)0xFF01, ByteVector("\xFF\x01", 2).toUShort());
|
||||
CPPUNIT_ASSERT_EQUAL((unsigned short)0x01FF, ByteVector("\xFF\x01", 2).toUShort(false));
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(TestByteVector);
|
||||
|
Reference in New Issue
Block a user