Mixxx

/home/maxime/Projets/Mixxx/1.10/mixxx/src/test/midiscriptenginetest.cpp

Go to the documentation of this file.
00001 
00002 #include <gtest/gtest.h>
00003 #include <QDebug>
00004 #include <QApplication>
00005 #include <QObject>
00006 #include <QFile>
00007 
00008 #include "controlobject.h"
00009 #include "configobject.h"
00010 #include "midi/midiscriptengine.h"
00011 
00012 namespace {
00013 
00014 class MidiScriptEngineTest : public testing::Test {
00015   protected:
00016     virtual void SetUp() {
00017         qDebug() << "SetUp";
00018         static int argc = 1;
00019         static char** argv = NULL;
00020         app = new QApplication(argc, argv);
00021         MidiDevice* pDevice = NULL;
00022         scriptEngine = new MidiScriptEngine(pDevice);
00023         scriptEngine->setMidiDebug(false);
00024         scriptEngine->setMidiPopups(false);
00025         scriptEngine->moveToThread(scriptEngine);
00026         scriptEngine->start();
00027         while(!scriptEngine->isReady()) { }
00028     }
00029 
00030     virtual void TearDown() {
00031         qDebug() << "TearDown";
00032         scriptEngine->gracefulShutdown(QList<QString>());
00033         scriptEngine->wait();
00034         delete scriptEngine;
00035         delete app;
00036     }
00037 
00038     QApplication *app;
00039     MidiScriptEngine *scriptEngine;
00040 };
00041 
00042 TEST_F(MidiScriptEngineTest, commonScriptHasNoErrors) {
00043     // ConfigObject<ConfigValue> config("~/.mixxx/mixxx.cfg");
00044     // QString commonScript = config.getConfigPath() + "/" +
00045     //         "/midi/midi-mappings-scripts.js";
00046     QString commonScript = "./res/midi/midi-mappings-scripts.js";
00047     scriptEngine->evaluate(commonScript);
00048     EXPECT_FALSE(scriptEngine->hasErrors(commonScript));
00049 }
00050 
00051 TEST_F(MidiScriptEngineTest, scriptSetValue) {
00052     QString script = "test.js";
00053     QFile f(script);
00054     f.open(QIODevice::ReadWrite | QIODevice::Truncate);
00055     f.write("setValue = function() { engine.setValue('[Channel1]', 'co', 1.0); }\n");
00056     f.close();
00057 
00058     scriptEngine->evaluate(script);;
00059     EXPECT_FALSE(scriptEngine->hasErrors(script));
00060 
00061     ControlObject *co = new ControlObject(ConfigKey("[Channel1]", "co"));
00062     co->set(0.0);
00063     scriptEngine->execute("setValue");
00064     ControlObject::sync();
00065     EXPECT_DOUBLE_EQ(co->get(), 1.0f);
00066 
00067     delete co;
00068     co = NULL;
00069 
00070     f.remove();
00071 }
00072 
00073 TEST_F(MidiScriptEngineTest, scriptGetSetValue) {
00074     QString script = "test.js";
00075     QFile f(script);
00076     f.open(QIODevice::ReadWrite | QIODevice::Truncate);
00077     f.write("getSetValue = function() { var val = engine.getValue('[Channel1]', 'co'); engine.setValue('[Channel1]', 'co', val + 1); }\n");
00078     f.close();
00079 
00080     scriptEngine->evaluate(script);;
00081     EXPECT_FALSE(scriptEngine->hasErrors(script));
00082 
00083     ControlObject *co = new ControlObject(ConfigKey("[Channel1]", "co"));
00084     co->set(0.0);
00085     scriptEngine->execute("getSetValue");
00086     ControlObject::sync();
00087     EXPECT_DOUBLE_EQ(co->get(), 1.0f);
00088 
00089     delete co;
00090     co = NULL;
00091 
00092     f.remove();
00093 }
00094 
00095 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines