Unify File::save(...) APIs between file formats that support ID3v2

Closes #922
This commit is contained in:
Scott Wheeler
2019-09-11 05:55:30 +02:00
parent 0b99cd9bac
commit f1b40de66b
6 changed files with 84 additions and 7 deletions

View File

@ -40,6 +40,7 @@ class TestAIFF : public CppUnit::TestFixture
CPPUNIT_TEST(testAiffProperties);
CPPUNIT_TEST(testAiffCProperties);
CPPUNIT_TEST(testSaveID3v2);
CPPUNIT_TEST(testSaveID3v23);
CPPUNIT_TEST(testDuplicateID3v2);
CPPUNIT_TEST(testFuzzedFile1);
CPPUNIT_TEST(testFuzzedFile2);
@ -105,6 +106,29 @@ public:
}
}
void testSaveID3v23()
{
ScopedFileCopy copy("empty", ".aiff");
string newname = copy.fileName();
String xxx = ByteVector(254, 'X');
{
RIFF::AIFF::File f(newname.c_str());
CPPUNIT_ASSERT_EQUAL(false, f.hasID3v2Tag());
f.tag()->setTitle(xxx);
f.tag()->setArtist("Artist A");
f.save(ID3v2::v3);
CPPUNIT_ASSERT_EQUAL(true, f.hasID3v2Tag());
}
{
RIFF::AIFF::File f2(newname.c_str());
CPPUNIT_ASSERT_EQUAL((unsigned int)3, f2.tag()->header()->majorVersion());
CPPUNIT_ASSERT_EQUAL(String("Artist A"), f2.tag()->artist());
CPPUNIT_ASSERT_EQUAL(xxx, f2.tag()->title());
}
}
void testDuplicateID3v2()
{
ScopedFileCopy copy("duplicate_id3v2", ".aiff");

View File

@ -44,6 +44,7 @@ class TestWAV : public CppUnit::TestFixture
CPPUNIT_TEST(testFloatProperties);
CPPUNIT_TEST(testZeroSizeDataChunk);
CPPUNIT_TEST(testID3v2Tag);
CPPUNIT_TEST(testSaveID3v23);
CPPUNIT_TEST(testInfoTag);
CPPUNIT_TEST(testStripTags);
CPPUNIT_TEST(testDuplicateTags);
@ -139,6 +140,29 @@ public:
}
}
void testSaveID3v23()
{
ScopedFileCopy copy("empty", ".wav");
string newname = copy.fileName();
String xxx = ByteVector(254, 'X');
{
RIFF::WAV::File f(newname.c_str());
CPPUNIT_ASSERT_EQUAL(false, f.hasID3v2Tag());
f.tag()->setTitle(xxx);
f.tag()->setArtist("Artist A");
f.save(RIFF::WAV::File::AllTags, File::StripOthers, ID3v2::v3);
CPPUNIT_ASSERT_EQUAL(true, f.hasID3v2Tag());
}
{
RIFF::WAV::File f2(newname.c_str());
CPPUNIT_ASSERT_EQUAL((unsigned int)3, f2.ID3v2Tag()->header()->majorVersion());
CPPUNIT_ASSERT_EQUAL(String("Artist A"), f2.tag()->artist());
CPPUNIT_ASSERT_EQUAL(xxx, f2.tag()->title());
}
}
void testInfoTag()
{
ScopedFileCopy copy("empty", ".wav");
@ -191,7 +215,7 @@ public:
RIFF::WAV::File f(filename.c_str());
CPPUNIT_ASSERT(f.hasID3v2Tag());
CPPUNIT_ASSERT(f.hasInfoTag());
f.save(RIFF::WAV::File::ID3v2, true);
f.save(RIFF::WAV::File::ID3v2, File::StripOthers);
}
{
RIFF::WAV::File f(filename.c_str());
@ -205,7 +229,7 @@ public:
RIFF::WAV::File f(filename.c_str());
CPPUNIT_ASSERT(f.hasID3v2Tag());
CPPUNIT_ASSERT(f.hasInfoTag());
f.save(RIFF::WAV::File::Info, true);
f.save(RIFF::WAV::File::Info, File::StripOthers);
}
{
RIFF::WAV::File f(filename.c_str());