/* * UltraStar Deluxe - Karaoke Game * * UltraStar Deluxe is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT * file distributed with this source distribution. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * * $URL$ * $Id$ */ #include #include #include "base/song.hpp" #include "base/songloading/songloader.hpp" #include #include namespace usdx { class SongloadingTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(SongloadingTest); CPPUNIT_TEST(testSongloadingTxtHeader); CPPUNIT_TEST_EXCEPTION(testSongloadingTxtMissingHeaderFieldArtist, MissingTagException); CPPUNIT_TEST_EXCEPTION(testSongloadingTxtMissingHeaderFieldTitle, MissingTagException); CPPUNIT_TEST_EXCEPTION(testSongloadingTxtMissingHeaderFieldMp3, MissingTagException); CPPUNIT_TEST_EXCEPTION(testSongloadingTxtMissingHeaderFieldBpm, MissingTagException); CPPUNIT_TEST_SUITE_END(); private: log4cpp::Priority::Value oldLogLevel; public: void setUp() { // save old loglevel in case we want to disable logging oldLogLevel = log4cpp::Category::getRoot().getPriority(); } void tearDown() { // set old loglevel in case we did disable logging log4cpp::Category::getRoot().setPriority(oldLogLevel); } void testSongloadingTxtHeader() { Song *song = Songloader::get_instance()->load_header("testdata/testsong_correct.txt"); CPPUNIT_ASSERT_EQUAL(std::string("Test Ă„rtist"), song->get_artist()); // FIXIT: unicode length is not counted correctly // CPPUNIT_ASSERT_EQUAL(11, song->get_artist().length()); CPPUNIT_ASSERT_EQUAL(std::string("Test Title"), song->get_title()); CPPUNIT_ASSERT_EQUAL(std::string("Test.mp3"), song->get_mp3()); CPPUNIT_ASSERT_EQUAL(42.23f, song->get_bpm(0)); CPPUNIT_ASSERT_EQUAL(42.23f, song->get_bpm(10)); CPPUNIT_ASSERT_EQUAL(10.0f, song->get_gap()); CPPUNIT_ASSERT_EQUAL(std::string("Test[BG].jpg"), song->get_background()); CPPUNIT_ASSERT_EQUAL(std::string("Test[CO].jpg"), song->get_cover_file()); CPPUNIT_ASSERT_EQUAL(std::string("Test Genre"), song->get_genre()); CPPUNIT_ASSERT_EQUAL(false, song->get_relative()); CPPUNIT_ASSERT_EQUAL(std::string("Cpp"), song->get_language()); CPPUNIT_ASSERT_EQUAL(std::string("Test[VD#12,3].mkv"), song->get_video()); CPPUNIT_ASSERT_EQUAL(12.3f, song->get_video_gap()); CPPUNIT_ASSERT_EQUAL(0.0f, song->get_start()); CPPUNIT_ASSERT_EQUAL(std::string("Test0r"), song->get_creator()); CPPUNIT_ASSERT_EQUAL(7, song->get_year()); CPPUNIT_ASSERT_EQUAL(666, song->get_stop()); CPPUNIT_ASSERT_EQUAL(0, song->get_notes_gap()); // TODO //CPPUNIT_ASSERT_EQUAL(UTF-8, song->get_encodeing()); delete song; } void testSongloadingTxtMissingHeaderFieldArtist() { // disable logging to avoid logmsgs when the exeption // is thrown log4cpp::Category::getRoot().setPriority(log4cpp::Priority::EMERG); Songloader::get_instance()-> load_header("testdata/testsong_missing_artist.txt"); } void testSongloadingTxtMissingHeaderFieldTitle() { // disable logging to avoid logmsgs when the exeption // is thrown log4cpp::Category::getRoot().setPriority(log4cpp::Priority::EMERG); Songloader::get_instance()-> load_header("testdata/testsong_missing_title.txt"); } void testSongloadingTxtMissingHeaderFieldMp3() { // disable logging to avoid logmsgs when the exeption // is thrown log4cpp::Category::getRoot().setPriority(log4cpp::Priority::EMERG); Songloader::get_instance()-> load_header("testdata/testsong_missing_mp3.txt"); } void testSongloadingTxtMissingHeaderFieldBpm() { // disable logging to avoid logmsgs when the exeption // is thrown log4cpp::Category::getRoot().setPriority(log4cpp::Priority::EMERG); Songloader::get_instance()-> load_header("testdata/testsong_missing_bpm.txt"); } }; CPPUNIT_TEST_SUITE_REGISTRATION(SongloadingTest); }