summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2014-12-20 18:56:36 +0700
committerTim Mayberry <mojofunk@gmail.com>2015-02-15 12:53:41 +1000
commitd9b4c6be6a9366434f92b2ed8897a139ce4f9089 (patch)
tree914d7d950da0d6e58e7fed10804d9009774860ba
parentef99814f7aedca0e03be617c6fd24ff3f82a9108 (diff)
Add a few test util functions and refactor existing test code
-rw-r--r--libs/ardour/test/session_test.cc50
-rw-r--r--libs/ardour/test/session_test.h2
-rw-r--r--libs/ardour/test/test_needing_session.cc5
-rw-r--r--libs/ardour/test/test_util.cc33
-rw-r--r--libs/ardour/test/test_util.h4
-rw-r--r--libs/ardour/test/testrunner.cc6
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<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
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 <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>
@@ -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;