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)
void Ogg::XiphComment::setYear(uint i)
{
+ removeField("YEAR");
if(i == 0)
removeField("DATE");
else
void Ogg::XiphComment::setTrack(uint i)
{
+ removeField("TRACKNUM");
if(i == 0)
removeField("TRACKNUMBER");
else
--- /dev/null
+#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);