![]() |
Mixxx
|
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 }