Add unit test for Sequence iterator seeking.
authorDavid Robillard <d@drobilla.net>
Mon, 19 Oct 2009 16:09:20 +0000 (16:09 +0000)
committerDavid Robillard <d@drobilla.net>
Mon, 19 Oct 2009 16:09:20 +0000 (16:09 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@5801 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/evoral/test/SequenceTest.cpp
libs/evoral/test/SequenceTest.hpp

index cac819338f6118eb53ab2cc5d4b569b5263620dd..1e9dae1a4cdcf13bbf3f9f5a63d1f65bdb9d7e92 100644 (file)
@@ -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));
+}
index 5848f034e58388a304ac481950dc164125ed408a..1087ab7003bdbf95d6ccd01f9b8c635e32db6fba 100644 (file)
@@ -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;