summaryrefslogtreecommitdiff
path: root/libs/evoral/test/SMFTest.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/evoral/test/SMFTest.h')
-rw-r--r--libs/evoral/test/SMFTest.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/libs/evoral/test/SMFTest.h b/libs/evoral/test/SMFTest.h
new file mode 100644
index 0000000000..79bf3d0e89
--- /dev/null
+++ b/libs/evoral/test/SMFTest.h
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2009-2010 Carl Hetherington <carl@carlh.net>
+ * Copyright (C) 2009-2016 David Robillard <d@drobilla.net>
+ * Copyright (C) 2009 Hans Baier <hansfbaier@googlemail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <cassert>
+#include <stdint.h>
+#include <sigc++/sigc++.h>
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+#include "temporal/beats.h"
+#include "evoral/SMF.h"
+#include "SequenceTest.hpp"
+
+using namespace Evoral;
+
+class TestSMF : public SMF {
+public:
+ std::string path() const { return _path; }
+
+ int open(const std::string& path) {
+ _path = path;
+ return SMF::open(path);
+ }
+
+ void close() {
+ return SMF::close();
+ }
+
+ int read_event(uint32_t* delta_t, uint32_t* size, uint8_t** buf) const {
+ event_id_t id;
+ return SMF::read_event(delta_t, size, buf, &id);
+ }
+
+private:
+ std::string _path;
+};
+
+class SMFTest : public CppUnit::TestFixture
+{
+ CPPUNIT_TEST_SUITE(SMFTest);
+ CPPUNIT_TEST(createNewFileTest);
+ CPPUNIT_TEST(takeFiveTest);
+ CPPUNIT_TEST(writeTest);
+ CPPUNIT_TEST_SUITE_END();
+
+public:
+ typedef Temporal::Beats Time;
+
+ void setUp() {
+ type_map = new DummyTypeMap();
+ assert(type_map);
+ seq = new MySequence<Time>(*type_map);
+ assert(seq);
+ }
+
+ void tearDown() {
+ delete seq;
+ delete type_map;
+ }
+
+ void createNewFileTest();
+ void takeFiveTest();
+ void writeTest();
+
+private:
+ DummyTypeMap* type_map;
+ MySequence<Time>* seq;
+};
+