4 #include "ardour/audio_track.h"
5 #include "ardour/audioengine.h"
6 #include "ardour/luascripting.h"
7 #include "ardour/lua_script_params.h"
8 #include "ardour/plugin_manager.h"
9 #include "ardour/plugin_insert.h"
10 #include "ardour/session.h"
12 #include "lua_script_test.h"
14 using namespace ARDOUR;
16 CPPUNIT_TEST_SUITE_REGISTRATION(LuaScriptTest);
19 LuaScriptTest::session_script_test ()
21 LuaScriptList scripts (LuaScripting::instance ().scripts (LuaScriptInfo::Session));
22 printf("\n * Testing %ld Lua session scripts\n", scripts.size());
24 for (LuaScriptList::const_iterator s = scripts.begin(); s != scripts.end(); ++s) {
25 const LuaScriptInfoPtr& spi (*s);
27 std::string script = "";
30 script = Glib::file_get_contents (spi->path);
31 } catch (Glib::FileError e) {
32 CPPUNIT_FAIL ("Cannot read script file");
37 LuaScriptParamList lsp = LuaScriptParams::script_params (spi, "sess_params");
38 _session->register_lua_function ("test", script, lsp);
39 } catch (SessionException e) {
40 CPPUNIT_FAIL ("Cannot add script to session");
43 CPPUNIT_ASSERT (!_session->registered_lua_functions ().empty());
44 Glib::usleep(200000); // wait to script to execute during process()
45 // if the script fails, it'll be removed.
46 CPPUNIT_ASSERT (!_session->registered_lua_functions ().empty());
47 _session->unregister_lua_function ("test");
48 CPPUNIT_ASSERT (_session->registered_lua_functions ().empty());
53 LuaScriptTest::dsp_script_test ()
55 PluginManager& pm = PluginManager::instance ();
56 std::list<boost::shared_ptr<AudioTrack> > tracks;
58 tracks = _session->new_audio_track (2, 2, NULL, 1, "", PresentationInfo::max_order);
59 CPPUNIT_ASSERT (tracks.size() == 1);
60 boost::shared_ptr<Route> r = tracks.front ();
63 const PluginInfoList& plugs = pm.lua_plugin_info();
64 for (PluginInfoList::const_iterator i = plugs.begin(); i != plugs.end(); ++i) {
65 std::cout << "LuaProc: " <<(*i)->name << "\n";
67 PluginPtr p = (*i)->load (*_session);
70 boost::shared_ptr<Processor> processor (new PluginInsert (*_session, p));
71 processor->enable (true);
73 int rv = r->add_processor (processor, boost::shared_ptr<Processor>(), 0);
74 CPPUNIT_ASSERT (rv == 0);
75 processor->enable (true);
76 Glib::usleep(200000); // run process, failing plugins will be deactivated.
77 CPPUNIT_ASSERT (processor->active());
78 rv = r->remove_processor (processor, NULL, true);
79 CPPUNIT_ASSERT (rv == 0);