Use nframes_t for timestamps of real (jack) time MIDI events (i.e. in MidiBuffer...
[ardour.git] / libs / evoral / test / SequenceTest.cpp
1 #include "SequenceTest.hpp"
2 #include <cassert>
3
4 CPPUNIT_TEST_SUITE_REGISTRATION(SequenceTest);
5
6 using namespace std;
7
8 void 
9 SequenceTest::createTest (void)
10 {
11         CPPUNIT_ASSERT_EQUAL(size_t(0), seq->sysexes().size());
12         CPPUNIT_ASSERT_EQUAL(size_t(0), seq->notes().size());
13         CPPUNIT_ASSERT(seq->notes().begin() == seq->notes().end());
14 }
15
16
17 void 
18 SequenceTest::preserveEventOrderingTest (void)
19 {
20         vector< boost::shared_ptr< Event<Time> > > inserted_events;
21         
22         seq->start_write();
23         
24         for (Notes::const_iterator i = test_notes.begin(); i != test_notes.end(); ++i) {
25                 uint8_t buffer[2];
26                 Event<Time>* event = new Event<Time>(
27                                 DummyTypeMap::CONTROL, (*i)->on_event().time(), 3, buffer, true
28                 );
29                 
30                 event->buffer()[0] = MIDI_CMD_CONTROL;
31                 event->buffer()[1] = event->time() / 100;
32                 event->buffer()[2] = event->time() / 100;
33                 
34                 boost::shared_ptr<Event<Time> > event_ptr(event);
35
36                 seq->append((*i)->on_event());
37                 inserted_events.push_back(
38                                 boost::shared_ptr<Event<Time> >(
39                                                 new Event<Time>((*i)->on_event(), true)
40                 ));
41                 
42                 seq->append(*event_ptr);
43                 inserted_events.push_back(event_ptr);
44                 
45                 seq->append((*i)->off_event());
46                 inserted_events.push_back(
47                                 boost::shared_ptr<Event<Time> >(
48                                                 new Event<Time>((*i)->off_event(), true)
49                 ));
50         }
51         
52         seq->end_write();
53
54         TestSink<Time> sink;
55         sink.writing.connect(sigc::mem_fun(&sink, &TestSink<Time>::assertLastEventTimeEarlier));
56
57
58         for (MySequence<Time>::const_iterator i = seq->begin(); i != seq->end(); ++i) {
59                 sink.write(i->time(), i->event_type(), i->size(), i->buffer());
60         }
61         
62         CPPUNIT_ASSERT_EQUAL(size_t(12), test_notes.size());
63 }
64