5 #include "../abstracttrack.h" 6 #include "../vorbis/vorbiscomment.h" 11 void OverallTests::checkOggTestfile1()
14 const auto tracks = m_fileInfo.
tracks();
15 CPPUNIT_ASSERT(tracks.size() == 2);
16 for(
const auto &track : tracks) {
20 CPPUNIT_ASSERT(track->format() == GeneralMediaFormat::Theora);
24 CPPUNIT_ASSERT(track->format() == GeneralMediaFormat::Vorbis);
25 CPPUNIT_ASSERT(track->channelCount() == 2);
26 CPPUNIT_ASSERT(track->samplingFrequency() == 44100);
27 CPPUNIT_ASSERT(track->duration().minutes() == 4);
30 CPPUNIT_FAIL(
"unknown track ID");
33 const auto tags = m_fileInfo.
tags();
37 CPPUNIT_ASSERT_EQUAL(1_st, tags.size());
38 CPPUNIT_ASSERT_EQUAL(
"ffmpeg2theora 0.13"s, tags.front()->value(
KnownField::Encoder).toString());
43 checkOggTestMetaData();
46 CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
55 void OverallTests::checkOggTestfile2()
58 const auto tracks = m_fileInfo.
tracks();
59 CPPUNIT_ASSERT(tracks.size() == 1);
60 for(
const auto &track : tracks) {
64 CPPUNIT_ASSERT(track->format() == GeneralMediaFormat::Opus);
65 CPPUNIT_ASSERT(track->channelCount() == 2);
66 CPPUNIT_ASSERT(track->samplingFrequency() == 48000);
67 CPPUNIT_ASSERT(track->duration().minutes() == 1);
70 CPPUNIT_FAIL(
"unknown track ID");
73 const auto tags = m_fileInfo.
tags();
77 CPPUNIT_ASSERT_EQUAL(1_st, tags.size());
78 CPPUNIT_ASSERT_EQUAL(
"opusenc from opus-tools 0.1.6"s, tags.front()->value(
KnownField::Encoder).toString());
81 checkOggTestMetaData();
84 CPPUNIT_ASSERT_EQUAL(0_st, tags.size());
93 void OverallTests::checkOggTestMetaData()
96 const auto tags = m_fileInfo.
tags();
98 CPPUNIT_ASSERT(tags.size() == 1);
99 CPPUNIT_ASSERT(tag !=
nullptr);
109 m_preservedMetaData.pop();
112 void OverallTests::setOggTestMetaData()
133 cerr << endl <<
"OGG parser" << endl;
136 parseFile(TestUtilities::testFilePath(
"mtx-test-data/ogg/qt4dance_medium.ogg"), &OverallTests::checkOggTestfile1);
137 parseFile(TestUtilities::testFilePath(
"mtx-test-data/opus/v-opus.ogg"), &OverallTests::checkOggTestfile2);
147 void OverallTests::testOggMaking()
153 for(m_mode = 0; m_mode != 0x2; ++m_mode) {
160 list<string> testConditions;
162 testConditions.emplace_back(
"removing tag");
164 testConditions.emplace_back(
"modifying tag");
166 cerr << endl <<
"OGG maker - testmode " << m_mode <<
": " << joinStrings(testConditions,
", ") << endl;
170 void (
OverallTests::*modifyRoutine)(void) = (m_mode & RemoveTag) ? &OverallTests::removeAllTags : &OverallTests::setOggTestMetaData;
171 makeFile(TestUtilities::workingCopyPath(
"mtx-test-data/ogg/qt4dance_medium.ogg"), modifyRoutine, &OverallTests::checkOggTestfile1);
172 makeFile(TestUtilities::workingCopyPath(
"mtx-test-data/opus/v-opus.ogg"), modifyRoutine, &OverallTests::checkOggTestfile2);
The OverallTests class tests reading and writing tags and parsing technical information for all suppo...
void testOggParsing()
Tests the Ogg parser via MediaFileInfo.