| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839 | 
							- /*=============================================================================
 
-   Library: CTK
 
-   Copyright (c) 2010 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
 
-   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.
 
- =============================================================================*/
 
- #include "ctkPluginFrameworkTestSuite_p.h"
 
- #include <ctkPluginFrameworkTestUtil.h>
 
- #include <ctkPluginContext.h>
 
- #include <ctkPluginConstants.h>
 
- #include <ctkPluginException.h>
 
- #include <ctkServiceException.h>
 
- #include <QDir>
 
- #include <QTest>
 
- #include <QDebug>
 
- int ctkPluginFrameworkTestSuite::nRunCount = 0;
 
- //----------------------------------------------------------------------------
 
- ctkPluginFrameworkTestSuite::ctkPluginFrameworkTestSuite(ctkPluginContext* pc)
 
-   : eventDelay(500), pc(pc), p(pc->getPlugin())
 
- {
 
- }
 
- //----------------------------------------------------------------------------
 
- void ctkPluginFrameworkTestSuite::initTestCase()
 
- {
 
-   qDebug() << "### plugin framework test suite: SETUP start";
 
-   if (nRunCount > 0)
 
-   {
 
-     QFAIL("The ctkPluginFrameworkTestSuite CANNOT be run reliably more than once. Other test results in this suite are/may not be valid. Restart framework to retest: CLEANUP:FAIL");
 
-   }
 
-   ++nRunCount;
 
-   try
 
-   {
 
-     bool success = pc->connectFrameworkListener(this, SLOT(frameworkListener(ctkPluginFrameworkEvent)));
 
-     if (!success)
 
-     {
 
-       QFAIL("plugin framework test suite: SETUP:FAIL");
 
-     }
 
-   }
 
-   catch (const ctkException& e)
 
-   {
 
-     QString msg  = QString("plugin framework test suite ") + e.what() + ": SETUP:FAIL";
 
-     QFAIL(msg.toAscii());
 
-   }
 
-   try
 
-   {
 
-     bool success = pc->connectPluginListener(this, SLOT(pluginListener(ctkPluginEvent)));
 
-     if (!success)
 
-     {
 
-       QFAIL("plugin framework test suite: SETUP:FAIL");
 
-     }
 
-   }
 
-   catch (const ctkException& e)
 
-   {
 
-     QString msg  = QString("plugin framework test suite ") + e.what() + ": SETUP:FAIL";
 
-     QFAIL(msg.toAscii());
 
-   }
 
-   try
 
-   {
 
-     bool success = pc->connectPluginListener(this, SLOT(syncPluginListener(ctkPluginEvent)), Qt::DirectConnection);
 
-     if (!success)
 
-     {
 
-       QFAIL("plugin framework test suite: SETUP:FAIL");
 
-     }
 
-   }
 
-   catch (const ctkException& e)
 
-   {
 
-     QString msg  = QString("plugin framework test suite ") + e.what() + ": SETUP:FAIL";
 
-     QFAIL(msg.toAscii());
 
-   }
 
-   try
 
-   {
 
-     pc->connectServiceListener(this, "serviceListener");
 
-   }
 
-   catch (const ctkException& e)
 
-   {
 
-     QString msg  = QString("plugin framework test suite ") + e.what() + ": SETUP:FAIL";
 
-     QFAIL(msg.toAscii());
 
-   }
 
-   qDebug() << "### plugin framework test suite: SETUP:PASS";
 
- }
 
- //----------------------------------------------------------------------------
 
- void ctkPluginFrameworkTestSuite::cleanupTestCase()
 
- {
 
- }
 
- //----------------------------------------------------------------------------
 
- // Verify information from the getHeaders() method
 
- void ctkPluginFrameworkTestSuite::frame005a()
 
- {
 
-   QHash<QString, QString> headers = p->getHeaders();
 
-   // check expected headers
 
-   QString k = "Plugin-Name";
 
-   QCOMPARE(QString("framework_test"), headers.value(k));
 
-   k = "Plugin-Version";
 
-   QCOMPARE(QString("1.0.1"), headers.value(k));
 
-   k = "Plugin-Description";
 
-   QCOMPARE(QString("Test bundle for the CTK plugin framework"), headers.value(k));
 
-   k = "Plugin-Vendor";
 
-   QCOMPARE(QString("CommonTK"), headers.value(k));
 
-   k = "Plugin-DocURL";
 
-   QCOMPARE(QString("http://www.commontk.org"), headers.value(k));
 
-   k = "Plugin-ContactAddress";
 
-   QCOMPARE(QString("http://www.commontk.org"), headers.value(k));
 
-   k = "Plugin-Category";
 
-   QCOMPARE(QString("test"), headers.value(k));
 
-   k = "Plugin-Copyright";
 
-   QCOMPARE(QString("German Cancer Research Center, Division of Medical and Biological Informatics"), headers.value(k));
 
-   k = "Plugin-License";
 
-   QCOMPARE(QString("http://www.apache.org/licenses/LICENSE-2.0.html"), headers.value(k));
 
- }
 
- //----------------------------------------------------------------------------
 
- // Extract all information from the getProperty in the ctkPluginContext class
 
- void ctkPluginFrameworkTestSuite::frame007a()
 
- {
 
-   QList<QString> NNList;
 
-   NNList << ctkPluginConstants::FRAMEWORK_VERSION
 
-          << ctkPluginConstants::FRAMEWORK_VENDOR;
 
-   foreach(QString k, NNList)
 
-   {
 
-     QVariant v = pc->getProperty(k);
 
-     if(!v.isValid())
 
-     {
 
-       QString msg("'%1' not set");
 
-       QFAIL(qPrintable(msg.arg(k)));
 
-     }
 
-   }
 
- }
 
- //----------------------------------------------------------------------------
 
- // Get context id, location and status of the plugin
 
- void ctkPluginFrameworkTestSuite::frame010a()
 
- {
 
-   qlonglong contextid = p->getPluginId();
 
-   qDebug() << "CONTEXT ID:" << contextid;
 
-   QString location = p->getLocation();
 
-   qDebug() << "LOCATION:" << location;
 
-   ctkPlugin::State pstate = p->getState();
 
-   qDebug() << "PCACTIVE:" << pstate;
 
- }
 
- //----------------------------------------------------------------------------
 
- //Test result of getService(ctkServiceReference()). Should throw ctkInvalidArgumentException
 
- void ctkPluginFrameworkTestSuite::frame018a()
 
- {
 
-   try
 
-   {
 
-     QObject* obj = pc->getService(ctkServiceReference());
 
-     qDebug() << "Got service object =" << obj->metaObject()->className() << ", excpected ctkInvalidArgumentException exception";
 
-     QFAIL("Got service object, excpected ctkInvalidArgumentException exception");
 
-   }
 
-   catch (const ctkInvalidArgumentException& )
 
-   {}
 
-   catch (...)
 
-   {
 
-     QFAIL("Got wrong exception, expected ctkInvalidArgumentException");
 
-   }
 
- }
 
- //----------------------------------------------------------------------------
 
- // Load pluginA_test and check that it exists and that its expected service does not exist,
 
- // also check that the expected events in the framework occur
 
- void ctkPluginFrameworkTestSuite::frame020a()
 
- {
 
-   pA.clear();
 
-   try
 
-   {
 
-     pA = ctkPluginFrameworkTestUtil::installPlugin(pc, "pluginA_test");
 
-   }
 
-   catch (ctkPluginException& e)
 
-   {
 
-     QFAIL(e.what());
 
-   }
 
-   const QHash<QString, QString> headers = pA->getHeaders();
 
-   QHash<QString, QString>::const_iterator iter =
 
-       headers.find(ctkPluginConstants::PLUGIN_SYMBOLICNAME);
 
-   QVERIFY(iter != headers.end());
 
-   QCOMPARE(iter.value(), QString("pluginA.test"));
 
-   // Check that no service reference exist yet.
 
-   ctkServiceReference sr1 = pc->getServiceReference("org.commontk.TestPluginAService");
 
-   if (sr1)
 
-   {
 
-     QFAIL("framework test plugin, service from test plugin A unexpectedly found");
 
-   }
 
-   // check the listeners for events, expect only a plugin event,
 
-   // of type installation
 
-   bool lStat = checkListenerEvents(false, ctkPluginFrameworkEvent::PLUGIN_INFO, true , ctkPluginEvent::INSTALLED,
 
-                                    false, ctkServiceEvent::MODIFIED, pA, 0);
 
-   QVERIFY(pA->getState() == ctkPlugin::INSTALLED && lStat == true);
 
- }
 
- //----------------------------------------------------------------------------
 
- // Start pluginA_test and check that it gets state ACTIVE,
 
- // and that the service it registers exist
 
- void ctkPluginFrameworkTestSuite::frame025b()
 
- {
 
-   try
 
-   {
 
-     pA->start();
 
-     QVERIFY2(pA->getState() == ctkPlugin::ACTIVE, "pluginA_test should be ACTIVE");
 
-   }
 
-   catch (const ctkPluginException& pexcA)
 
-   {
 
-     QString failMsg = QString("Unexpected plugin exception: ") + pexcA.what();
 
-     QFAIL(failMsg.toStdString().c_str());
 
-   }
 
-   catch (const std::exception& le)
 
-   {
 
-     QString failMsg = QString("Start plugin exception: ") + le.what();
 
-     QFAIL(failMsg.toStdString().c_str());
 
-   }
 
-   // Check if pluginA_test registered the expected service
 
-   try
 
-   {
 
-     ctkServiceReference sr1 = pc->getServiceReference("org.commontk.pluginAtest.TestPluginAService");
 
-     QObject* o1 = pc->getService(sr1);
 
-     QVERIFY2(o1 != 0, "no service object found");
 
-     try
 
-     {
 
-       QVERIFY2(pc->ungetService(sr1), "Service unget should return true");
 
-     }
 
-     catch (const std::exception& le)
 
-     {
 
-       QString failMsg = QString("Unget service exception: ") + le.what();
 
-       QFAIL(failMsg.toStdString().c_str());
 
-     }
 
-     // check the listeners for events
 
-     QList<ctkPluginEvent> pEvts;
 
-     pEvts.push_back(ctkPluginEvent(ctkPluginEvent::RESOLVED, pA));
 
-     pEvts.push_back(ctkPluginEvent(ctkPluginEvent::STARTED, pA));
 
-     QList<ctkServiceEvent> seEvts;
 
-     seEvts.push_back(ctkServiceEvent(ctkServiceEvent::REGISTERED, sr1));
 
-     QVERIFY2(checkListenerEvents(QList<ctkPluginFrameworkEvent>(), pEvts, seEvts),
 
-              "Unexpected events");
 
-     QList<ctkPluginEvent> syncPEvts;
 
-     syncPEvts.push_back(ctkPluginEvent(ctkPluginEvent::STARTING, pA));
 
-     QVERIFY2(checkSyncListenerEvents(syncPEvts), "Unexpected events");
 
-   }
 
-   catch (const ctkServiceException& /*se*/)
 
-   {
 
-     QFAIL("framework test bundle, expected service not found");
 
-   }
 
- }
 
- //----------------------------------------------------------------------------
 
- // Stop pluginA_test and check that it gets state RESOLVED
 
- void ctkPluginFrameworkTestSuite::frame030b()
 
- {
 
-   ctkServiceReference sr1
 
-       = pc->getServiceReference("org.commontk.pluginAtest.TestPluginAService");
 
-   try
 
-   {
 
-     pA->stop();
 
-     QVERIFY2(pA->getState() == ctkPlugin::RESOLVED, "pluginA should be RESOLVED");
 
-   }
 
-   catch (const ctkIllegalStateException& ise)
 
-   {
 
-     qDebug() << "Unexpected ctkIllegalStateException exception:" << ise.what();
 
-     QFAIL("framework test plugin, stop plugin pluginA");
 
-   }
 
-   catch (const ctkPluginException& pe)
 
-   {
 
-     qDebug() << "Unexpected plugin exception:" << pe;
 
-     QFAIL("framework test plugin, stop plugin pluginA");
 
-   }
 
-   QList<ctkPluginEvent> pEvts;
 
-   pEvts << ctkPluginEvent(ctkPluginEvent::STOPPED, pA);
 
-   QList<ctkServiceEvent> seEvts;
 
-   seEvts << ctkServiceEvent(ctkServiceEvent::UNREGISTERING, sr1);
 
-   QVERIFY2(checkListenerEvents(QList<ctkPluginFrameworkEvent>(), pEvts, seEvts),
 
-            "Unexpected events");
 
-   QList<ctkPluginEvent> syncPEvts;
 
-   syncPEvts << ctkPluginEvent(ctkPluginEvent::STOPPING, pA);
 
-   QVERIFY2(checkSyncListenerEvents(syncPEvts), "Unexpected events");
 
- }
 
- //----------------------------------------------------------------------------
 
- // Uninstall pluginA_test and check that it gets state UNINSTALLED
 
- void ctkPluginFrameworkTestSuite::frame035b()
 
- {
 
-   try
 
-   {
 
-     pA->uninstall();
 
-     QVERIFY2(pA->getState() == ctkPlugin::UNINSTALLED,
 
-              "pluginA_test should be UNINSTALLED");
 
-   }
 
-   catch (const ctkIllegalStateException& ise)
 
-   {
 
-     qDebug() << "Unexpected ctkIllegalStateException exception:" << ise.what();
 
-     QFAIL("framework test plugin, uninstall");
 
-   }
 
-   catch (const ctkPluginException& pe)
 
-   {
 
-     qDebug() << "Unexpected plugin exception:" << pe;
 
-     QFAIL("framework test plugin, uninstall pluginA_test");
 
-   }
 
-   QList<ctkPluginEvent> pEvts;
 
-   pEvts << ctkPluginEvent(ctkPluginEvent::UNRESOLVED, pA);
 
-   pEvts << ctkPluginEvent(ctkPluginEvent::UNINSTALLED, pA);
 
-   QVERIFY2(checkListenerEvents(QList<ctkPluginFrameworkEvent>(),
 
-                                pEvts, QList<ctkServiceEvent>()),
 
-            "Unexpected events");
 
-   QVERIFY2(checkSyncListenerEvents(QList<ctkPluginEvent>()),
 
-            "Unexpected sync events");
 
- }
 
- //----------------------------------------------------------------------------
 
- // Install pluginD_test, check that a ctkPluginException is thrown
 
- // as this plugin is not a Qt plugin
 
- void ctkPluginFrameworkTestSuite::frame040a()
 
- {
 
-   bool teststatus = true;
 
-   bool exception = false;
 
-   try
 
-   {
 
-     pD = ctkPluginFrameworkTestUtil::installPlugin(pc, "pluginD_test");
 
-     exception = false;
 
-   }
 
-   catch (const ctkPluginException& pe)
 
-   {
 
-     // This exception is expected
 
-     qDebug() << "Expected exception" << pe;
 
-     exception = true;
 
-   }
 
-   //      catch (SecurityException secA) {
 
-   //        QFAIL("framework test plugin " + secA + " :FRAME040A:FAIL");
 
-   //        teststatus = false;
 
-   //        exception = true;
 
-   //      }
 
-   if (exception == false)
 
-   {
 
-     teststatus = false;
 
-   }
 
-   // check the listeners for events, expect no events
 
-   bool lStat = checkListenerEvents(false, ctkPluginFrameworkEvent::FRAMEWORK_STARTED,
 
-                                    false , ctkPluginEvent::INSTALLED,
 
-                                    false, ctkServiceEvent::MODIFIED,
 
-                                    pD, 0);
 
-   QVERIFY(teststatus == true && pD.isNull() && lStat == true);
 
- }
 
- //----------------------------------------------------------------------------
 
- // Install a non-existent plug-in
 
- void ctkPluginFrameworkTestSuite::frame042a()
 
- {
 
-   bool exception = false;
 
-   try
 
-   {
 
-     pc->installPlugin(QUrl("file://no-plugin"));
 
-     exception = false;
 
-   }
 
-   catch (const ctkPluginException& pe)
 
-   {
 
-     // This exception is expected
 
-     qDebug() << "Expected exception" << pe;
 
-     exception = true;
 
-   }
 
-   // check the listeners for events, expect no events
 
-   bool lStat = checkListenerEvents(false, ctkPluginFrameworkEvent::FRAMEWORK_STARTED,
 
-                                    false , ctkPluginEvent::INSTALLED,
 
-                                    false, ctkServiceEvent::MODIFIED,
 
-                                    QSharedPointer<ctkPlugin>(), 0);
 
-   QVERIFY(exception == true && lStat == true);
 
- }
 
- //----------------------------------------------------------------------------
 
- // Add a service listener with a broken LDAP filter to get an exception
 
- void ctkPluginFrameworkTestSuite::frame045a()
 
- {
 
-   ctkServiceListenerPFW sListen1;
 
-   QString brokenFilter = "A broken LDAP filter";
 
-   try
 
-   {
 
-     pc->connectServiceListener(&sListen1, "serviceChanged", brokenFilter);
 
-   }
 
-   catch (const ctkInvalidArgumentException& /*ia*/)
 
-   {
 
-     //assertEquals("InvalidSyntaxException.getFilter should be same as input string", brokenFilter, ise.getFilter());
 
-   }
 
-   catch (...)
 
-   {
 
-     QFAIL("framework test bundle, wrong exception on broken LDAP filter:");
 
-   }
 
- }
 
- //----------------------------------------------------------------------------
 
- // Reinstalls and the updates testbundle_A.
 
- // The version is checked to see if an update has been made.
 
- void ctkPluginFrameworkTestSuite::frame070a()
 
- {
 
-   QString pluginA = "pluginA_test";
 
-   QString pluginA1 = "libpluginA1_test";
 
-   //InputStream fis;
 
-   QString versionA;
 
-   QString versionA1;
 
-   pA.clear();
 
-   clearEvents();
 
-   try
 
-   {
 
-     pA = ctkPluginFrameworkTestUtil::installPlugin(pc, pluginA);
 
-   }
 
-   catch (const ctkPluginException& pexcA)
 
-   {
 
-     qDebug() << "framework test plugin" << pexcA << ":FRAME070A:FAIL";
 
-   }
 
- //  catch (const ctkSecurityException& secA)
 
- //  {
 
- //    qDebug() << "framework test plugin" << secA << ":FRAME070A:FAIL";
 
- //    teststatus = false;
 
- //  }
 
-   QHash<QString,QString> ai = pA->getHeaders();
 
-   versionA = ai["Plugin-Version"];
 
-   qDebug() << "Before version =" << versionA;
 
-   QDir testPluginDir(pc->getProperty("pluginfw.testDir").toString());
 
-   QString pluginA1Path;
 
-   QStringList libSuffixes;
 
-   libSuffixes << ".so" << ".dll" << ".dylib";
 
-   foreach(QString libSuffix, libSuffixes)
 
-   {
 
-     QFileInfo info(testPluginDir, pluginA1 + libSuffix);
 
-     if (info.exists())
 
-     {
 
-       pluginA1Path = info.absoluteFilePath();
 
-       break;
 
-     }
 
-   }
 
-   if (pluginA1Path.isEmpty())
 
-   {
 
-     qDebug() << "Plug-in" << pluginA1 << "not found in" << testPluginDir;
 
-     QFAIL("Test plug-in not found");
 
-   }
 
-   QUrl urk = QUrl::fromLocalFile(pluginA1Path);
 
-   qDebug() << "update from" << urk;
 
-   try
 
-   {
 
-     pA->update(urk);
 
-   }
 
-   catch (const ctkPluginException& pe)
 
-   {
 
-     QFAIL("framework test plug-in, update without new plug-in source :FRAME070A:FAIL");
 
-   }
 
-   QHash<QString,QString> a1i = pA->getHeaders();
 
-   versionA1 = a1i["Plugin-Version"];
 
-   qDebug() << "After version =" << versionA1;
 
-   QList<ctkPluginEvent> pEvts;
 
-   pEvts << ctkPluginEvent(ctkPluginEvent::INSTALLED, pA);
 
-   pEvts << ctkPluginEvent(ctkPluginEvent::RESOLVED, pA);
 
-   pEvts << ctkPluginEvent(ctkPluginEvent::UNRESOLVED, pA);
 
-   pEvts << ctkPluginEvent(ctkPluginEvent::UPDATED, pA);
 
-   QVERIFY2(checkListenerEvents(QList<ctkPluginFrameworkEvent>(),
 
-                                pEvts, QList<ctkServiceEvent>()),
 
-            "Unexpected events");
 
-   QVERIFY2(versionA1 != versionA, "framework test plug-in, update of plug-in failed, version info unchanged :FRAME070A:Fail");
 
- }
 
- //----------------------------------------------------------------------------
 
- void ctkPluginFrameworkTestSuite::frameworkListener(const ctkPluginFrameworkEvent& fwEvent)
 
- {
 
-   frameworkEvents.push_back(fwEvent);
 
-   qDebug() << "FrameworkEvent:" << fwEvent;
 
- }
 
- //----------------------------------------------------------------------------
 
- void ctkPluginFrameworkTestSuite::pluginListener(const ctkPluginEvent& event)
 
- {
 
-   pluginEvents.push_back(event);
 
-   qDebug() << "PluginEvent:" << event;
 
- }
 
- //----------------------------------------------------------------------------
 
- void ctkPluginFrameworkTestSuite::syncPluginListener(const ctkPluginEvent& event)
 
- {
 
-   if (event.getType() == ctkPluginEvent::STARTING ||
 
-       event.getType() == ctkPluginEvent::STOPPING)
 
-   {
 
-     syncPluginEvents.push_back(event);
 
-     qDebug() << "Synchronous PluginEvent:" << event;
 
-   }
 
- }
 
- //----------------------------------------------------------------------------
 
- void ctkPluginFrameworkTestSuite::serviceListener(const ctkServiceEvent& event)
 
- {
 
-   serviceEvents.push_back(event);
 
-   qDebug() << "ServiceEvent:" << event;
 
- }
 
- //----------------------------------------------------------------------------
 
- ctkPluginEvent ctkPluginFrameworkTestSuite::getPluginEvent() const
 
- {
 
-   if (pluginEvents.empty())
 
-   {
 
-     return ctkPluginEvent();
 
-   }
 
-   return pluginEvents.last();
 
- }
 
- //----------------------------------------------------------------------------
 
- ctkPluginEvent ctkPluginFrameworkTestSuite::getSyncPluginEvent() const
 
- {
 
-   if (syncPluginEvents.empty())
 
-   {
 
-     return ctkPluginEvent();
 
-   }
 
-   return syncPluginEvents.last();
 
- }
 
- //----------------------------------------------------------------------------
 
- ctkPluginFrameworkEvent ctkPluginFrameworkTestSuite::getFrameworkEvent() const
 
- {
 
-   if (frameworkEvents.empty())
 
-   {
 
-     return ctkPluginFrameworkEvent();
 
-   }
 
-   return frameworkEvents.last();
 
- }
 
- //----------------------------------------------------------------------------
 
- ctkServiceEvent ctkPluginFrameworkTestSuite::getServiceEvent() const
 
- {
 
-   if (serviceEvents.empty())
 
-   {
 
-     return ctkServiceEvent();
 
-   }
 
-   return serviceEvents.last();
 
- }
 
- //----------------------------------------------------------------------------
 
- bool ctkPluginFrameworkTestSuite::checkListenerEvents(
 
-     bool fwexp, ctkPluginFrameworkEvent::Type fwtype,
 
-     bool pexp, ctkPluginEvent::Type ptype,
 
-     bool sexp, ctkServiceEvent::Type stype,
 
-     QSharedPointer<ctkPlugin> pluginX, ctkServiceReference* servX)
 
- {
 
-   QList<ctkPluginFrameworkEvent> fwEvts;
 
-   QList<ctkPluginEvent> pEvts;
 
-   QList<ctkServiceEvent> seEvts;
 
-   if (fwexp) fwEvts << ctkPluginFrameworkEvent(fwtype, pluginX);
 
-   if (pexp) pEvts << ctkPluginEvent(ptype, pluginX);
 
-   if (sexp) seEvts << ctkServiceEvent(stype, *servX);
 
-   return checkListenerEvents(fwEvts, pEvts, seEvts);
 
- }
 
- //----------------------------------------------------------------------------
 
- bool ctkPluginFrameworkTestSuite::checkListenerEvents(
 
-     const QList<ctkPluginFrameworkEvent>& fwEvts,
 
-     const QList<ctkPluginEvent>& pEvts,
 
-     const QList<ctkServiceEvent>& seEvts)
 
- {
 
-   bool listenState = true; // assume everything will work
 
-   // Wait a while to allow events to arrive
 
-   QTest::qWait(eventDelay);
 
-   //QCoreApplication::sendPostedEvents();
 
-   if (fwEvts.size() != frameworkEvents.size())
 
-   {
 
-     listenState = false;
 
-     qDebug() << "*** Plugin Framework event mismatch: expected"
 
-         << fwEvts.size() << "event(s), found"
 
-         << frameworkEvents.size() << "event(s).";
 
-     const int max = fwEvts.size() > frameworkEvents.size()
 
-                     ? fwEvts.size() : frameworkEvents.size();
 
-     for (int i = 0; i < max; ++i)
 
-     {
 
-       const ctkPluginFrameworkEvent& fwE = i < fwEvts.size() ? fwEvts[i] : ctkPluginFrameworkEvent();
 
-       const ctkPluginFrameworkEvent& fwR = i < frameworkEvents.size() ? frameworkEvents[i] : ctkPluginFrameworkEvent();
 
-       qDebug() << "    " << fwE << " - " << fwR;
 
-     }
 
-   }
 
-   else
 
-   {
 
-     for (int i = 0; i < fwEvts.size(); ++i)
 
-     {
 
-       const ctkPluginFrameworkEvent& feE = fwEvts[i];
 
-       const ctkPluginFrameworkEvent& feR = frameworkEvents[i];
 
-       if (feE.getType() != feR.getType()
 
-         || feE.getPlugin() != feR.getPlugin())
 
-       {
 
-         listenState = false;
 
-         qDebug() << "*** Wrong framework event:" << feR
 
-             << "expected" << feE;
 
-       }
 
-     }
 
-   }
 
-   if (pEvts.size() != pluginEvents.size())
 
-   {
 
-     listenState = false;
 
-     qDebug() << "*** Plugin event mismatch: expected"
 
-         << pEvts.size() << "event(s), found "
 
-         << pluginEvents.size() << "event(s).";
 
-     const int max = pEvts.size() > pluginEvents.size() ? pEvts.size() : pluginEvents.size();
 
-     for (int i = 0; i < max; ++i)
 
-     {
 
-       const ctkPluginEvent& pE = i < pEvts.size() ? pEvts[i] : ctkPluginEvent();
 
-       const ctkPluginEvent& pR = i < pluginEvents.size() ? pluginEvents[i] : ctkPluginEvent();
 
-       qDebug() << "    " << pE << " - " << pR;
 
-     }
 
-   }
 
-   else
 
-   {
 
-     for (int i = 0; i < pEvts.size(); ++i)
 
-     {
 
-       const ctkPluginEvent& pE = pEvts[i];
 
-       const ctkPluginEvent& pR = pluginEvents[i];
 
-       if (pE.getType() != pR.getType()
 
-         || pE.getPlugin() != pR.getPlugin())
 
-       {
 
-         listenState = false;
 
-         qDebug() << "*** Wrong plugin event:" << pR << "expected" << pE;
 
-       }
 
-     }
 
-   }
 
-   if (seEvts.size() != serviceEvents.size())
 
-   {
 
-     listenState = false;
 
-     qDebug() << "*** Service event mismatch: expected"
 
-         << seEvts.size() << "event(s), found"
 
-         << serviceEvents.size() << "event(s).";
 
-     const int max = seEvts.size() > serviceEvents.size()
 
-                     ? seEvts.size() : serviceEvents.size();
 
-     for (int i = 0; i < max; ++i)
 
-     {
 
-       const ctkServiceEvent& seE = i < seEvts.size() ? seEvts[i] : ctkServiceEvent();
 
-       const ctkServiceEvent& seR = i < serviceEvents.size() ? serviceEvents[i] : ctkServiceEvent();
 
-       qDebug() << "    " << seE << " - " << seR;
 
-     }
 
-   }
 
-   else
 
-   {
 
-     for (int i = 0; i < seEvts.size(); ++i)
 
-     {
 
-       const ctkServiceEvent& seE = seEvts[i];
 
-       const ctkServiceEvent& seR = serviceEvents[i];
 
-       if (seE.getType() != seR.getType()
 
-         || (!(seE.getServiceReference() == seR.getServiceReference())))
 
-       {
 
-         listenState = false;
 
-         qDebug() << "*** Wrong service event:" << seR << "expected" << seE;
 
-       }
 
-     }
 
-   }
 
-   frameworkEvents.clear();
 
-   pluginEvents.clear();
 
-   serviceEvents.clear();
 
-   return listenState;
 
- }
 
- //----------------------------------------------------------------------------
 
- // Check that the expected events have reached the listeners and
 
- // reset the events
 
- bool ctkPluginFrameworkTestSuite::checkSyncListenerEvents(
 
-     bool pexp, ctkPluginEvent::Type ptype, QSharedPointer<ctkPlugin> pX,
 
-     ctkServiceReference servX)
 
- {
 
-   Q_UNUSED(servX)
 
-   QList<ctkPluginEvent> pEvts;
 
-   if (pexp)
 
-   {
 
-     pEvts << ctkPluginEvent(ptype, pX);
 
-   }
 
-   return checkSyncListenerEvents(pEvts);
 
- }
 
- //----------------------------------------------------------------------------
 
- // Check that the expected events have reached the listeners and
 
- // reset the events
 
- bool ctkPluginFrameworkTestSuite::checkSyncListenerEvents(
 
-     const QList<ctkPluginEvent>& pEvts)
 
- {
 
-   bool listenState = true; // assume everything will work
 
-   // Sleep a while to allow events to arrive
 
-   QTest::qWait(eventDelay);
 
-   if (pEvts.size() != syncPluginEvents.size())
 
-   {
 
-     listenState = false;
 
-     qDebug() << "*** Sync plugin event mismatch: expected"
 
-         << pEvts.size() << "event(s), found"
 
-         << syncPluginEvents.size() << "event(s).";
 
-     const int max = pEvts.size() > syncPluginEvents.size() ? pEvts.size() : syncPluginEvents.size();
 
-     for (int i = 0; i < max; ++i)
 
-     {
 
-       const ctkPluginEvent& pE =  i< pEvts.size() ? pEvts[i] : ctkPluginEvent();
 
-       const ctkPluginEvent& pR = i < syncPluginEvents.size() ? syncPluginEvents[i] : ctkPluginEvent();
 
-       qDebug() << "    " << pE << " - " << pR;
 
-     }
 
-   }
 
-   else
 
-   {
 
-     for (int i = 0; i < pEvts.size(); ++i)
 
-     {
 
-       const ctkPluginEvent& pE = pEvts[i];
 
-       const ctkPluginEvent& pR = syncPluginEvents[i];
 
-       if (pE.getType() != pR.getType() || pE.getPlugin() != pR.getPlugin())
 
-       {
 
-         listenState = false;
 
-         qDebug() << "Wrong sync plugin event:" << pR << "expected" << pE;
 
-       }
 
-     }
 
-   }
 
-   syncPluginEvents.clear();
 
-   return listenState;
 
- }
 
- void ctkPluginFrameworkTestSuite::clearEvents()
 
- {
 
-   QTest::qWait(300);
 
-   pluginEvents.clear();
 
-   syncPluginEvents.clear();
 
-   frameworkEvents.clear();
 
-   serviceEvents.clear();
 
- }
 
- //----------------------------------------------------------------------------
 
- ctkServiceEvent ctkServiceListenerPFW::getEvent() const
 
- {
 
-   return events.size() ? events.last() : ctkServiceEvent();
 
- }
 
- //----------------------------------------------------------------------------
 
- QList<ctkServiceEvent> ctkServiceListenerPFW::getEvents() const
 
- {
 
-   return events;
 
- }
 
- //----------------------------------------------------------------------------
 
- void ctkServiceListenerPFW::clearEvent()
 
- {
 
-   events.clear();
 
- }
 
- //----------------------------------------------------------------------------
 
- void ctkServiceListenerPFW::serviceChanged(const ctkServiceEvent& evt)
 
- {
 
-   events.push_back(evt);
 
-   qDebug() << "ctkServiceEvent:" << evt;
 
- }
 
 
  |