From 14381919388a2be378805a14e22d0bb229b934f7 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 4 Dec 2016 15:40:21 -0500 Subject: Improve coverage of evoral tests --- libs/evoral/test/SMFTest.cpp | 33 +++++++++++++++++++++++++++++++++ libs/evoral/test/SMFTest.hpp | 2 ++ 2 files changed, 35 insertions(+) (limited to 'libs/evoral') diff --git a/libs/evoral/test/SMFTest.cpp b/libs/evoral/test/SMFTest.cpp index 108052c98f..c7e6d23561 100644 --- a/libs/evoral/test/SMFTest.cpp +++ b/libs/evoral/test/SMFTest.cpp @@ -39,9 +39,14 @@ SMFTest::takeFiveTest () TestSMF smf; string testdata_path; CPPUNIT_ASSERT (find_file (test_search_path (), "TakeFive.mid", testdata_path)); + CPPUNIT_ASSERT (SMF::test(testdata_path)); + smf.open(testdata_path); CPPUNIT_ASSERT(!smf.is_empty()); + CPPUNIT_ASSERT_EQUAL((uint16_t)1, smf.num_tracks()); + CPPUNIT_ASSERT_EQUAL(0, smf.seek_to_track(1)); + seq->start_write(); smf.seek_to_start(); @@ -68,3 +73,31 @@ SMFTest::takeFiveTest () Evoral::Beats::ticks_at_rate(time, smf.ppqn())); CPPUNIT_ASSERT(!seq->empty()); } + +void +SMFTest::writeTest () +{ + TestSMF smf; + string testdata_path; + CPPUNIT_ASSERT (find_file (test_search_path (), "TakeFive.mid", testdata_path)); + + smf.open(testdata_path); + CPPUNIT_ASSERT(!smf.is_empty()); + + TestSMF out; + const string output_dir_path = PBD::tmp_writable_directory (PACKAGE, "writeTest"); + const string new_file_path = Glib::build_filename (output_dir_path, "TakeFiveCopy.mid"); + CPPUNIT_ASSERT_EQUAL (0, out.create(new_file_path, 1, 1920)); + out.begin_write(); + + uint32_t delta_t = 0; + uint32_t size = 0; + uint8_t* buf = NULL; + while (smf.read_event(&delta_t, &size, &buf) >= 0) { + out.append_event_delta(delta_t, size, buf, 0); + } + + out.end_write(new_file_path); + + // TODO: Check files are actually equivalent +} diff --git a/libs/evoral/test/SMFTest.hpp b/libs/evoral/test/SMFTest.hpp index 94172c62c8..fc58ede935 100644 --- a/libs/evoral/test/SMFTest.hpp +++ b/libs/evoral/test/SMFTest.hpp @@ -54,6 +54,7 @@ class SMFTest : public CppUnit::TestFixture CPPUNIT_TEST_SUITE(SMFTest); CPPUNIT_TEST(createNewFileTest); CPPUNIT_TEST(takeFiveTest); + CPPUNIT_TEST(writeTest); CPPUNIT_TEST_SUITE_END(); public: @@ -73,6 +74,7 @@ public: void createNewFileTest(); void takeFiveTest(); + void writeTest(); private: DummyTypeMap* type_map; -- cgit v1.2.3