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;
25 SessionTest::new_session ()
27 const string session_name("test_session");
28 std::string new_session_dir = Glib::build_filename (new_test_output_dir(), session_name);
30 CPPUNIT_ASSERT (!Glib::file_test (new_session_dir, Glib::FILE_TEST_EXISTS));
32 create_and_start_dummy_backend ();
34 ARDOUR::Session* new_session = load_session (new_session_dir, "test_session");
36 CPPUNIT_ASSERT (new_session);
38 new_session->save_state ("");
41 stop_and_destroy_backend ();
45 SessionTest::new_session_from_template ()
47 const string session_name("two_tracks");
48 const string session_template_dir_name("2 Track-template");
50 std::string new_session_dir = Glib::build_filename (new_test_output_dir(), session_name);
52 CPPUNIT_ASSERT (!Glib::file_test (new_session_dir, Glib::FILE_TEST_EXISTS));
54 std::string session_template_dir = test_search_path ().front ();
55 session_template_dir = Glib::build_filename (session_template_dir, "2 Track-template");
57 CPPUNIT_ASSERT (Glib::file_test (session_template_dir, Glib::FILE_TEST_IS_DIR));
59 Session* new_session = 0;
60 BusProfile* bus_profile = 0;
62 create_and_start_dummy_backend ();
64 // create a new session based on session template
65 new_session = new Session (*AudioEngine::instance (), new_session_dir, session_name,
66 bus_profile, session_template_dir);
68 CPPUNIT_ASSERT (new_session);
70 new_session->save_state ("");
73 stop_and_destroy_backend ();
75 // keep the same audio backend
76 create_and_start_dummy_backend ();
78 Session* template_session = 0;
80 // reopen same session to check that it opens without error
81 template_session = new Session (*AudioEngine::instance (), new_session_dir, session_name);
83 CPPUNIT_ASSERT (template_session);
85 delete template_session;
86 stop_and_destroy_backend ();