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/SequenceTest.cpp | |
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/SequenceTest.cpp')
-rw-r--r-- | libs/evoral/test/SequenceTest.cpp | 33 |
1 files changed, 31 insertions, 2 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)); +} |