Add a test for the constrained cubic interpolation of Evoral::Curve
[ardour.git] / libs / evoral / test / SMFTest.cpp
index 3c82b14f95dd789d94525f7d8ac2e339f5299097..d42ee26dff2f707187147299fd87597c19454fe8 100644 (file)
@@ -21,36 +21,49 @@ SMFTest::createNewFileTest ()
        CPPUNIT_ASSERT(Glib::file_test (new_file_path, Glib::FILE_TEST_IS_REGULAR));
 }
 
+PBD::Searchpath
+test_search_path ()
+{
+#ifdef PLATFORM_WINDOWS
+       string wsp(g_win32_get_package_installation_directory_of_module(NULL));
+       return Glib::build_filename (wsp,  "evoral_testdata");
+#else
+       return Glib::getenv("EVORAL_TEST_PATH");
+#endif
+}
+
 void
 SMFTest::takeFiveTest ()
 {
        TestSMF smf;
-       smf.open("./test/testdata/TakeFive.mid");
+       string testdata_path;
+       CPPUNIT_ASSERT (find_file (test_search_path (), "TakeFive.mid", testdata_path));
+       smf.open(testdata_path);
        CPPUNIT_ASSERT(!smf.is_empty());
 
        seq->start_write();
        smf.seek_to_start();
 
        uint64_t time = 0; /* in SMF ticks */
-       Evoral::Event<Evoral::MusicalTime> ev;
+       Evoral::Event<Evoral::Beats> ev;
 
        uint32_t delta_t = 0;
        uint32_t size    = 0;
        uint8_t* buf     = NULL;
        int ret;
        while ((ret = smf.read_event(&delta_t, &size, &buf)) >= 0) {
-               ev.set(buf, size, Evoral::MusicalTime());
+               ev.set(buf, size, Evoral::Beats());
                time += delta_t;
 
                if (ret > 0) { // didn't skip (meta) event
                        //cerr << "read smf event type " << hex << int(buf[0]) << endl;
-                       ev.set_time(Evoral::MusicalTime::ticks_at_rate(time, smf.ppqn()));
+                       ev.set_time(Evoral::Beats::ticks_at_rate(time, smf.ppqn()));
                        ev.set_event_type(type_map->midi_event_type(buf[0]));
                        seq->append(ev, next_event_id ());
                }
        }
 
        seq->end_write (Sequence<Time>::Relax,
-                       Evoral::MusicalTime::ticks_at_rate(time, smf.ppqn()));
+                       Evoral::Beats::ticks_at_rate(time, smf.ppqn()));
        CPPUNIT_ASSERT(!seq->empty());
 }