summaryrefslogtreecommitdiff
path: root/libs/evoral/test
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
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')
-rw-r--r--libs/evoral/test/SequenceTest.cpp33
-rw-r--r--libs/evoral/test/SequenceTest.hpp10
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;