Try to read track also from TRACKNUM and year from YEAR.

Patch by David Bishop
BUG:144396


git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@994811 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
This commit is contained in:
Lukáš Lalinský 2009-07-11 13:17:06 +00:00
parent 59e35efc1b
commit 5e1eb18df9
3 changed files with 78 additions and 6 deletions

View File

@ -103,16 +103,20 @@ String Ogg::XiphComment::genre() const
TagLib::uint Ogg::XiphComment::year() const
{
if(d->fieldListMap["DATE"].isEmpty())
return 0;
return d->fieldListMap["DATE"].front().toInt();
if(!d->fieldListMap["DATE"].isEmpty())
return d->fieldListMap["DATE"].front().toInt();
if(!d->fieldListMap["YEAR"].isEmpty())
return d->fieldListMap["YEAR"].front().toInt();
return 0;
}
TagLib::uint Ogg::XiphComment::track() const
{
if(d->fieldListMap["TRACKNUMBER"].isEmpty())
return 0;
return d->fieldListMap["TRACKNUMBER"].front().toInt();
if(!d->fieldListMap["TRACKNUMBER"].isEmpty())
return d->fieldListMap["TRACKNUMBER"].front().toInt();
if(!d->fieldListMap["TRACKNUM"].isEmpty())
return d->fieldListMap["TRACKNUM"].front().toInt();
return 0;
}
void Ogg::XiphComment::setTitle(const String &s)
@ -142,6 +146,7 @@ void Ogg::XiphComment::setGenre(const String &s)
void Ogg::XiphComment::setYear(uint i)
{
removeField("YEAR");
if(i == 0)
removeField("DATE");
else
@ -150,6 +155,7 @@ void Ogg::XiphComment::setYear(uint i)
void Ogg::XiphComment::setTrack(uint i)
{
removeField("TRACKNUM");
if(i == 0)
removeField("TRACKNUMBER");
else

View File

@ -10,6 +10,7 @@ INCLUDE_DIRECTORIES(
${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg
${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mp4
${CMAKE_CURRENT_SOURCE_DIR}/../taglib/trueaudio
${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg
)
SET(test_runner_SRCS
@ -24,6 +25,7 @@ SET(test_runner_SRCS
test_fileref.cpp
test_id3v1.cpp
test_id3v2.cpp
test_xiphcomment.cpp
)
IF(WITH_MP4)
SET(test_runner_SRCS ${test_runner_SRCS} test_mp4.cpp)

View File

@ -0,0 +1,64 @@
#include <cppunit/extensions/HelperMacros.h>
#include <string>
#include <stdio.h>
#include <xiphcomment.h>
#include <tdebug.h>
#include "utils.h"
using namespace std;
using namespace TagLib;
class TestXiphComment : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(TestXiphComment);
CPPUNIT_TEST(testYear);
CPPUNIT_TEST(testSetYear);
CPPUNIT_TEST(testTrack);
CPPUNIT_TEST(testSetTrack);
CPPUNIT_TEST_SUITE_END();
public:
void testYear()
{
Ogg::XiphComment cmt;
CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), cmt.year());
cmt.addField("YEAR", "2009");
CPPUNIT_ASSERT_EQUAL(TagLib::uint(2009), cmt.year());
cmt.addField("DATE", "2008");
CPPUNIT_ASSERT_EQUAL(TagLib::uint(2008), cmt.year());
}
void testSetYear()
{
Ogg::XiphComment cmt;
cmt.addField("YEAR", "2009");
cmt.addField("DATE", "2008");
cmt.setYear(1995);
CPPUNIT_ASSERT(cmt.fieldListMap()["YEAR"].isEmpty());
CPPUNIT_ASSERT_EQUAL(String("1995"), cmt.fieldListMap()["DATE"].front());
}
void testTrack()
{
Ogg::XiphComment cmt;
CPPUNIT_ASSERT_EQUAL(TagLib::uint(0), cmt.track());
cmt.addField("TRACKNUM", "7");
CPPUNIT_ASSERT_EQUAL(TagLib::uint(7), cmt.track());
cmt.addField("TRACKNUMBER", "8");
CPPUNIT_ASSERT_EQUAL(TagLib::uint(8), cmt.track());
}
void testSetTrack()
{
Ogg::XiphComment cmt;
cmt.addField("TRACKNUM", "7");
cmt.addField("TRACKNUMBER", "8");
cmt.setTrack(3);
CPPUNIT_ASSERT(cmt.fieldListMap()["TRACKNUM"].isEmpty());
CPPUNIT_ASSERT_EQUAL(String("3"), cmt.fieldListMap()["TRACKNUMBER"].front());
}
};
CPPUNIT_TEST_SUITE_REGISTRATION(TestXiphComment);