diff options
author | David Robillard <d@drobilla.net> | 2009-10-19 16:09:20 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-10-19 16:09:20 +0000 |
commit | 0a9b982620d314ed9410a63dce1d84e9be0a35a2 (patch) | |
tree | 0c089d99006c764528382742dcb5a88620c8726f /libs/evoral/test | |
parent | 5c1dccaca54b3ef834a0b4a09fc92b3e1b552eac (diff) |
Add unit test for Sequence iterator seeking.
git-svn-id: svn://localhost/ardour2/branches/3.0@5801 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/evoral/test')
-rw-r--r-- | libs/evoral/test/SequenceTest.cpp | 33 | ||||
-rw-r--r-- | libs/evoral/test/SequenceTest.hpp | 10 |
2 files changed, 37 insertions, 6 deletions
diff --git a/libs/evoral/test/SequenceTest.cpp b/libs/evoral/test/SequenceTest.cpp index cac819338f..1e9dae1a4c 100644 --- a/libs/evoral/test/SequenceTest.cpp +++ b/libs/evoral/test/SequenceTest.cpp @@ -6,7 +6,7 @@ CPPUNIT_TEST_SUITE_REGISTRATION(SequenceTest); using namespace std; void -SequenceTest::createTest (void) +SequenceTest::createTest () { CPPUNIT_ASSERT_EQUAL(size_t(0), seq->sysexes().size()); CPPUNIT_ASSERT_EQUAL(size_t(0), seq->notes().size()); @@ -15,7 +15,7 @@ SequenceTest::createTest (void) void -SequenceTest::preserveEventOrderingTest (void) +SequenceTest::preserveEventOrderingTest () { vector< boost::shared_ptr< Event<Time> > > inserted_events; @@ -62,3 +62,32 @@ SequenceTest::preserveEventOrderingTest (void) CPPUNIT_ASSERT_EQUAL(size_t(12), test_notes.size()); } + +void +SequenceTest::iteratorSeekTest () +{ + size_t num_notes = 0; + + seq->clear(); + + for (Notes::const_iterator i = test_notes.begin(); i != test_notes.end(); ++i) { + if ((*i)->time() >= 600) { + seq->notes().insert(*i); + } + } + + bool on = true; + for (Sequence<Time>::const_iterator i = seq->begin(600); i != seq->end(); ++i) { + if (on) { + CPPUNIT_ASSERT(((MIDIEvent<Time>&)*i).is_note_on()); + CPPUNIT_ASSERT_EQUAL(i->time(), Time((num_notes + 6) * 100)); + ++num_notes; + on = false; + } else { + CPPUNIT_ASSERT(((MIDIEvent<Time>&)*i).is_note_off()); + on = true; + } + } + + CPPUNIT_ASSERT_EQUAL(num_notes, size_t(6)); +} diff --git a/libs/evoral/test/SequenceTest.hpp b/libs/evoral/test/SequenceTest.hpp index 5848f034e5..1087ab7003 100644 --- a/libs/evoral/test/SequenceTest.hpp +++ b/libs/evoral/test/SequenceTest.hpp @@ -97,13 +97,14 @@ class SequenceTest : public CppUnit::TestFixture CPPUNIT_TEST_SUITE (SequenceTest); CPPUNIT_TEST (createTest); CPPUNIT_TEST (preserveEventOrderingTest); + CPPUNIT_TEST (iteratorSeekTest); CPPUNIT_TEST_SUITE_END (); public: typedef double Time; typedef std::vector<boost::shared_ptr<Note<Time> > > Notes; - void setUp (void) { + void setUp () { type_map = new DummyTypeMap(); assert(type_map); seq = new MySequence<Time>(*type_map); @@ -115,14 +116,15 @@ public: } } - void tearDown (void) { + void tearDown () { test_notes.clear(); delete seq; delete type_map; } - void createTest (void); - void preserveEventOrderingTest (void); + void createTest (); + void preserveEventOrderingTest (); + void iteratorSeekTest (); private: DummyTypeMap* type_map; |