using namespace ARDOUR;
using namespace PBD;
-static TextReceiver text_receiver ("test");
-
-void
-SessionTest::setUp ()
-{
- SessionEvent::create_per_thread_pool ("session_test", 512);
-
- text_receiver.listen_to (error);
- text_receiver.listen_to (info);
- text_receiver.listen_to (fatal);
- text_receiver.listen_to (warning);
-
- AudioEngine* engine = AudioEngine::create ();
-
- CPPUNIT_ASSERT (engine);
-
- CPPUNIT_ASSERT (engine->set_backend ("Dummy", "", ""));
-
- init_post_engine ();
-
- CPPUNIT_ASSERT (engine->start () == 0);
-}
-
-void
-SessionTest::tearDown ()
-{
- // this is needed or there is a crash in MIDI::Manager::destroy
- AudioEngine::instance()->remove_session ();
- AudioEngine::instance()->stop ();
- AudioEngine::destroy ();
-}
-
void
SessionTest::new_session ()
{
CPPUNIT_ASSERT (!Glib::file_test (new_session_dir, Glib::FILE_TEST_EXISTS));
- Session* new_session = 0;
- AudioEngine::create ();
+ create_and_start_dummy_backend ();
- new_session = new Session (*AudioEngine::instance (), new_session_dir, session_name);
+ ARDOUR::Session* new_session = load_session (new_session_dir, "test_session");
CPPUNIT_ASSERT (new_session);
- // shouldn't need to do this as it is done in Session constructor
- // via Session::when_engine_running
- //AudioEngine::instance->set_session (new_session);
-
new_session->save_state ("");
delete new_session;
+ stop_and_destroy_backend ();
}
void
Session* new_session = 0;
BusProfile* bus_profile = 0;
- AudioEngine::create ();
+
+ create_and_start_dummy_backend ();
// create a new session based on session template
new_session = new Session (*AudioEngine::instance (), new_session_dir, session_name,
new_session->save_state ("");
delete new_session;
+ stop_and_destroy_backend ();
+
+ // keep the same audio backend
+ create_and_start_dummy_backend ();
Session* template_session = 0;
CPPUNIT_ASSERT (template_session);
delete template_session;
+ stop_and_destroy_backend ();
}
CPPUNIT_TEST_SUITE_END ();
public:
- virtual void setUp ();
- virtual void tearDown ();
void new_session ();
void new_session_from_template ();
{
const string session_name("test_session");
std::string new_session_dir = Glib::build_filename (new_test_output_dir(), session_name);
+ create_and_start_dummy_backend ();
_session = load_session (new_session_dir, "test_session");
}
TestNeedingSession::tearDown ()
{
delete _session;
- AudioEngine::instance()->remove_session ();
- AudioEngine::instance()->stop ();
- AudioEngine::destroy ();
+ stop_and_destroy_backend ();
_session = 0;
}
TestReceiver test_receiver;
-/** @param dir Session directory.
- * @param state Session state file, without .ardour suffix.
- */
-Session *
-load_session (string dir, string state)
+bool
+test_init ()
{
SessionEvent::create_per_thread_pool ("test", 512);
required bits in gtk2_ardour.
*/
Config->set_use_lxvst (false);
+ return true;
+}
+void
+create_and_start_dummy_backend ()
+{
AudioEngine* engine = AudioEngine::create ();
+ CPPUNIT_ASSERT (AudioEngine::instance ());
+ CPPUNIT_ASSERT (engine);
CPPUNIT_ASSERT (engine->set_backend ("Dummy", "", ""));
init_post_engine ();
CPPUNIT_ASSERT (engine->start () == 0);
+}
- Session* session = new Session (*engine, dir, state);
- engine->set_session (session);
+void
+stop_and_destroy_backend ()
+{
+ AudioEngine::instance()->remove_session ();
+ AudioEngine::instance()->stop ();
+ AudioEngine::destroy ();
+}
+
+/** @param dir Session directory.
+ * @param state Session state file, without .ardour suffix.
+ */
+Session *
+load_session (string dir, string state)
+{
+ Session* session = new Session (*AudioEngine::instance(), dir, state);
+ AudioEngine::instance ()->set_session (session);
return session;
}
class Session;
}
+bool test_init ();
+
PBD::Searchpath test_search_path ();
std::string new_test_output_dir (std::string prefix = "");
extern void check_xml (XMLNode *, std::string, std::list<std::string> const &);
extern bool write_ref (XMLNode *, std::string);
+extern void create_and_start_dummy_backend ();
+extern void stop_and_destroy_backend ();
extern ARDOUR::Session* load_session (std::string, std::string);
#endif
#include <cppunit/CompilerOutputter.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/TestRunner.h>
#include "pbd/debug.h"
#include "ardour/ardour.h"
+#include "test_util.h"
static const char* localedir = LOCALEDIR;
}
}
- ARDOUR::init (false, true, localedir);
+ CPPUNIT_ASSERT (ARDOUR::init (false, true, localedir));
+
+ CPPUNIT_ASSERT (test_init ());
CppUnit::TestResult testresult;