4 #include "../abstracttrack.h"
6 #include "../vorbis/vorbiscomment.h"
11 void OverallTests::checkOggTestfile1()
14 const auto tracks = m_fileInfo.
tracks();
15 CPPUNIT_ASSERT_EQUAL(2_st, tracks.size());
16 for (
const auto &track : tracks) {
17 switch (track->id()) {
20 CPPUNIT_ASSERT_EQUAL(GeneralMediaFormat::Theora, track->format().general);
24 CPPUNIT_ASSERT_EQUAL(GeneralMediaFormat::Vorbis, track->format().general);
25 CPPUNIT_ASSERT_EQUAL(static_cast<std::uint16_t>(2), track->channelCount());
26 CPPUNIT_ASSERT_EQUAL(44100u, track->samplingFrequency());
27 CPPUNIT_ASSERT_EQUAL(4, track->duration().minutes());
30 CPPUNIT_FAIL(
"unknown track ID");
33 const auto tags = m_fileInfo.
tags();
34 switch (m_tagStatus) {
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());
49 CPPUNIT_ASSERT(m_diag.
level() <= DiagLevel::Information);
55 void OverallTests::checkOggTestfile2()
58 const auto tracks = m_fileInfo.
tracks();
59 CPPUNIT_ASSERT_EQUAL(1_st, tracks.size());
60 for (
const auto &track : tracks) {
61 switch (track->id()) {
64 CPPUNIT_ASSERT_EQUAL(GeneralMediaFormat::Opus, track->format().general);
65 CPPUNIT_ASSERT_EQUAL(static_cast<std::uint16_t>(2), track->channelCount());
66 CPPUNIT_ASSERT_EQUAL(48000u, track->samplingFrequency());
67 CPPUNIT_ASSERT_EQUAL(1, track->duration().minutes());
70 CPPUNIT_FAIL(
"unknown track ID");
73 const auto tags = m_fileInfo.
tags();
74 switch (m_tagStatus) {
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());
87 CPPUNIT_ASSERT(m_diag.
level() <= DiagLevel::Information);
93 void OverallTests::checkOggTestMetaData()
96 const auto tags = m_fileInfo.
tags();
98 CPPUNIT_ASSERT_EQUAL(1_st, tags.size());
99 CPPUNIT_ASSERT(tag !=
nullptr);
109 m_preservedMetaData.pop();
112 void OverallTests::setOggTestMetaData()
133 cerr << endl <<
"OGG parser" << endl;
136 parseFile(testFilePath(
"mtx-test-data/ogg/qt4dance_medium.ogg"), &OverallTests::checkOggTestfile1);
137 parseFile(testFilePath(
"mtx-test-data/opus/v-opus.ogg"), &OverallTests::checkOggTestfile2);
152 for (m_mode = 0; m_mode != 0x2; ++m_mode) {
159 list<string> testConditions;
161 testConditions.emplace_back(
"removing tag");
163 testConditions.emplace_back(
"modifying tag");
165 cerr << endl <<
"OGG maker - testmode " << m_mode <<
": " << joinStrings(testConditions,
", ") << endl;
169 void (
OverallTests::*modifyRoutine)(void) = (m_mode &
RemoveTag) ? &OverallTests::removeAllTags : &OverallTests::setOggTestMetaData;
170 makeFile(workingCopyPath(
"mtx-test-data/ogg/qt4dance_medium.ogg"), modifyRoutine, &OverallTests::checkOggTestfile1);
171 makeFile(workingCopyPath(
"mtx-test-data/opus/v-opus.ogg"), modifyRoutine, &OverallTests::checkOggTestfile2);