1 #include "midi++/manager.h"
2 #include "pbd/textreceiver.h"
3 #include "pbd/compose.h"
4 #include "pbd/enumwriter.h"
5 #include "ardour/session.h"
6 #include "ardour/audioengine.h"
7 #include "test_needing_session.h"
9 extern void setup_libpbd_enums ();
12 using namespace ARDOUR;
15 class TestReceiver : public Receiver
18 void receive (Transmitter::Channel chn, const char * str) {
19 const char *prefix = "";
22 case Transmitter::Error:
23 prefix = ": [ERROR]: ";
25 case Transmitter::Info:
28 case Transmitter::Warning:
29 prefix = ": [WARNING]: ";
31 case Transmitter::Fatal:
32 prefix = ": [FATAL]: ";
34 case Transmitter::Throw:
35 /* this isn't supposed to happen */
39 /* note: iostreams are already thread-safe: no external
43 cout << prefix << str << endl;
45 if (chn == Transmitter::Fatal) {
51 TestReceiver test_receiver;
54 TestNeedingSession::setUp ()
56 string const test_session_path = "libs/ardour/test/test_session";
57 system (string_compose ("rm -rf %1", test_session_path).c_str());
60 SessionEvent::create_per_thread_pool ("test", 512);
62 setup_libpbd_enums ();
64 test_receiver.listen_to (error);
65 test_receiver.listen_to (info);
66 test_receiver.listen_to (fatal);
67 test_receiver.listen_to (warning);
69 AudioEngine* engine = new AudioEngine ("test", "");
72 CPPUNIT_ASSERT (engine->start () == 0);
74 _session = new Session (*engine, test_session_path, "test_session");
75 engine->set_session (_session);
79 TestNeedingSession::tearDown ()
81 AudioEngine::instance()->remove_session ();
82 AudioEngine::instance()->stop (true);
86 EnumWriter::destroy ();
87 MIDI::Manager::destroy ();
88 AudioEngine::destroy ();