diff --git a/tests/data/invalid-frames.mp3 b/tests/data/invalid-frames1.mp3 similarity index 100% rename from tests/data/invalid-frames.mp3 rename to tests/data/invalid-frames1.mp3 diff --git a/tests/data/invalid-frames3.mp3 b/tests/data/invalid-frames3.mp3 new file mode 100644 index 00000000..6bbd2d39 Binary files /dev/null and b/tests/data/invalid-frames3.mp3 differ diff --git a/tests/test_mpeg.cpp b/tests/test_mpeg.cpp index b9f463a4..129fcc3c 100644 --- a/tests/test_mpeg.cpp +++ b/tests/test_mpeg.cpp @@ -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"));