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();
36 CPPUNIT_ASSERT(tags.size() == 1);
37 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Encoder).toString() ==
"ffmpeg2theora 0.13");
42 checkOggTestMetaData();
45 CPPUNIT_ASSERT(tags.size() == 0);
52 void OverallTests::checkOggTestfile2()
55 const auto tracks = m_fileInfo.
tracks();
56 CPPUNIT_ASSERT(tracks.size() == 1);
57 for(
const auto &track : tracks) {
61 CPPUNIT_ASSERT(track->format() == GeneralMediaFormat::Opus);
62 CPPUNIT_ASSERT(track->channelCount() == 2);
63 CPPUNIT_ASSERT(track->samplingFrequency() == 48000);
64 CPPUNIT_ASSERT(track->duration().minutes() == 1);
67 CPPUNIT_FAIL(
"unknown track ID");
70 const auto tags = m_fileInfo.
tags();
73 CPPUNIT_ASSERT(tags.size() == 1);
74 CPPUNIT_ASSERT(tags.front()->value(
KnownField::Encoder).toString() ==
"opusenc from opus-tools 0.1.6");
77 checkOggTestMetaData();
80 CPPUNIT_ASSERT(tags.size() == 0);
87 void OverallTests::checkOggTestMetaData()
90 const auto tags = m_fileInfo.
tags();
92 CPPUNIT_ASSERT(tags.size() == 1);
93 CPPUNIT_ASSERT(tag !=
nullptr);
103 m_preservedMetaData.pop();
106 void OverallTests::setOggTestMetaData()
127 cerr << endl <<
"OGG parser" << endl;
130 parseFile(TestUtilities::testFilePath(
"mtx-test-data/ogg/qt4dance_medium.ogg"), &OverallTests::checkOggTestfile1);
131 parseFile(TestUtilities::testFilePath(
"mtx-test-data/opus/v-opus.ogg"), &OverallTests::checkOggTestfile2);
141 void OverallTests::testOggMaking()
147 for(m_mode = 0; m_mode != 0x2; ++m_mode) {
154 list<string> testConditions;
156 testConditions.emplace_back(
"removing tag");
158 testConditions.emplace_back(
"modifying tag");
160 cerr << endl <<
"OGG maker - testmode " << m_mode <<
": " << joinStrings(testConditions,
", ") << endl;
164 void (
OverallTests::*modifyRoutine)(void) = (m_mode & RemoveTag) ? &OverallTests::removeAllTags : &OverallTests::setOggTestMetaData;
165 makeFile(TestUtilities::workingCopyPath(
"mtx-test-data/ogg/qt4dance_medium.ogg"), modifyRoutine, &OverallTests::checkOggTestfile1);
166 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.