diff options
author | Hans Baier <hansfbaier@googlemail.com> | 2009-02-10 23:58:02 +0000 |
---|---|---|
committer | Hans Baier <hansfbaier@googlemail.com> | 2009-02-10 23:58:02 +0000 |
commit | dcc25d795b3c3d796448a9d033f6b4dff79d1850 (patch) | |
tree | 33a1b30b69b8cc24880a7d4a81cdb4b453ceb00d /libs/evoral/test | |
parent | ce8065fea830c763931a7bc203a9701d9097d8ee (diff) |
* Evoral: Added Unit test for SMF
git-svn-id: svn://localhost/ardour2/branches/3.0@4523 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/evoral/test')
-rw-r--r-- | libs/evoral/test/SMFTest.cpp | 40 | ||||
-rw-r--r-- | libs/evoral/test/SMFTest.hpp | 45 | ||||
-rw-r--r-- | libs/evoral/test/SequenceTest.hpp | 1 | ||||
-rwxr-xr-x | libs/evoral/test/testdata/TakeFive.mid | bin | 0 -> 32531 bytes |
4 files changed, 85 insertions, 1 deletions
diff --git a/libs/evoral/test/SMFTest.cpp b/libs/evoral/test/SMFTest.cpp index 369bc80e45..b5891ff23f 100644 --- a/libs/evoral/test/SMFTest.cpp +++ b/libs/evoral/test/SMFTest.cpp @@ -1 +1,41 @@ #include "SMFTest.hpp" + +using namespace std; + +CPPUNIT_TEST_SUITE_REGISTRATION( SMFTest ); + +void +SMFTest::takeFiveTest () +{ + TestSMF<Time> smf; + smf.open("./test/testdata/TakeFive.mid"); + CPPUNIT_ASSERT(!smf.is_empty()); + + seq->start_write(); + smf.seek_to_start(); + + uint64_t time = 0; /* in SMF ticks */ + Evoral::Event<double> ev; + + const double frames_per_beat = 100.0; + + uint32_t delta_t = 0; + uint32_t size = 0; + uint8_t* buf = NULL; + int ret; + while ((ret = smf.read_event(&delta_t, &size, &buf)) >= 0) { + cerr << "read smf event type " << int(buf[0]) << endl; + ev.set(buf, size, 0.0); + time += delta_t; + + if (ret > 0) { // didn't skip (meta) event + // make ev.time absolute time in frames + ev.time() = time * frames_per_beat / (double)smf.ppqn(); + ev.set_event_type(type_map->midi_event_type(buf[0])); + seq->append(ev); + } + } + + seq->end_write(false); + CPPUNIT_ASSERT(!seq->empty()); +} diff --git a/libs/evoral/test/SMFTest.hpp b/libs/evoral/test/SMFTest.hpp index 5b3d96a27b..f63fec838a 100644 --- a/libs/evoral/test/SMFTest.hpp +++ b/libs/evoral/test/SMFTest.hpp @@ -3,6 +3,51 @@ #include <evoral/SMF.hpp> +#include "SequenceTest.hpp" + #include <sigc++/sigc++.h> #include <cassert> + +using namespace Evoral; + +template<typename Time> +class TestSMF : public SMF<Time> { +public: + int open(const std::string& path) { + return SMF<Time>::open(path); + } + + int read_event(uint32_t* delta_t, uint32_t* size, uint8_t** buf) const { + return SMF<Time>::read_event(delta_t, size, buf); + } +}; + +class SMFTest : public CppUnit::TestFixture +{ + CPPUNIT_TEST_SUITE (SMFTest); + CPPUNIT_TEST (takeFiveTest); + CPPUNIT_TEST_SUITE_END (); + + public: + + typedef double Time; + + void setUp (void) { + type_map = new DummyTypeMap(); + assert(type_map); + seq = new MySequence<Time>(*type_map, 0); + assert(seq); + } + + void tearDown (void) { + delete seq; + delete type_map; + } + + void takeFiveTest (void); + + private: + DummyTypeMap* type_map; + MySequence<Time>* seq; +}; diff --git a/libs/evoral/test/SequenceTest.hpp b/libs/evoral/test/SequenceTest.hpp index 746c20cd0f..7800438456 100644 --- a/libs/evoral/test/SequenceTest.hpp +++ b/libs/evoral/test/SequenceTest.hpp @@ -109,7 +109,6 @@ class SequenceTest : public CppUnit::TestFixture typedef std::vector<boost::shared_ptr<Note<Time> > > Notes; void setUp (void) { - std::cerr << "SetUp" << std::endl; type_map = new DummyTypeMap(); assert(type_map); seq = new MySequence<Time>(*type_map, 0); diff --git a/libs/evoral/test/testdata/TakeFive.mid b/libs/evoral/test/testdata/TakeFive.mid Binary files differnew file mode 100755 index 0000000000..0d472ac6cb --- /dev/null +++ b/libs/evoral/test/testdata/TakeFive.mid |