diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/Makefile.am | 13 | ||||
| -rw-r--r-- | test/dgxmlparsertest.cc | 138 | 
2 files changed, 150 insertions, 1 deletions
| diff --git a/test/Makefile.am b/test/Makefile.am index 4a5a050..c45ed60 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -7,7 +7,7 @@ TESTS = resource enginetest paintertest configfile audiocache \  	audiocachefile audiocacheidmanager audiocacheeventhandler \  	randomtest atomictest syncedsettingstest imagecachetest \  	semaphoretest drumkitcreatortest bytesizeparsertest notifiertest \ -	instrumentparsertest drumkitparsertest +	instrumentparsertest drumkitparsertest dgxmlparsertest  EXTRA_DIST = \  	dgunit.h \ @@ -214,4 +214,15 @@ drumkitparsertest_SOURCES = \  	scopedfile.cc \  	dgtest.cc +dgxmlparsertest_CXXFLAGS = -DOUTPUT=\"dgxmlparsertest\" $(CPPUNIT_CFLAGS) \ +	-I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_srcdir)/pugixml/src +dgxmlparsertest_LDFLAGS = $(CPPUNIT_LIBS) +dgxmlparsertest_SOURCES = \ +	$(top_srcdir)/hugin/hugin.c \ +	$(top_srcdir)/src/dgxmlparser.cc \ +	$(top_srcdir)/pugixml/src/pugixml.cpp \ +	dgxmlparsertest.cc \ +	scopedfile.cc \ +	test.cc +  endif diff --git a/test/dgxmlparsertest.cc b/test/dgxmlparsertest.cc new file mode 100644 index 0000000..04d4372 --- /dev/null +++ b/test/dgxmlparsertest.cc @@ -0,0 +1,138 @@ +/* -*- Mode: c++ -*- */ +/*************************************************************************** + *            dgxmlparsertest.cc + * + *  Sat Jun  9 11:37:19 CEST 2018 + *  Copyright 2018 Bent Bisballe Nyeng + *  deva@aasimon.org + ****************************************************************************/ + +/* + *  This file is part of DrumGizmo. + * + *  DrumGizmo is free software; you can redistribute it and/or modify + *  it under the terms of the GNU Lesser General Public License as published by + *  the Free Software Foundation; either version 3 of the License, or + *  (at your option) any later version. + * + *  DrumGizmo 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 DrumGizmo; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ +#include <cppunit/extensions/HelperMacros.h> + +#include <dgxmlparser.h> +#include "scopedfile.h" + +class DGXmlParserTest +	: public CppUnit::TestFixture +{ +	CPPUNIT_TEST_SUITE(DGXmlParserTest); +	CPPUNIT_TEST(instrumentParserTest); +	CPPUNIT_TEST_SUITE_END(); + +public: +	void setUp() +	{ +	} + +	void tearDown() +	{ +	} + +	//! This just creates some drumkit. +	void instrumentParserTest() +	{ +		ScopedFile scoped_file( +			"<?xml version='1.0' encoding='UTF-8'?>\n" \ +			"<instrument version=\"2.0\" name=\"Snare\">\n" \ +			" <channels>\n" \ +			"  <channel name=\"AmbLeft\" main=\"true\">\">\n" \ +			"  <channel name=\"AmbRight\" main=\"false\">\">\n" \ +			"  <channel name=\"SnareBottom\">\">\n" \ +			" </channels>\n" \ +			" <samples>\n" \ +			"  <sample name=\"Snare-1\" power=\"0.00985718\">\n" \ +			"   <audiofile channel=\"AmbLeft\" file=\"1-Snare.wav\" filechannel=\"1\"/>\n" \ +			"   <audiofile channel=\"AmbRight\" file=\"1-Snare.wav\" filechannel=\"2\"/>\n" \ +			"   <audiofile channel=\"SnareBottom\" file=\"1-Snare.wav\" filechannel=\"12\"/>\n" \ +			"   <audiofile channel=\"SnareTop\" file=\"1-Snare.wav\" filechannel=\"13\"/>\n" \ +			"  </sample>\n" \ +			"  <sample name=\"Snare-2\" power=\"0.0124808\">\n" \ +			"   <audiofile channel=\"AmbLeft\" file=\"2-Snare.wav\" filechannel=\"1\"/>\n" \ +			"   <audiofile channel=\"AmbRight\" file=\"2-Snare.wav\" filechannel=\"2\"/>\n" \ +			"   <audiofile channel=\"SnareBottom\" file=\"2-Snare.wav\" filechannel=\"12\"/>\n" \ +			"   <audiofile channel=\"SnareTop\" file=\"2-Snare.wav\" filechannel=\"13\"/>\n" \ +			"  </sample>\n" \ +			" </samples>\n" \ +			"</instrument>"); + +		InstrumentDOM dom; +		CPPUNIT_ASSERT(probeInstrumentFile(scoped_file.filename())); +		CPPUNIT_ASSERT(parseInstrumentFile(scoped_file.filename(), dom)); + +		CPPUNIT_ASSERT_EQUAL(std::string("Snare"), dom.name); +		CPPUNIT_ASSERT_EQUAL(std::size_t(2), dom.samples.size()); + +		{ +			const auto& s = dom.samples[0]; +			CPPUNIT_ASSERT_EQUAL(std::string("Snare-1"), s.name); +			CPPUNIT_ASSERT_EQUAL(0.00985718, s.power); +			CPPUNIT_ASSERT_EQUAL(std::size_t(4), s.audiofiles.size()); + +			CPPUNIT_ASSERT_EQUAL(std::string("AmbLeft"), s.audiofiles[0].instrument_channel); +			CPPUNIT_ASSERT_EQUAL(std::string("1-Snare.wav"), s.audiofiles[0].file); +			CPPUNIT_ASSERT_EQUAL(std::size_t(1), s.audiofiles[0].filechannel); + +			CPPUNIT_ASSERT_EQUAL(std::string("AmbRight"), s.audiofiles[1].instrument_channel); +			CPPUNIT_ASSERT_EQUAL(std::string("1-Snare.wav"), s.audiofiles[1].file); +			CPPUNIT_ASSERT_EQUAL(std::size_t(2), s.audiofiles[1].filechannel); + +			CPPUNIT_ASSERT_EQUAL(std::string("SnareBottom"), s.audiofiles[2].instrument_channel); +			CPPUNIT_ASSERT_EQUAL(std::string("1-Snare.wav"), s.audiofiles[2].file); +			CPPUNIT_ASSERT_EQUAL(std::size_t(3), s.audiofiles[2].filechannel); + +			CPPUNIT_ASSERT_EQUAL(std::string("SnareTop"), s.audiofiles[3].instrument_channel); +			CPPUNIT_ASSERT_EQUAL(std::string("1-Snare.wav"), s.audiofiles[3].file); +			CPPUNIT_ASSERT_EQUAL(std::size_t(4), s.audiofiles[3].filechannel); +		} + +		{ +			const auto& s = dom.samples[1]; +			CPPUNIT_ASSERT_EQUAL(std::string("Snare-2"), s.name); +			CPPUNIT_ASSERT_EQUAL(0.0124808, s.power); +			CPPUNIT_ASSERT_EQUAL(std::size_t(4), s.audiofiles.size()); +			CPPUNIT_ASSERT_EQUAL(std::string("AmbLeft"), s.audiofiles[0].instrument_channel); +			CPPUNIT_ASSERT_EQUAL(std::string("2-Snare.wav"), s.audiofiles[0].file); +			CPPUNIT_ASSERT_EQUAL(std::size_t(1), s.audiofiles[0].filechannel); + +			CPPUNIT_ASSERT_EQUAL(std::string("AmbRight"), s.audiofiles[1].instrument_channel); +			CPPUNIT_ASSERT_EQUAL(std::string("2-Snare.wav"), s.audiofiles[1].file); +			CPPUNIT_ASSERT_EQUAL(std::size_t(2), s.audiofiles[1].filechannel); + +			CPPUNIT_ASSERT_EQUAL(std::string("SnareBottom"), s.audiofiles[2].instrument_channel); +			CPPUNIT_ASSERT_EQUAL(std::string("2-Snare.wav"), s.audiofiles[2].file); +			CPPUNIT_ASSERT_EQUAL(std::size_t(3), s.audiofiles[2].filechannel); + +			CPPUNIT_ASSERT_EQUAL(std::string("SnareTop"), s.audiofiles[3].instrument_channel); +			CPPUNIT_ASSERT_EQUAL(std::string("2-Snare.wav"), s.audiofiles[3].file); +			CPPUNIT_ASSERT_EQUAL(std::size_t(4), s.audiofiles[3].filechannel); +		} + +		CPPUNIT_ASSERT_EQUAL(std::size_t(3), dom.instrument_channels.size()); +		CPPUNIT_ASSERT_EQUAL(std::string("AmbLeft"), dom.instrument_channels[0].name); +		CPPUNIT_ASSERT_EQUAL(main_state_t::is_main, dom.instrument_channels[0].main); +		CPPUNIT_ASSERT_EQUAL(std::string("AmbRight"), dom.instrument_channels[1].name); +		CPPUNIT_ASSERT_EQUAL(main_state_t::is_not_main, dom.instrument_channels[1].main); +		CPPUNIT_ASSERT_EQUAL(std::string("SnareBottom"), dom.instrument_channels[2].name); +		CPPUNIT_ASSERT_EQUAL(main_state_t::unset, dom.instrument_channels[2].main); +	} +}; + +// Registers the fixture into the 'registry' +CPPUNIT_TEST_SUITE_REGISTRATION(DGXmlParserTest); | 
