From d9b4c6be6a9366434f92b2ed8897a139ce4f9089 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sat, 20 Dec 2014 18:56:36 +0700 Subject: Add a few test util functions and refactor existing test code --- libs/ardour/test/session_test.cc | 50 +++++++------------------------- libs/ardour/test/session_test.h | 2 -- libs/ardour/test/test_needing_session.cc | 5 ++-- libs/ardour/test/test_util.cc | 33 ++++++++++++++++----- libs/ardour/test/test_util.h | 4 +++ libs/ardour/test/testrunner.cc | 6 +++- 6 files changed, 47 insertions(+), 53 deletions(-) diff --git a/libs/ardour/test/session_test.cc b/libs/ardour/test/session_test.cc index 5da03a637d..b9372aa5a5 100644 --- a/libs/ardour/test/session_test.cc +++ b/libs/ardour/test/session_test.cc @@ -21,38 +21,6 @@ using namespace std; 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 () { @@ -61,20 +29,16 @@ 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 @@ -94,7 +58,8 @@ SessionTest::new_session_from_template () 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, @@ -105,6 +70,10 @@ SessionTest::new_session_from_template () 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; @@ -114,4 +83,5 @@ SessionTest::new_session_from_template () CPPUNIT_ASSERT (template_session); delete template_session; + stop_and_destroy_backend (); } diff --git a/libs/ardour/test/session_test.h b/libs/ardour/test/session_test.h index cadab67d3b..9aba3d9847 100644 --- a/libs/ardour/test/session_test.h +++ b/libs/ardour/test/session_test.h @@ -10,8 +10,6 @@ class SessionTest : public CppUnit::TestFixture CPPUNIT_TEST_SUITE_END (); public: - virtual void setUp (); - virtual void tearDown (); void new_session (); void new_session_from_template (); diff --git a/libs/ardour/test/test_needing_session.cc b/libs/ardour/test/test_needing_session.cc index 114ffeb485..d1ce25417b 100644 --- a/libs/ardour/test/test_needing_session.cc +++ b/libs/ardour/test/test_needing_session.cc @@ -16,6 +16,7 @@ TestNeedingSession::setUp () { 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"); } @@ -23,8 +24,6 @@ void TestNeedingSession::tearDown () { delete _session; - AudioEngine::instance()->remove_session (); - AudioEngine::instance()->stop (); - AudioEngine::destroy (); + stop_and_destroy_backend (); _session = 0; } diff --git a/libs/ardour/test/test_util.cc b/libs/ardour/test/test_util.cc index c111aa7d26..cedb7fa849 100644 --- a/libs/ardour/test/test_util.cc +++ b/libs/ardour/test/test_util.cc @@ -135,11 +135,8 @@ protected: 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); @@ -152,17 +149,39 @@ load_session (string dir, string state) 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; } diff --git a/libs/ardour/test/test_util.h b/libs/ardour/test/test_util.h index d10e92a8a6..fe8e9e9389 100644 --- a/libs/ardour/test/test_util.h +++ b/libs/ardour/test/test_util.h @@ -31,6 +31,8 @@ namespace ARDOUR { class Session; } +bool test_init (); + PBD::Searchpath test_search_path (); std::string new_test_output_dir (std::string prefix = ""); @@ -39,6 +41,8 @@ int get_test_sample_rate (); extern void check_xml (XMLNode *, std::string, std::list 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 diff --git a/libs/ardour/test/testrunner.cc b/libs/ardour/test/testrunner.cc index e72cb5c4fd..9fa8c82798 100644 --- a/libs/ardour/test/testrunner.cc +++ b/libs/ardour/test/testrunner.cc @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -10,6 +11,7 @@ #include "pbd/debug.h" #include "ardour/ardour.h" +#include "test_util.h" static const char* localedir = LOCALEDIR; @@ -47,7 +49,9 @@ main(int argc, char* argv[]) } } - ARDOUR::init (false, true, localedir); + CPPUNIT_ASSERT (ARDOUR::init (false, true, localedir)); + + CPPUNIT_ASSERT (test_init ()); CppUnit::TestResult testresult; -- cgit v1.2.3