| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 | 
							- /*=========================================================================
 
-   Library:   CTK
 
-   Copyright (c) German Cancer Research Center,
 
-     Division of Medical and Biological Informatics
 
-   Licensed under the Apache License, Version 2.0 (the "License");
 
-   you may not use this file except in compliance with the License.
 
-   You may obtain a copy of the License at
 
-       http://www.apache.org/licenses/LICENSE-2.0.txt
 
-   Unless required by applicable law or agreed to in writing, software
 
-   distributed under the License is distributed on an "AS IS" BASIS,
 
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
-   See the License for the specific language governing permissions and
 
-   limitations under the License.
 
- =========================================================================*/
 
- // Qt includes
 
- #include <QSpinBox>
 
- #include <QComboBox>
 
- #include <QVariant>
 
- #if (QT_VERSION < QT_VERSION_CHECK(4,7,0))
 
- Q_DECLARE_METATYPE(QVariant)
 
- #endif
 
- // CTK includes
 
- #include "ctkCmdLineModuleManager.h"
 
- #include "ctkCmdLineModuleBackend.h"
 
- #include "ctkCmdLineModuleFrontendQtGui.h"
 
- #include "ctkCmdLineModuleFuture.h"
 
- #include "ctkCmdLineModuleDescription.h"
 
- #include "ctkCmdLineModuleParameter.h"
 
- #include "ctkTest.h"
 
- #if (QT_VERSION < QT_VERSION_CHECK(4,7,0))
 
- extern int qHash(const QUrl& url);
 
- #endif
 
- namespace {
 
- class BackendMockUp : public ctkCmdLineModuleBackend
 
- {
 
- public:
 
-   void addModule(const QUrl& location, const QByteArray& xml)
 
-   {
 
-     this->UrlToXml[location] = xml;
 
-   }
 
-   virtual QString name() const { return "Mockup"; }
 
-   virtual QString description() const { return "Test Mock-up"; }
 
-   virtual QList<QString> schemes() const { return QList<QString>() << "test"; }
 
-   virtual qint64 timeStamp(const QUrl& /*location*/) const { return 0; }
 
-   virtual QByteArray rawXmlDescription(const QUrl& location, int /*timeout*/)
 
-   {
 
-     return UrlToXml[location];
 
-   }
 
- protected:
 
-   virtual ctkCmdLineModuleFuture run(ctkCmdLineModuleFrontend* /*frontend*/)
 
-   {
 
-     return ctkCmdLineModuleFuture();
 
-   }
 
- private:
 
-   QHash<QUrl, QByteArray> UrlToXml;
 
- };
 
- }
 
- // ----------------------------------------------------------------------------
 
- class ctkCmdLineModuleFrontendQtGuiTester: public QObject
 
- {
 
-   Q_OBJECT
 
- private:
 
-   QScopedPointer<ctkCmdLineModuleBackend> Backend;
 
-   ctkCmdLineModuleManager Manager;
 
-   ctkCmdLineModuleReference ModuleRef;
 
-   QString ChangedParameter;
 
-   QVariant ChangedParameterValue;
 
- private Q_SLOTS:
 
-   void valueChanged(const QString& parameter, const QVariant& value);
 
- private Q_SLOTS:
 
-   void initTestCase();
 
-   void init();
 
-   void testValueSetterAndGetter();
 
-   void testValueSetterAndGetter_data();
 
- };
 
- // ----------------------------------------------------------------------------
 
- void ctkCmdLineModuleFrontendQtGuiTester::valueChanged(const QString ¶meter, const QVariant &value)
 
- {
 
-   this->ChangedParameter = parameter;
 
-   this->ChangedParameterValue = value;
 
- }
 
- // ----------------------------------------------------------------------------
 
- void ctkCmdLineModuleFrontendQtGuiTester::initTestCase()
 
- {
 
-   BackendMockUp* backend = new BackendMockUp;
 
-   this->Backend.reset(backend);
 
-   QFile xmlFile(":/ctkCmdLineModuleFrontendQtGuiTestModule1.xml");
 
-   QVERIFY(xmlFile.open(QIODevice::ReadOnly));
 
-   backend->addModule(QUrl("test://module1"), xmlFile.readAll());
 
-   this->Manager.registerBackend(backend);
 
-   this->ModuleRef = this->Manager.registerModule(QUrl("test://module1"));
 
-   QVERIFY(this->ModuleRef);
 
- }
 
- // ----------------------------------------------------------------------------
 
- void ctkCmdLineModuleFrontendQtGuiTester::init()
 
- {
 
-   this->ChangedParameter.clear();
 
-   this->ChangedParameterValue.clear();
 
- }
 
- // ----------------------------------------------------------------------------
 
- void ctkCmdLineModuleFrontendQtGuiTester::testValueSetterAndGetter()
 
- {
 
-   QScopedPointer<ctkCmdLineModuleFrontend> frontend(new ctkCmdLineModuleFrontendQtGui(this->ModuleRef));
 
-   // force the creation of the frontend gui
 
-   frontend->guiHandle();
 
-   connect(frontend.data(), SIGNAL(valueChanged(QString,QVariant)), SLOT(valueChanged(QString,QVariant)));
 
-   QFETCH(QString, parameter);
 
-   QFETCH(QVariant, currentValue);
 
-   QFETCH(QVariant, newValue);
 
-   QFETCH(QVariant, expectedValue);
 
-   QFETCH(int, role);
 
-   if (role == -1)
 
-   {
 
-     // test with default role argument
 
-     QCOMPARE(frontend->value(parameter), currentValue);
 
-   }
 
-   else
 
-   {
 
-     QCOMPARE(frontend->value(parameter, role), currentValue);
 
-   }
 
-   // test setting values
 
-   if (newValue.isValid())
 
-   {
 
-     frontend->setValue(parameter, newValue);
 
-     if (role == -1)
 
-     {
 
-       QCOMPARE(frontend->value(parameter), expectedValue);
 
-     }
 
-     else
 
-     {
 
-       QCOMPARE(frontend->value(parameter, role), expectedValue);
 
-       if (role == ctkCmdLineModuleFrontend::DisplayRole)
 
-       {
 
-         QWidget* widget = frontend->guiHandle()->findChild<QWidget*>("parameter:" + parameter);
 
-         QVERIFY(widget != NULL);
 
-         QString tag = this->ModuleRef.description().parameter(parameter).tag();
 
-         if (tag == "integer")
 
-         {
 
-           QSpinBox* spinBox = qobject_cast<QSpinBox*>(widget);
 
-           QVERIFY(spinBox);
 
-           QCOMPARE(spinBox->value(), expectedValue.toInt());
 
-         }
 
-         else if (tag.endsWith("enumeration"))
 
-         {
 
-           QComboBox* comboBox = qobject_cast<QComboBox*>(widget);
 
-           QVERIFY(comboBox);
 
-           QCOMPARE(comboBox->currentText(), expectedValue.toString());
 
-         }
 
-         else
 
-         {
 
-           QFAIL("Missing widget sub-class test code.");
 
-         }
 
-       }
 
-     }
 
-     QCOMPARE(this->ChangedParameter, parameter);
 
-     QCOMPARE(this->ChangedParameterValue, expectedValue);
 
-   }
 
- }
 
- // ----------------------------------------------------------------------------
 
- void ctkCmdLineModuleFrontendQtGuiTester::testValueSetterAndGetter_data()
 
- {
 
-   QTest::addColumn<QString>("parameter");
 
-   QTest::addColumn<QVariant>("currentValue");
 
-   QTest::addColumn<QVariant>("newValue");
 
-   QTest::addColumn<QVariant>("expectedValue");
 
-   QTest::addColumn<int>("role");
 
-   QTest::newRow("intParamDefaultDefaultRole") << "intParam" << QVariant(1) << QVariant(2) << QVariant(2) << -1;
 
-   QTest::newRow("intParamDefaultDisplayRole") << "intParam" << QVariant(1) << QVariant(2) << QVariant(2) << static_cast<int>(ctkCmdLineModuleFrontend::DisplayRole);
 
-   QTest::newRow("intParmaDefaultLRRole") << "intParam" << QVariant(1) << QVariant(2) << QVariant(2) << static_cast<int>(ctkCmdLineModuleFrontend::LocalResourceRole);
 
-   // newValue too low
 
-   QTest::newRow("intParamTooLowDefaultRole") << "intParam" << QVariant(1) << QVariant(-6) << QVariant(-5) << -1;
 
-   QTest::newRow("intParamTooLowDisplayRole") << "intParam" << QVariant(1) << QVariant(-6) << QVariant(-5) << static_cast<int>(ctkCmdLineModuleFrontend::DisplayRole);
 
-   QTest::newRow("intParmaTooLowLRRole") << "intParam" << QVariant(1) << QVariant(-6) << QVariant(-5) << static_cast<int>(ctkCmdLineModuleFrontend::LocalResourceRole);
 
-   // newValue too high
 
-   QTest::newRow("intParamTooHighDefaultRole") << "intParam" << QVariant(1) << QVariant(200) << QVariant(60) << -1;
 
-   QTest::newRow("intParamTooHighDisplayRole") << "intParam" << QVariant(1) << QVariant(200) << QVariant(60) << static_cast<int>(ctkCmdLineModuleFrontend::DisplayRole);
 
-   QTest::newRow("intParmaTooHighLRRole") << "intParam" << QVariant(1) << QVariant(200) << QVariant(60) << static_cast<int>(ctkCmdLineModuleFrontend::LocalResourceRole);
 
-   QTest::newRow("stringEnumDefaultRole") << "stringEnumParam" << QVariant("yes") << QVariant("no") << QVariant("no") << -1;
 
-   QTest::newRow("stringEnumDisplayRole") << "stringEnumParam" << QVariant("yes") << QVariant("no") << QVariant("no") << static_cast<int>(ctkCmdLineModuleFrontend::DisplayRole);
 
-   QTest::newRow("stringEnumLRRole") << "stringEnumParam" << QVariant("yes") << QVariant("no") << QVariant("no") << static_cast<int>(ctkCmdLineModuleFrontend::LocalResourceRole);
 
-   QTest::newRow("intOutputParamDefaultRole") << "intOutputParam" << QVariant(0) << QVariant(3) << QVariant(3) << -1;
 
-   QTest::newRow("intOutputParamDisplayRole") << "intOutputParam" << QVariant(0) << QVariant(3) << QVariant(3) << static_cast<int>(ctkCmdLineModuleFrontend::DisplayRole);
 
-   QTest::newRow("intOutputParamLRRole") << "intOutputParam" << QVariant(0) << QVariant(3) << QVariant(3) << static_cast<int>(ctkCmdLineModuleFrontend::LocalResourceRole);
 
- }
 
- // ----------------------------------------------------------------------------
 
- CTK_TEST_MAIN(ctkCmdLineModuleFrontendQtGuiTest)
 
- #include "moc_ctkCmdLineModuleFrontendQtGuiTest.cpp"
 
 
  |