summaryrefslogtreecommitdiff
path: root/libs/evoral/test/SequenceTest.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-10-19 16:09:20 +0000
committerDavid Robillard <d@drobilla.net>2009-10-19 16:09:20 +0000
commit0a9b982620d314ed9410a63dce1d84e9be0a35a2 (patch)
tree0c089d99006c764528382742dcb5a88620c8726f /libs/evoral/test/SequenceTest.cpp
parent5c1dccaca54b3ef834a0b4a09fc92b3e1b552eac (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.cpp33
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));
+}