]> granicus.if.org Git - taglib/commitdiff
Add a test to check if the FLAC audio stream remains intact after adding an ID3v1...
authorTsuda Kageyu <tsuda.kageyu@gmail.com>
Fri, 19 Jun 2015 00:25:36 +0000 (09:25 +0900)
committerTsuda Kageyu <tsuda.kageyu@gmail.com>
Mon, 3 Aug 2015 06:40:30 +0000 (15:40 +0900)
tests/test_flac.cpp

index dd09b3eafb7eee620ca9d7ef44a097b65a9777b9..54104cc5d4e8aaf78e9a18c11d869bc1df40d097 100644 (file)
@@ -6,6 +6,7 @@
 #include <tpropertymap.h>
 #include <flacfile.h>
 #include <xiphcomment.h>
+#include <id3v1tag.h>
 #include <cppunit/extensions/HelperMacros.h>
 #include "utils.h"
 
@@ -27,6 +28,7 @@ class TestFLAC : public CppUnit::TestFixture
   CPPUNIT_TEST(testInvalid);
   CPPUNIT_TEST(testAudioProperties);
   CPPUNIT_TEST(testZeroSizedPadding);
+  CPPUNIT_TEST(testSaveID3v1);
   CPPUNIT_TEST_SUITE_END();
 
 public:
@@ -283,6 +285,29 @@ public:
     CPPUNIT_ASSERT(f.isValid());
   }
 
+  void testSaveID3v1()
+  {
+    ScopedFileCopy copy("no-tags", ".flac");
+
+    ByteVector audioStream;
+    {
+      FLAC::File f(copy.fileName().c_str());
+      CPPUNIT_ASSERT(!f.hasID3v1Tag());
+      CPPUNIT_ASSERT_EQUAL((long)4692, f.length());
+
+      f.seek(0x0100);
+      audioStream = f.readBlock(4436);
+
+      f.ID3v1Tag(true)->setTitle("01234 56789 ABCDE FGHIJ");
+      f.save();
+      CPPUNIT_ASSERT(f.hasID3v1Tag());
+      CPPUNIT_ASSERT_EQUAL((long)4820, f.length());
+
+      f.seek(0x0100);
+      CPPUNIT_ASSERT_EQUAL(audioStream, f.readBlock(4436));
+    }
+  }
+
 };
 
 CPPUNIT_TEST_SUITE_REGISTRATION(TestFLAC);