Add unit test for Sequence iterator seeking.

git-svn-id: svn://localhost/ardour2/branches/3.0@5801 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
David Robillard 2009-10-19 16:09:20 +00:00
parent 5c1dccaca5
commit 0a9b982620
2 changed files with 37 additions and 6 deletions

View file

@ -6,7 +6,7 @@ CPPUNIT_TEST_SUITE_REGISTRATION(SequenceTest);
using namespace std; using namespace std;
void void
SequenceTest::createTest (void) SequenceTest::createTest ()
{ {
CPPUNIT_ASSERT_EQUAL(size_t(0), seq->sysexes().size()); CPPUNIT_ASSERT_EQUAL(size_t(0), seq->sysexes().size());
CPPUNIT_ASSERT_EQUAL(size_t(0), seq->notes().size()); CPPUNIT_ASSERT_EQUAL(size_t(0), seq->notes().size());
@ -15,7 +15,7 @@ SequenceTest::createTest (void)
void void
SequenceTest::preserveEventOrderingTest (void) SequenceTest::preserveEventOrderingTest ()
{ {
vector< boost::shared_ptr< Event<Time> > > inserted_events; vector< boost::shared_ptr< Event<Time> > > inserted_events;
@ -62,3 +62,32 @@ SequenceTest::preserveEventOrderingTest (void)
CPPUNIT_ASSERT_EQUAL(size_t(12), test_notes.size()); 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));
}

View file

@ -97,13 +97,14 @@ class SequenceTest : public CppUnit::TestFixture
CPPUNIT_TEST_SUITE (SequenceTest); CPPUNIT_TEST_SUITE (SequenceTest);
CPPUNIT_TEST (createTest); CPPUNIT_TEST (createTest);
CPPUNIT_TEST (preserveEventOrderingTest); CPPUNIT_TEST (preserveEventOrderingTest);
CPPUNIT_TEST (iteratorSeekTest);
CPPUNIT_TEST_SUITE_END (); CPPUNIT_TEST_SUITE_END ();
public: public:
typedef double Time; typedef double Time;
typedef std::vector<boost::shared_ptr<Note<Time> > > Notes; typedef std::vector<boost::shared_ptr<Note<Time> > > Notes;
void setUp (void) { void setUp () {
type_map = new DummyTypeMap(); type_map = new DummyTypeMap();
assert(type_map); assert(type_map);
seq = new MySequence<Time>(*type_map); seq = new MySequence<Time>(*type_map);
@ -115,14 +116,15 @@ public:
} }
} }
void tearDown (void) { void tearDown () {
test_notes.clear(); test_notes.clear();
delete seq; delete seq;
delete type_map; delete type_map;
} }
void createTest (void); void createTest ();
void preserveEventOrderingTest (void); void preserveEventOrderingTest ();
void iteratorSeekTest ();
private: private:
DummyTypeMap* type_map; DummyTypeMap* type_map;