2 #include <glibmm/fileutils.h>
3 #include <glibmm/miscutils.h>
7 #include "pbd/textreceiver.h"
8 #include "pbd/file_utils.h"
9 #include "ardour/session.h"
10 #include "ardour/audioengine.h"
11 #include "ardour/smf_source.h"
12 #include "ardour/midi_model.h"
14 #include "test_util.h"
16 #include "session_test.h"
18 CPPUNIT_TEST_SUITE_REGISTRATION (SessionTest);
21 using namespace ARDOUR;
24 static TextReceiver text_receiver ("test");
29 SessionEvent::create_per_thread_pool ("session_test", 512);
31 text_receiver.listen_to (error);
32 text_receiver.listen_to (info);
33 text_receiver.listen_to (fatal);
34 text_receiver.listen_to (warning);
36 AudioEngine* engine = AudioEngine::create ();
38 CPPUNIT_ASSERT (engine);
40 CPPUNIT_ASSERT (engine->set_backend ("Dummy", "", ""));
44 CPPUNIT_ASSERT (engine->start () == 0);
48 SessionTest::tearDown ()
50 // this is needed or there is a crash in MIDI::Manager::destroy
51 AudioEngine::instance()->stop ();
53 AudioEngine::destroy ();
57 SessionTest::new_session ()
59 const string session_name("test_session");
60 std::string new_session_dir = Glib::build_filename (new_test_output_dir(), session_name);
62 CPPUNIT_ASSERT (!Glib::file_test (new_session_dir, Glib::FILE_TEST_EXISTS));
64 Session* new_session = 0;
66 new_session = new Session (*AudioEngine::instance (), new_session_dir, session_name);
68 CPPUNIT_ASSERT (new_session);
70 // shouldn't need to do this as it is done in Session constructor
71 // via Session::when_engine_running
72 //AudioEngine::instance->set_session (new_session);
74 new_session->save_state ("");
80 SessionTest::new_session_from_template ()
82 const string session_name("two_tracks");
83 const string session_template_dir_name("2 Track-template");
85 std::string new_session_dir = Glib::build_filename (new_test_output_dir(), session_name);
87 CPPUNIT_ASSERT (!Glib::file_test (new_session_dir, Glib::FILE_TEST_EXISTS));
89 std::string session_template_dir = test_search_path ().front ();
90 session_template_dir = Glib::build_filename (session_template_dir, "2 Track-template");
92 CPPUNIT_ASSERT (Glib::file_test (session_template_dir, Glib::FILE_TEST_IS_DIR));
94 Session* new_session = 0;
95 BusProfile* bus_profile = 0;
97 // create a new session based on session template
98 new_session = new Session (*AudioEngine::instance (), new_session_dir, session_name,
99 bus_profile, session_template_dir);
101 CPPUNIT_ASSERT (new_session);
103 new_session->save_state ("");
107 Session* template_session = 0;
109 // reopen same session to check that it opens without error
110 template_session = new Session (*AudioEngine::instance (), new_session_dir, session_name);
112 CPPUNIT_ASSERT (template_session);
114 delete template_session;