From af92db9dc0d9168c5055e2867f792bcfcda7141b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20Panzenb=C3=B6ck?= Date: Fri, 24 Jun 2011 01:31:15 +0200 Subject: [PATCH] IT: unit tests --- tests/CMakeLists.txt | 1 + tests/data/changed.it | Bin 636 -> 0 bytes tests/data/test.it | Bin 544 -> 644 bytes tests/test_it.cpp | 136 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 137 insertions(+) delete mode 100644 tests/data/changed.it create mode 100644 tests/test_it.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5cb82819..5bbe511e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -53,6 +53,7 @@ SET(test_runner_SRCS test_wavpack.cpp test_mod.cpp test_s3m.cpp + test_it.cpp test_xm.cpp ) IF(WITH_MP4) diff --git a/tests/data/changed.it b/tests/data/changed.it deleted file mode 100644 index 1e66c916a3a4d45cb89cfb9ac041f5e51e462c9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 636 zcmebD4e(9QNX$!5O;ISxEXhe_Kn5%VOh7Ix10#btlL!+h0~sqj>c0Z6}8GUjAp@bnD`hR8ul2L^|b zjLc#MAWBpyPRuRHNma;8%uQ89Q3d9#RzQf=KyAQgo@bsyZhlHB(4e$T5RqS$n^;ne z&`740@gM0o|u>d RL^~QenTt`51EPq50RSkY9-aUI delta 100 zcmZo+UBEIyMTUiekwKhEgo%@ZjiJGSt+s&y0_q|;pGW_JQbVx$%|28vMr-Okn9DMcNzUT6qq2Y0Lx($&j0`b diff --git a/tests/test_it.cpp b/tests/test_it.cpp new file mode 100644 index 00000000..167aa6ef --- /dev/null +++ b/tests/test_it.cpp @@ -0,0 +1,136 @@ +/*************************************************************************** + copyright : (C) 2011 by Mathias Panzenböck + email : grosser.meister.morti@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * This library is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License version * + * 2.1 as published by the Free Software Foundation. * + * * + * This library is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301 USA * + ***************************************************************************/ + +#include +#include +#include +#include "utils.h" + +using namespace std; +using namespace TagLib; +using TagLib::uint; + +static const String titleBefore("test song name"); +static const String titleAfter("changed title"); + +static const String commentBefore( + "This is a sample name.\n" + "In module file formats\n" + "sample names are abused\n" + "as multiline comments.\n" + " "); + +static const String newComment( + "This is a sample name!\n" + "In module file formats\n" + "sample names are abused\n" + "as multiline comments.\n" + "-----------------------------------\n" + "The previous line is truncated but starting with this line\n" + "the comment is not limeted in the line length but to 8000\n" + "additional characters (bytes).\n" + "\n" + "This is because it is saved in the 'message' proportion of\n" + "IT files."); + +static const String commentAfter( + "This is a sample name!\n" + "In module file formats\n" + "sample names are abused\n" + "as multiline comments.\n" + "-------------------------\n" + "The previous line is truncated but starting with this line\n" + "the comment is not limeted in the line length but to 8000\n" + "additional characters (bytes).\n" + "\n" + "This is because it is saved in the 'message' proportion of\n" + "IT files."); + +class TestIT : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE(TestIT); + CPPUNIT_TEST(testReadTags); + CPPUNIT_TEST(testWriteTags); + CPPUNIT_TEST_SUITE_END(); + +public: + void testReadTags() + { + testRead(TEST_FILE_PATH_C("test.it"), titleBefore, commentBefore); + } + + void testWriteTags() + { + ScopedFileCopy copy("test", ".it"); + { + IT::File file(copy.fileName().c_str()); + CPPUNIT_ASSERT(file.tag() != 0); + file.tag()->setTitle(titleAfter); + file.tag()->setComment(newComment); + file.tag()->setTrackerName("won't be saved"); + CPPUNIT_ASSERT(file.save()); + } + testRead(copy.fileName().c_str(), titleAfter, commentAfter); + } + +private: + void testRead(FileName fileName, const String &title, const String &comment) + { + IT::File file(fileName); + + CPPUNIT_ASSERT(file.isValid()); + + IT::Properties *p = file.audioProperties(); + Mod::Tag *t = file.tag(); + + CPPUNIT_ASSERT(0 != p); + CPPUNIT_ASSERT(0 != t); + + CPPUNIT_ASSERT_EQUAL( 0, p->length()); + CPPUNIT_ASSERT_EQUAL( 0, p->bitrate()); + CPPUNIT_ASSERT_EQUAL( 0, p->sampleRate()); + CPPUNIT_ASSERT_EQUAL(64, p->channels()); + CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 0, p->lengthInPatterns()); + CPPUNIT_ASSERT_EQUAL(true, p->stereo()); + CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 0, p->instrumentCount()); + CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 5, p->sampleCount()); + CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 1, p->patternCount()); + CPPUNIT_ASSERT_EQUAL((TagLib::ushort)535, p->version()); + CPPUNIT_ASSERT_EQUAL((TagLib::ushort)532, p->compatibleVersion()); + CPPUNIT_ASSERT_EQUAL((TagLib::ushort) 9, p->flags()); + CPPUNIT_ASSERT_EQUAL((TagLib::uchar)128, p->globalVolume()); + CPPUNIT_ASSERT_EQUAL((TagLib::uchar) 48, p->mixVolume()); + CPPUNIT_ASSERT_EQUAL((TagLib::uchar)125, p->tempo()); + CPPUNIT_ASSERT_EQUAL((TagLib::uchar) 6, p->bpmSpeed()); + CPPUNIT_ASSERT_EQUAL((TagLib::uchar)128, p->panningSeparation()); + CPPUNIT_ASSERT_EQUAL((TagLib::uchar) 0, p->pitchWheelDepth()); + CPPUNIT_ASSERT_EQUAL(title, t->title()); + CPPUNIT_ASSERT_EQUAL(String::null, t->artist()); + CPPUNIT_ASSERT_EQUAL(String::null, t->album()); + CPPUNIT_ASSERT_EQUAL(comment, t->comment()); + CPPUNIT_ASSERT_EQUAL(String::null, t->genre()); + CPPUNIT_ASSERT_EQUAL(0U, t->year()); + CPPUNIT_ASSERT_EQUAL(0U, t->track()); + CPPUNIT_ASSERT_EQUAL(String("Impulse Tracker"), t->trackerName()); + } +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(TestIT);