Update evoral test suite

This commit is contained in:
David Robillard 2016-12-04 18:49:56 -05:00
parent 9a848d5ba6
commit 5ab2e34b2c
3 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,33 @@
#include "NoteTest.hpp"
#include "evoral/Note.hpp"
#include "evoral/Beats.hpp"
#include <stdlib.h>
CPPUNIT_TEST_SUITE_REGISTRATION (NoteTest);
using namespace Evoral;
typedef Beats Time;
void
NoteTest::copyTest ()
{
Note<Time> a(0, Beats(1.0), Beats(2.0), 60, 0x40);
Note<Time> b(a);
CPPUNIT_ASSERT (a == b);
// Broken due to event double free!
// Note<Time> c(1, Beats(3.0), Beats(4.0), 61, 0x41);
// c = a;
// CPPUNIT_ASSERT (a == c);
}
void
NoteTest::idTest ()
{
Note<Time> a(0, Beats(1.0), Beats(2.0), 60, 0x40);
CPPUNIT_ASSERT_EQUAL (-1, a.id());
a.set_id(1234);
CPPUNIT_ASSERT_EQUAL (1234, a.id());
}

View File

@ -0,0 +1,16 @@
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
class NoteTest : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE (NoteTest);
CPPUNIT_TEST (copyTest);
CPPUNIT_TEST (idTest);
CPPUNIT_TEST_SUITE_END ();
public:
void copyTest ();
void idTest ();
};

View File

@ -72,6 +72,22 @@ SMFTest::takeFiveTest ()
seq->end_write (Sequence<Time>::Relax,
Evoral::Beats::ticks_at_rate(time, smf.ppqn()));
CPPUNIT_ASSERT(!seq->empty());
// Iterate over all notes
bool on = true;
size_t num_notes = 0;
size_t num_sysexes = 0;
for (Sequence<Time>::const_iterator i = seq->begin(Evoral::Beats()); i != seq->end(); ++i) {
if (i->is_note_on()) {
++num_notes;
} else if (i->is_sysex()) {
++num_sysexes;
}
}
CPPUNIT_ASSERT_EQUAL(size_t(3833), seq->notes().size());
CPPUNIT_ASSERT_EQUAL(size_t(3833), num_notes);
CPPUNIT_ASSERT_EQUAL(size_t(232), seq->sysexes().size());
CPPUNIT_ASSERT_EQUAL(size_t(232), num_sysexes);
}
void