diff options
author | Carl Hetherington <carl@carlh.net> | 2012-01-03 16:05:25 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2012-01-03 16:05:25 +0000 |
commit | b6438ed1f60def7a6c673405304b688787dd2ed1 (patch) | |
tree | 0ec9e9914948ba6dc91b1de716c399bcd58b65ea /libs/ardour/test/test_needing_session.cc | |
parent | dd577004459b7810daae2b4ad6741e3a2b858565 (diff) |
Add TestNeedingSession and add missing tempo_test.h
git-svn-id: svn://localhost/ardour2/branches/3.0@11140 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/test/test_needing_session.cc')
-rw-r--r-- | libs/ardour/test/test_needing_session.cc | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/libs/ardour/test/test_needing_session.cc b/libs/ardour/test/test_needing_session.cc new file mode 100644 index 0000000000..e2da42c475 --- /dev/null +++ b/libs/ardour/test/test_needing_session.cc @@ -0,0 +1,83 @@ +#include "midi++/manager.h" +#include "pbd/textreceiver.h" +#include "pbd/compose.h" +#include "pbd/enumwriter.h" +#include "ardour/session.h" +#include "ardour/audioengine.h" +#include "test_needing_session.h" + +using namespace std; +using namespace ARDOUR; +using namespace PBD; + +class TestReceiver : public Receiver +{ +protected: + void receive (Transmitter::Channel chn, const char * str) { + const char *prefix = ""; + + switch (chn) { + case Transmitter::Error: + prefix = ": [ERROR]: "; + break; + case Transmitter::Info: + /* ignore */ + return; + case Transmitter::Warning: + prefix = ": [WARNING]: "; + break; + case Transmitter::Fatal: + prefix = ": [FATAL]: "; + break; + case Transmitter::Throw: + /* this isn't supposed to happen */ + abort (); + } + + /* note: iostreams are already thread-safe: no external + lock required. + */ + + cout << prefix << str << endl; + + if (chn == Transmitter::Fatal) { + exit (9); + } + } +}; + +TestReceiver test_receiver; + +void +TestNeedingSession::setUp () +{ + string const test_session_path = "libs/ardour/test/test_session"; + system (string_compose ("rm -rf %1", test_session_path).c_str()); + + init (false, true); + SessionEvent::create_per_thread_pool ("test", 512); + + test_receiver.listen_to (error); + test_receiver.listen_to (info); + test_receiver.listen_to (fatal); + test_receiver.listen_to (warning); + + AudioEngine* engine = new AudioEngine ("test", ""); + MIDI::Manager::create (engine->jack ()); + CPPUNIT_ASSERT (engine->start () == 0); + + _session = new Session (*engine, test_session_path, "test_session"); + engine->set_session (_session); +} + +void +TestNeedingSession::tearDown () +{ + AudioEngine::instance()->remove_session (); + + delete _session; + + EnumWriter::destroy (); + MIDI::Manager::destroy (); + AudioEngine::destroy (); +} |