From 113eb3c33127203246e587250451dd741e5ddfd1 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sat, 9 Jun 2018 12:42:10 +0200 Subject: DGXMLParser test for instruments. --- .gitignore | 1 + test/Makefile.am | 13 ++++- test/dgxmlparsertest.cc | 138 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 test/dgxmlparsertest.cc diff --git a/.gitignore b/.gitignore index b4505ad..37d5603 100644 --- a/.gitignore +++ b/.gitignore @@ -58,6 +58,7 @@ test/semaphoretest test/enginetest test/paintertest test/drumkitcreatortest +test/dgxmlparsertest test/bytesizeparsertest test/notifiertest test/drumkitparsertest 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 + +#include +#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( + "\n" \ + "\n" \ + " \n" \ + " \">\n" \ + " \">\n" \ + " \">\n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + ""); + + 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); -- cgit v1.2.3