mirror of
				https://github.com/taglib/taglib.git
				synced 2025-11-03 16:26:18 -05:00 
			
		
		
		
	Simple ID3v2.4 => ID3v2.3 frame migration
This commit is contained in:
		@ -64,6 +64,7 @@ class TestID3v2 : public CppUnit::TestFixture
 | 
			
		||||
  CPPUNIT_TEST(testUpdateGenre23_2);
 | 
			
		||||
  CPPUNIT_TEST(testUpdateGenre24);
 | 
			
		||||
  CPPUNIT_TEST(testUpdateDate22);
 | 
			
		||||
  CPPUNIT_TEST(testDowngradeTo23);
 | 
			
		||||
  // CPPUNIT_TEST(testUpdateFullDate22); TODO TYE+TDA should be upgraded to TDRC together
 | 
			
		||||
  CPPUNIT_TEST(testCompressedFrameWithBrokenLength);
 | 
			
		||||
  CPPUNIT_TEST_SUITE_END();
 | 
			
		||||
@ -474,6 +475,48 @@ public:
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(String("2010-04-03"), f.ID3v2Tag()->frameListMap()["TDRC"].front()->toString());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void testDowngradeTo23()
 | 
			
		||||
  {
 | 
			
		||||
    ScopedFileCopy copy("xing", ".mp3");
 | 
			
		||||
    string newname = copy.fileName();
 | 
			
		||||
 | 
			
		||||
    ID3v2::TextIdentificationFrame *tf;
 | 
			
		||||
    MPEG::File foo(newname.c_str());
 | 
			
		||||
    tf = new ID3v2::TextIdentificationFrame("TDOR", String::Latin1);
 | 
			
		||||
    tf->setText("2011-03-16");
 | 
			
		||||
    foo.ID3v2Tag()->addFrame(tf);
 | 
			
		||||
    tf = new ID3v2::TextIdentificationFrame("TDRC", String::Latin1);
 | 
			
		||||
    tf->setText("2012-04-17");
 | 
			
		||||
    foo.ID3v2Tag()->addFrame(tf);
 | 
			
		||||
    foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TDRL", String::Latin1));
 | 
			
		||||
    foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TDTG", String::Latin1));
 | 
			
		||||
    foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TMOO", String::Latin1));
 | 
			
		||||
    foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TPRO", String::Latin1));
 | 
			
		||||
    foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TSOA", String::Latin1));
 | 
			
		||||
    foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TSOT", String::Latin1));
 | 
			
		||||
    foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TSST", String::Latin1));
 | 
			
		||||
    foo.ID3v2Tag()->addFrame(new ID3v2::TextIdentificationFrame("TSOP", String::Latin1));
 | 
			
		||||
    foo.save(MPEG::File::AllTags, true, 3);
 | 
			
		||||
 | 
			
		||||
    MPEG::File bar(newname.c_str());
 | 
			
		||||
    tf = static_cast<ID3v2::TextIdentificationFrame *>(bar.ID3v2Tag()->frameList("TDOR").front());
 | 
			
		||||
    CPPUNIT_ASSERT(tf);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), tf->fieldList().size());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(String("2011"), tf->fieldList().front());
 | 
			
		||||
    tf = static_cast<ID3v2::TextIdentificationFrame *>(bar.ID3v2Tag()->frameList("TDRC").front());
 | 
			
		||||
    CPPUNIT_ASSERT(tf);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(TagLib::uint(1), tf->fieldList().size());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(String("2012"), tf->fieldList().front());
 | 
			
		||||
    CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TDRL"));
 | 
			
		||||
    CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TDTG"));
 | 
			
		||||
    CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TMOO"));
 | 
			
		||||
    CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TPRO"));
 | 
			
		||||
    CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSOA"));
 | 
			
		||||
    CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSOT"));
 | 
			
		||||
    CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSST"));
 | 
			
		||||
    CPPUNIT_ASSERT(!bar.ID3v2Tag()->frameListMap().contains("TSOP"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void testCompressedFrameWithBrokenLength()
 | 
			
		||||
  {
 | 
			
		||||
    MPEG::File f("data/compressed_id3_frame.mp3", false);
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user