]> granicus.if.org Git - taglib/commitdiff
Add a test for broken MPEG audio frames.
authorTsuda Kageyu <tsuda.kageyu@gmail.com>
Sat, 9 Jan 2016 04:30:00 +0000 (13:30 +0900)
committerTsuda Kageyu <tsuda.kageyu@gmail.com>
Sat, 9 Jan 2016 04:30:00 +0000 (13:30 +0900)
tests/data/invalid-frames1.mp3 [moved from tests/data/invalid-frames.mp3 with 100% similarity]
tests/data/invalid-frames3.mp3 [new file with mode: 0644]
tests/test_mpeg.cpp

diff --git a/tests/data/invalid-frames3.mp3 b/tests/data/invalid-frames3.mp3
new file mode 100644 (file)
index 0000000..6bbd2d3
Binary files /dev/null and b/tests/data/invalid-frames3.mp3 differ
index b9f463a4d43c929040c4f83cd37d27efd60bcbf1..129fcc3c63fb1336b7f9af121248fcc31dd4aee6 100644 (file)
@@ -24,6 +24,7 @@ class TestMPEG : public CppUnit::TestFixture
   CPPUNIT_TEST(testAudioPropertiesNoVBRHeaders);
   CPPUNIT_TEST(testSkipInvalidFrames1);
   CPPUNIT_TEST(testSkipInvalidFrames2);
+  CPPUNIT_TEST(testSkipInvalidFrames3);
   CPPUNIT_TEST(testVersion2DurationWithXingHeader);
   CPPUNIT_TEST(testSaveID3v24);
   CPPUNIT_TEST(testSaveID3v24WrongParam);
@@ -107,7 +108,7 @@ public:
 
   void testSkipInvalidFrames1()
   {
-    MPEG::File f(TEST_FILE_PATH_C("invalid-frames.mp3"));
+    MPEG::File f(TEST_FILE_PATH_C("invalid-frames1.mp3"));
     CPPUNIT_ASSERT(f.audioProperties());
     CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->length());
     CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds());
@@ -131,6 +132,19 @@ public:
     CPPUNIT_ASSERT(!f.audioProperties()->xingHeader());
   }
 
+  void testSkipInvalidFrames3()
+  {
+    MPEG::File f(TEST_FILE_PATH_C("invalid-frames3.mp3"));
+    CPPUNIT_ASSERT(f.audioProperties());
+    CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->length());
+    CPPUNIT_ASSERT_EQUAL(0, f.audioProperties()->lengthInSeconds());
+    CPPUNIT_ASSERT_EQUAL(176, f.audioProperties()->lengthInMilliseconds());
+    CPPUNIT_ASSERT_EQUAL(320, f.audioProperties()->bitrate());
+    CPPUNIT_ASSERT_EQUAL(2, f.audioProperties()->channels());
+    CPPUNIT_ASSERT_EQUAL(44100, f.audioProperties()->sampleRate());
+    CPPUNIT_ASSERT(!f.audioProperties()->xingHeader());
+  }
+
   void testVersion2DurationWithXingHeader()
   {
     MPEG::File f(TEST_FILE_PATH_C("mpeg2.mp3"));