Update evoral test suite
authorDavid Robillard <d@drobilla.net>
Sun, 4 Dec 2016 23:49:56 +0000 (18:49 -0500)
committerDavid Robillard <d@drobilla.net>
Sun, 4 Dec 2016 23:49:56 +0000 (18:49 -0500)
libs/evoral/test/NoteTest.cpp [new file with mode: 0644]
libs/evoral/test/NoteTest.hpp [new file with mode: 0644]
libs/evoral/test/SMFTest.cpp

diff --git a/libs/evoral/test/NoteTest.cpp b/libs/evoral/test/NoteTest.cpp
new file mode 100644 (file)
index 0000000..b96cd7c
--- /dev/null
@@ -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());
+}
diff --git a/libs/evoral/test/NoteTest.hpp b/libs/evoral/test/NoteTest.hpp
new file mode 100644 (file)
index 0000000..9d0af69
--- /dev/null
@@ -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 ();
+};
+
+
index c7e6d235614beb2c3d1b03f79de7e8bde24578ef..b177ca91084fb1066d0cc1f8f47c52b9605ecef7 100644 (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