summaryrefslogtreecommitdiff
path: root/libs/evoral/test/SequenceTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/evoral/test/SequenceTest.cpp')
-rw-r--r--libs/evoral/test/SequenceTest.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/libs/evoral/test/SequenceTest.cpp b/libs/evoral/test/SequenceTest.cpp
new file mode 100644
index 0000000000..9c5a2000a7
--- /dev/null
+++ b/libs/evoral/test/SequenceTest.cpp
@@ -0,0 +1,61 @@
+#include "SequenceTest.hpp"
+#include <cassert>
+
+CPPUNIT_TEST_SUITE_REGISTRATION( SequenceTest );
+
+using namespace std;
+
+void
+SequenceTest::createTest (void)
+{
+ CPPUNIT_ASSERT_EQUAL(size_t(0), seq->sysexes().size());
+ CPPUNIT_ASSERT_EQUAL(size_t(0), seq->notes().size());
+ CPPUNIT_ASSERT(seq->notes().begin() == seq->notes().end());
+}
+
+
+void
+SequenceTest::preserveEventOrderingTest (void)
+{
+ vector<boost::shared_ptr<Event<Time> > > inserted_events;
+
+ seq->start_write();
+
+ for (Notes::const_iterator i = test_notes.begin(); i != test_notes.end(); ++i) {
+ uint8_t buffer[2];
+ Event<Time>* event = new Event<Time>(
+ DummyTypeMap::CONTROL, (*i)->on_event().time(), 3, buffer, true
+ );
+
+ event->buffer()[0] = MIDI_CMD_CONTROL;
+ event->buffer()[1] = event->time() / 100;
+ event->buffer()[2] = event->time() / 100;
+
+ boost::shared_ptr<Event<Time> > event_ptr(event);
+
+ seq->append((*i)->on_event());
+ inserted_events.push_back(
+ boost::shared_ptr<Event<Time> >(
+ new Event<Time>((*i)->on_event(), true)
+ ));
+
+ seq->append(*event_ptr);
+ inserted_events.push_back(event_ptr);
+
+ seq->append((*i)->off_event());
+ inserted_events.push_back(
+ boost::shared_ptr<Event<Time> >(
+ new Event<Time>((*i)->off_event(), true)
+ ));
+ }
+
+ seq->end_write();
+
+ TestSink<Time> sink;
+ sink.writing.connect(sigc::mem_fun(&sink, &TestSink<Time>::assertLastEventTimeLessOrEqualEventTime));
+
+ seq->read(sink, timestamp_t(0), timedur_t(1200), timestamp_t(0));
+
+ CPPUNIT_ASSERT_EQUAL(size_t(12), test_notes.size());
+
+}