From cd8c6ffd87e8c53724d608c4084305c67c371548 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sun, 3 Feb 2019 12:58:56 +0100 Subject: Add metadata support to xml parser and dom model. RE-add unit-tests for version 1 instruments. --- test/domloadertest.cc | 163 ++++++++++++++++++++++++-------------------------- 1 file changed, 79 insertions(+), 84 deletions(-) (limited to 'test/domloadertest.cc') diff --git a/test/domloadertest.cc b/test/domloadertest.cc index 55d49a7..2cd6aa8 100644 --- a/test/domloadertest.cc +++ b/test/domloadertest.cc @@ -70,29 +70,40 @@ public: " \n" \ ""); + // Version 1.0 format ScopedFile scoped_instrument_file2( "\n" \ - "\n" \ + "\n" \ " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " " \ + " " \ + " " \ + " " \ + " " \ + " " \ ""); ScopedFile scoped_file( std::string( "\n" \ - "\n" \ + "\n" \ " \n" \ " \n" \ " \n" \ @@ -142,8 +153,6 @@ public: DGUNIT_ASSERT_EQUAL(std::string("SnareTop"), drumkit.channels[2].name); DGUNIT_ASSERT_EQUAL(std::string("SnareBottom"), drumkit.channels[3].name); - DGUNIT_ASSERT_EQUAL(std::string("CrocellKit"), drumkit._name); - DGUNIT_ASSERT_EQUAL(std::string("my description"), drumkit._description); DGUNIT_ASSERT_EQUAL(std::size_t(48000), drumkit._samplerate); DGUNIT_ASSERT(VersionStr("2.0.0") == drumkit._version); @@ -231,86 +240,72 @@ public: } // - // Instrument2 'Snare2': + // Instrument2 'Snare2' (version 1.0 instrument): // { - auto& instrument = *drumkit.instruments[1]; - DGUNIT_ASSERT_EQUAL(std::string(""), instrument._group); - DGUNIT_ASSERT_EQUAL(std::string("Snare2"), instrument._name); - DGUNIT_ASSERT_EQUAL(std::string(""), instrument._description); + auto& instrument = *drumkit.instruments[1]; + DGUNIT_ASSERT_EQUAL(std::string(""), instrument._group); + DGUNIT_ASSERT_EQUAL(std::string("Snare2"), instrument._name); + DGUNIT_ASSERT_EQUAL(std::string(""), instrument._description); - DGUNIT_ASSERT(VersionStr("2.0.0") == instrument.version); + DGUNIT_ASSERT(VersionStr("1.0.0") == instrument.version); - // NOTE: instrument.samples are the sample map belonging to version 1.0 - DGUNIT_ASSERT_EQUAL(std::size_t(2), instrument.samplelist.size()); - { - const auto& sample = *instrument.samplelist[0]; - DGUNIT_ASSERT_EQUAL(std::string("Snare-1"), sample.name); - DGUNIT_ASSERT_EQUAL(0.00985718f, sample.power); - DGUNIT_ASSERT_EQUAL(std::size_t(4), sample.audiofiles.size()); - for(const auto& audiofile : sample.audiofiles) + // NOTE: instrument.samples are the sample map belonging to version 1.0 + DGUNIT_ASSERT_EQUAL(std::size_t(2), instrument.samplelist.size()); { - DGUNIT_ASSERT_EQUAL(std::string("/tmp/1-Snare.wav"), audiofile.second->filename); - switch(audiofile.second->filechannel) - { - // NOTE: Channel numbers are zero based - they are 1 based in the xml - case 0: - DGUNIT_ASSERT_EQUAL(std::string("AmbLeft"), - audiofile.second->instrument_channel->name); - break; - case 1: - DGUNIT_ASSERT_EQUAL(std::string("AmbRight"), - audiofile.second->instrument_channel->name); - break; - case 11: - DGUNIT_ASSERT_EQUAL(std::string("SnareBottom"), - audiofile.second->instrument_channel->name); - break; - case 12: - DGUNIT_ASSERT_EQUAL(std::string("SnareTop"), - audiofile.second->instrument_channel->name); - break; - default: - DGUNIT_ASSERT(false); - break; - } + const auto& sample = *instrument.samplelist[0]; + DGUNIT_ASSERT_EQUAL(std::string("Snare-1"), sample.name); + DGUNIT_ASSERT_EQUAL(std::size_t(4), sample.audiofiles.size()); + auto afile = sample.audiofiles.begin(); + DGUNIT_ASSERT_EQUAL(std::string("/tmp/1-Snare-1.wav"), afile->second->filename); + DGUNIT_ASSERT_EQUAL(std::string("AmbLeft"), afile->second->instrument_channel->name); + ++afile; + DGUNIT_ASSERT_EQUAL(std::string("/tmp/1-Snare-2.wav"), afile->second->filename); + DGUNIT_ASSERT_EQUAL(std::string("AmbRight"), afile->second->instrument_channel->name); + ++afile; + DGUNIT_ASSERT_EQUAL(std::string("/tmp/1-Snare-3.wav"), afile->second->filename); + DGUNIT_ASSERT_EQUAL(std::string("SnareBottom"), afile->second->instrument_channel->name); + ++afile; + DGUNIT_ASSERT_EQUAL(std::string("/tmp/1-Snare-4.wav"), afile->second->filename); + DGUNIT_ASSERT_EQUAL(std::string("SnareTop"), afile->second->instrument_channel->name); } - } - { - const auto& sample = *instrument.samplelist[1]; - DGUNIT_ASSERT_EQUAL(std::string("Snare-2"), sample.name); - DGUNIT_ASSERT_EQUAL(0.0124808f, sample.power); - DGUNIT_ASSERT_EQUAL(std::size_t(4), sample.audiofiles.size()); - for(const auto& audiofile : sample.audiofiles) { - DGUNIT_ASSERT_EQUAL(std::string("/tmp/2-Snare.wav"), audiofile.second->filename); - switch(audiofile.second->filechannel) - { - // NOTE: Channel numbers are zero based - they are 1 based in the xml - case 0: - DGUNIT_ASSERT_EQUAL(std::string("AmbLeft"), - audiofile.second->instrument_channel->name); - break; - case 1: - DGUNIT_ASSERT_EQUAL(std::string("AmbRight"), - audiofile.second->instrument_channel->name); - break; - case 11: - DGUNIT_ASSERT_EQUAL(std::string("SnareBottom"), - audiofile.second->instrument_channel->name); - break; - case 12: - DGUNIT_ASSERT_EQUAL(std::string("SnareTop"), - audiofile.second->instrument_channel->name); - break; - default: - DGUNIT_ASSERT(false); - break; - } + const auto& sample = *instrument.samplelist[1]; + DGUNIT_ASSERT_EQUAL(std::string("Snare-2"), sample.name); + DGUNIT_ASSERT_EQUAL(std::size_t(4), sample.audiofiles.size()); + auto afile = sample.audiofiles.begin(); + DGUNIT_ASSERT_EQUAL(std::string("/tmp/2-Snare-1.wav"), afile->second->filename); + DGUNIT_ASSERT_EQUAL(std::string("AmbLeft"), afile->second->instrument_channel->name); + ++afile; + DGUNIT_ASSERT_EQUAL(std::string("/tmp/2-Snare-2.wav"), afile->second->filename); + DGUNIT_ASSERT_EQUAL(std::string("AmbRight"), afile->second->instrument_channel->name); + ++afile; + DGUNIT_ASSERT_EQUAL(std::string("/tmp/2-Snare-3.wav"), afile->second->filename); + DGUNIT_ASSERT_EQUAL(std::string("SnareBottom"), afile->second->instrument_channel->name); + ++afile; + DGUNIT_ASSERT_EQUAL(std::string("/tmp/2-Snare-4.wav"), afile->second->filename); + DGUNIT_ASSERT_EQUAL(std::string("SnareTop"), afile->second->instrument_channel->name); } - } + + DGUNIT_ASSERT_EQUAL(std::size_t(4), instrument.samples.values.size()); + auto value = instrument.samples.values.begin(); + DGUNIT_ASSERT_EQUAL(0.0, value->first.first); // lower + DGUNIT_ASSERT_EQUAL(0.6, value->first.second); // upper + DGUNIT_ASSERT_EQUAL(std::string("Snare-1"), value->second->name); + ++value; + DGUNIT_ASSERT_EQUAL(0.0, value->first.first); // lower + DGUNIT_ASSERT_EQUAL(0.6, value->first.second); // upper + DGUNIT_ASSERT_EQUAL(std::string("Snare-2"), value->second->name); + ++value; + DGUNIT_ASSERT_EQUAL(0.6, value->first.first); // lower + DGUNIT_ASSERT_EQUAL(1.0, value->first.second); // upper + DGUNIT_ASSERT_EQUAL(std::string("Snare-2"), value->second->name); + ++value; + DGUNIT_ASSERT_EQUAL(0.6, value->first.first); // lower + DGUNIT_ASSERT_EQUAL(1.0, value->first.second); // upper + DGUNIT_ASSERT_EQUAL(std::string("Snare-1"), value->second->name); } } }; -- cgit v1.2.3