diff -r 885c2596c964 -r 5d007b20cfd0 qthighway/tsrc/at_xqapplicationmanager/at_xqapplicationmanager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qthighway/tsrc/at_xqapplicationmanager/at_xqapplicationmanager.cpp Tue Aug 31 16:02:37 2010 +0300 @@ -0,0 +1,710 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License as published by +* the Free Software Foundation, version 2.1 of the License. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public License +* along with this program. If not, +* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/". +* +* Description: +* +*/ + + +#include +#include +#include +#include +#include + +#include +#include + +#include "at_xqapplicationmanager.h" +#include "../inc/testdata.h" + +namespace +{ + const QString endOfLine("\n"); + const QString testString("TestString"); + const QString operation("request(QString)"); + const QString operation_async("asyncRequest(QString)"); + const QString testFileStr(drive + ":\\data\\Others\\test.txt"); + + const QUrl testUrl("testto://address"); + + const QFile testFile(testFileStr); +} + + +void Test_XQApplicationManager::init() +{ + testSharableFile = new XQSharableFile(); + QVERIFY2(testSharableFile->open(testFileStr), mLog.join(endOfLine).toAscii()); + mAppManager = new XQApplicationManager(); + QVERIFY2(mAppManager != NULL, mLog.join(endOfLine).toAscii()); + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); +} + +void Test_XQApplicationManager::drm_file() +{ + mLog << "[QTH] [Test_XQApplicationManager] drm_file"; + +#ifdef __WINS__ + QSKIP("Checking drm attributes does not work correctly on emulator", SkipAll); +#endif + + QStringList logmem = mLog; + + foreach (QString fileStr, testData.files.keys()) { + QFile file(fileStr); + QVariantList drmValues; + mAppManager->getDrmAttributes(file, listDrmAttr(), drmValues); + + mLog << "[QTH] [Test_XQApplicationManager] drm_file:" + fileStr; + + foreach (QVariant value, testData.files[fileStr].values()) { + if (!value.isValid()) + mLog << "[QTH] [Test_XQApplicationManager] test attribute: not valid"; + else if (value.type() == QVariant::Int) + mLog << "[QTH] [Test_XQApplicationManager] test attribute:" + QString::number(value.toInt()); + else if (value.type() == QVariant::String) + mLog << "[QTH] [Test_XQApplicationManager] test attribute:" + value.toString(); + } + + foreach (QVariant value, drmValues) { + if (!value.isValid()) + mLog << "[QTH] [Test_XQApplicationManager] getDrmAttributes: not valid"; + else if (value.type() == QVariant::Int) + mLog << "[QTH] [Test_XQApplicationManager] getDrmAttributes:" + QString::number(value.toInt()); + else if (value.type() == QVariant::String) + mLog << "[QTH] [Test_XQApplicationManager] getDrmAttributes:" + value.toString(); + } + + QVERIFY2(testData.files[fileStr].values() == drmValues, mLog.join(endOfLine).toAscii()); + mLog = logmem; + } + + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] drm_file end"; +} + +void Test_XQApplicationManager::drm_sharablefile() +{ + mLog << "[QTH] [Test_XQApplicationManager] drm_sharablefile"; + +#ifdef __WINS__ + QSKIP("Checking drm attributes does not work correctly on emulator", SkipAll); +#endif + + QStringList logmem = mLog; + + foreach (QString fileStr, testData.files.keys()) { + XQSharableFile sharableFile; + QVariantList drmValues; + + sharableFile.open(fileStr); + mAppManager->getDrmAttributes(sharableFile, listDrmAttr(), drmValues); + sharableFile.close(); + + mLog << "[QTH] [Test_XQApplicationManager] drm_sharablefile:" + fileStr; + foreach (QVariant value, testData.files[fileStr].values()) { + if (!value.isValid()) + mLog << "[QTH] [Test_XQApplicationManager] test attribute: not valid"; + else if (value.type() == QVariant::Int) + mLog << "[QTH] [Test_XQApplicationManager] test attribute:" + QString::number(value.toInt()); + else if (value.type() == QVariant::String) + mLog << "[QTH] [Test_XQApplicationManager] test attribute:" + value.toString(); + } + + foreach (QVariant value, drmValues) { + if (!value.isValid()) + mLog << "[QTH] [Test_XQApplicationManager] getDrmAttributes: not valid"; + else if (value.type() == QVariant::Int) + mLog << "[QTH] [Test_XQApplicationManager] getDrmAttributes:" + QString::number(value.toInt()); + else if (value.type() == QVariant::String) + mLog << "[QTH] [Test_XQApplicationManager] getDrmAttributes:" + value.toString(); + } + + QVERIFY2(testData.files[fileStr].values() == drmValues, mLog.join(endOfLine).toAscii()); + mLog = logmem; + } + + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] drm_sharablefile end"; +} + +void Test_XQApplicationManager::list_interface() +{ + mLog << "[QTH] [Test_XQApplicationManager] list_interface"; + + foreach (QString interface, testData.interfaces.keys()) { + if (interface == IUriView || interface == IFileView) + continue; + + QList list = mAppManager->list(interface, operation); + + mLog << "[QTH] [Test_XQApplicationManager] list_interface interfaces defined:" + + QString::number(testData.interfaces.values(interface).count()); + mLog << "[QTH] [Test_XQApplicationManager] list_interface system interfaces:" + + QString::number(list.count()); + QVERIFY2(list.count() == testData.interfaces.values(interface).count(), mLog.join(endOfLine).toAscii()); + + foreach (XQAiwInterfaceDescriptor interfaceDesc, list) { + bool equal = false; + foreach (InterfaceData* interfaceData, testData.interfaces.values(interface)) { + if (interfaceData->compare(interfaceDesc, mLog)) { + equal = true; + break; + } + } + + mLog << "[QTH] [Test_XQApplicationManager] list_interface service name:" + interfaceDesc.serviceName(); + mLog << "[QTH] [Test_XQApplicationManager] list_interface interface name:" + interfaceDesc.interfaceName(); + mLog << "[QTH] [Test_XQApplicationManager] list_interface interface OK?:" + QString::number((int)equal) << QString::number((int)interfaceDesc.isValid()); + + QVERIFY2(equal, mLog.join(endOfLine).toAscii()); + QVERIFY2(interfaceDesc.isValid(), mLog.join(endOfLine).toAscii()); + } + } + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] list_interface end"; +} + +void Test_XQApplicationManager::list_service_interface() +{ + mLog << "[QTH] [Test_XQApplicationManager] list_service_interface"; + + foreach (InterfaceData* interfaceData1, testData.interfaces.values()) { + if (interfaceData1->mInterfaceName == IUriView || interfaceData1->mInterfaceName == IFileView) + continue; + + QList list = mAppManager->list(interfaceData1->mServiceName, interfaceData1->mInterfaceName, operation); + + int countInterfaces = 0; + foreach (XQAiwInterfaceDescriptor interfaceDesc, list) { + bool equal = false; + foreach (InterfaceData* interfaceData2, testData.interfaces.values(interfaceData1->mInterfaceName)) + { + if (interfaceData2->compare(interfaceDesc, mLog)) + equal = true; + if (interfaceData2->mServiceName == interfaceData1->mServiceName) + countInterfaces++; + } + + mLog << "[QTH] [Test_XQApplicationManager] list_service_interface service name:" + interfaceDesc.serviceName(); + mLog << "[QTH] [Test_XQApplicationManager] list_service_interface interface name:" + interfaceDesc.interfaceName(); + mLog << "[QTH] [Test_XQApplicationManager] list_service_interface interface OK?:" + QString::number((int)equal) + + QString::number((int)interfaceDesc.isValid()); + + QVERIFY2(equal, mLog.join(endOfLine).toAscii()); + QVERIFY2(interfaceDesc.isValid(), mLog.join(endOfLine).toAscii()); + } + + mLog << "[QTH] [Test_XQApplicationManager] list_service_interface interfaces defined:" + + QString::number(countInterfaces); + mLog << "[QTH] [Test_XQApplicationManager] list_service_interface system interfaces:" + + QString::number(list.count()); + QVERIFY2(list.count() == countInterfaces, mLog.join(endOfLine).toAscii()); + } + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] list_service_interface end"; +} + +void Test_XQApplicationManager::list_uri() +{ + mLog << "[QTH] [Test_XQApplicationManager] list_uri"; + + QList list = mAppManager->list(testUrl); + + mLog << "[QTH] [Test_XQApplicationManager] list_uri interfaces defined:" + + QString::number(testData.interfaces.values(IUriView).count()); + mLog << "[QTH] [Test_XQApplicationManager] list_uri system interfaces:" + + QString::number(list.count()); + QVERIFY2(list.count() == testData.interfaces.values(IUriView).count(), mLog.join(endOfLine).toAscii()); + + foreach (XQAiwInterfaceDescriptor interfaceDesc, list) { + bool equal = false; + foreach (InterfaceData* interfaceData, testData.interfaces.values(IUriView)) + if (interfaceData->compare(interfaceDesc, mLog)) + { + equal = true; + break; + } + + mLog << "[QTH] [Test_XQApplicationManager] list_uri service name:" + interfaceDesc.serviceName(); + mLog << "[QTH] [Test_XQApplicationManager] list_uri interface name:" + interfaceDesc.interfaceName(); + mLog << "[QTH] [Test_XQApplicationManager] list_uri interface OK?:" + QString::number((int)equal) + + QString::number((int)interfaceDesc.isValid()); + + QVERIFY2(equal, mLog.join(endOfLine).toAscii()); + QVERIFY2(interfaceDesc.isValid(), mLog.join(endOfLine).toAscii()); + } + + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] list_uri end"; +} + +void Test_XQApplicationManager::list_file() +{ + mLog << "[QTH] [Test_XQApplicationManager] list_file"; + + QSKIP("Currently function list(const QFile& file) returns maximum one interface", SkipAll); + + QList list = mAppManager->list(testFile); + + foreach (InterfaceData* interfaceData, testData.interfaces.values(IFileView)) { + bool equal = false; + foreach (XQAiwInterfaceDescriptor interfaceDesc, list) + if (interfaceData->compare(interfaceDesc, mLog)) { + equal = true; + break; + } + + mLog << "[QTH] [Test_XQApplicationManager] list_file service name:" + interfaceData->mServiceName; + mLog << "[QTH] [Test_XQApplicationManager] list_file interface name:" + interfaceData->mInterfaceName; + mLog << "[QTH] [Test_XQApplicationManager] list_file interface OK?:" + QString::number((int)equal); + + QVERIFY2(equal, mLog.join(endOfLine).toAscii()); + } + + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] list_file end"; +} + +void Test_XQApplicationManager::list_sharablefile() +{ + mLog << "[QTH] [Test_XQApplicationManager] list_sharablefile"; + + QSKIP("Currently function list(const XQSharableFile& file) returns maximum one interface", SkipAll); + + QList list = mAppManager->list(*testSharableFile); + + foreach (InterfaceData* interfaceData, testData.interfaces.values(IFileView)) { + bool equal = false; + foreach (XQAiwInterfaceDescriptor interfaceDesc, list) { + if (interfaceData->compare(interfaceDesc, mLog)) { + equal = true; + break; + } + } + + mLog << "[QTH] [Test_XQApplicationManager] list_sharablefile service name:" + interfaceData->mServiceName; + mLog << "[QTH] [Test_XQApplicationManager] list_sharablefile interface name:" + interfaceData->mInterfaceName; + mLog << "[QTH] [Test_XQApplicationManager] list_sharablefile interface OK?:" + QString::number((int)equal); + + QVERIFY2(equal, mLog.join(endOfLine).toAscii()); + } + + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] list_sharablefile end"; +} + +void Test_XQApplicationManager::create_interface() +{ + mLog << "[QTH] [Test_XQApplicationManager] create_interface"; + + foreach (QString interface, testData.interfaces.keys()) { + if (interface == IUriView || interface == IFileView) + continue; + + mLog << "[QTH] [Test_XQApplicationManager] create_interface:" + interface; + + { + XQAiwRequest* request = mAppManager->create(interface, operation, true); + testRequest(request, operation, testString, true, true); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(interface, operation_async, true); + testRequest(request, operation_async, testString, true, false); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(interface, operation, false); + testRequest(request, operation, testString, false, true); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(interface, operation_async, false); + testRequest(request, operation_async, testString, false, false); + delete request; + } + } + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] create_interface end"; +} + +void Test_XQApplicationManager::create_service_interface() +{ + mLog << "[QTH] [Test_XQApplicationManager] create_service_interface"; + + foreach (InterfaceData* interfaceData, testData.interfaces.values()) { + if (interfaceData->mInterfaceName == IUriView || interfaceData->mInterfaceName == IFileView) + continue; + + mLog << "[QTH] [Test_XQApplicationManager] create_service_interface service:" + interfaceData->mServiceName; + mLog << "[QTH] [Test_XQApplicationManager] create_service_interface interface:" + interfaceData->mInterfaceName; + + { + XQAiwRequest* request = mAppManager->create(interfaceData->mServiceName, interfaceData->mInterfaceName, operation, true); + testRequest(request, operation, testString, true, true); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(interfaceData->mServiceName, interfaceData->mInterfaceName, operation_async, true); + testRequest(request, operation_async, testString, true, false); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(interfaceData->mServiceName, interfaceData->mInterfaceName, operation, false); + testRequest(request, operation, testString, false, true); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(interfaceData->mServiceName, interfaceData->mInterfaceName, operation_async, false); + testRequest(request, operation_async, testString, false, false); + delete request; + } + } + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] create_service_interface end"; +} + +void Test_XQApplicationManager::create_implementation() +{ + mLog << "[QTH] [Test_XQApplicationManager] create_implementation"; + + foreach (InterfaceData* interfaceData, testData.interfaces.values()) { + if (interfaceData->mInterfaceName == IUriView || interfaceData->mInterfaceName == IFileView) + continue; + foreach (XQAiwInterfaceDescriptor interfaceDesc, mAppManager->list(interfaceData->mServiceName, interfaceData->mInterfaceName, operation)) { + mLog << "[QTH] [Test_XQApplicationManager] create_implementation service:" + interfaceDesc.interfaceName(); + mLog << "[QTH] [Test_XQApplicationManager] create_implementation interface:" + interfaceDesc.serviceName(); + mLog << "[QTH] [Test_XQApplicationManager] create_implementation version:" + + QString::number(interfaceDesc.majorVersion()) + "." + QString::number(interfaceDesc.minorVersion()); + + { + XQAiwRequest* request = mAppManager->create(interfaceDesc, operation, true); + testRequest(request, operation, testString, true, true); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(interfaceDesc, operation_async, true); + testRequest(request, operation_async, testString, true, false); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(interfaceDesc, operation, false); + testRequest(request, operation, testString, false, true); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(interfaceDesc, operation_async, false); + testRequest(request, operation_async, testString, false, false); + delete request; + } + } + } + + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] create_implementation end"; +} + +void Test_XQApplicationManager::create_uri() +{ + mLog << "[QTH] [Test_XQApplicationManager] create_uri"; + + { + XQAiwRequest* request = mAppManager->create(testUrl, true); + testRequest(request, QString(), testUrl.toString(), true, true); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(testUrl, false); + testRequest(request, QString(), testUrl.toString(), false, true); + delete request; + } + + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] create_uri end"; +} + +void Test_XQApplicationManager::create_uri_implementation() +{ + mLog << "[QTH] [Test_XQApplicationManager] create_uri_implementation"; + + QList list = mAppManager->list(testUrl); + + foreach (XQAiwInterfaceDescriptor interfaceDesc, list) + foreach (InterfaceData* interfaceData, testData.interfaces.values(IUriView)) + { + if (interfaceData->compare(interfaceDesc, mLog)) { + { + XQAiwRequest* request = mAppManager->create(testUrl, interfaceDesc, true); + testRequest(request, QString(), testUrl.toString(), true, true); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(testUrl, interfaceDesc, false); + testRequest(request, QString(), testUrl.toString(), false, true); + delete request; + } + } + + mLog << "[QTH] [Test_XQApplicationManager] create_uri_implementation service:" + interfaceDesc.interfaceName(); + mLog << "[QTH] [Test_XQApplicationManager] create_uri_implementation interface:" + interfaceDesc.serviceName(); + mLog << "[QTH] [Test_XQApplicationManager] create_uri_implementation version:" + + QString::number(interfaceDesc.majorVersion()) + "." + QString::number(interfaceDesc.minorVersion()); + + QVERIFY2(interfaceDesc.isValid(), mLog.join(endOfLine).toAscii()); + } + + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] create_uri_implementation end"; +} + +void Test_XQApplicationManager::create_file() +{ + mLog << "[QTH] [Test_XQApplicationManager] create_file"; + + { + XQAiwRequest* request = mAppManager->create(testFile, true); + testRequest(request, QString(), testFileStr, true, true); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(testFile, false); + testRequest(request, QString(), testFileStr, false, true); + delete request; + } + + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] create_file end"; +} + +void Test_XQApplicationManager::create_file_implementation() +{ + mLog << "[QTH] [Test_XQApplicationManager] create_file_implementation"; + + QList list = mAppManager->list(testFile); + QVERIFY2(list.count() > 0, mLog.join(endOfLine).toAscii()); + + foreach (XQAiwInterfaceDescriptor interfaceDesc, list) + foreach (InterfaceData* interfaceData, testData.interfaces.values(IFileView)) { + if (interfaceData->compare(interfaceDesc, mLog)) { + { + XQAiwRequest* request = mAppManager->create(testFile, interfaceDesc, true); + testRequest(request, QString(), testFileStr, true, true); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(testFile, interfaceDesc, false); + testRequest(request, QString(), testFileStr, false, true); + delete request; + } + } + + mLog << "[QTH] [Test_XQApplicationManager] create_file_implementation service:" + interfaceDesc.interfaceName(); + mLog << "[QTH] [Test_XQApplicationManager] create_file_implementation interface:" + interfaceDesc.serviceName(); + mLog << "[QTH] [Test_XQApplicationManager] create_file_implementation version:" + + QString::number(interfaceDesc.majorVersion()) + "." + QString::number(interfaceDesc.minorVersion()); + + QVERIFY2(interfaceDesc.isValid(), mLog.join(endOfLine).toAscii()); + } + + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] create_file_implementation end"; +} + +void Test_XQApplicationManager::create_sharablefile() +{ + mLog << "[QTH] [Test_XQApplicationManager] create_sharablefile"; + + { + XQAiwRequest* request = mAppManager->create(*testSharableFile, true); + testRequest(request, QString(), QString(), true, true, testSharableFile); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(*testSharableFile, false); + testRequest(request, QString(), testFileStr, false, true, testSharableFile); + delete request; + } + + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] create_sharablefile end"; +} + +void Test_XQApplicationManager::create_sharablefile_implementation() +{ + mLog << "[QTH] [Test_XQApplicationManager] create_sharablefile_implementation"; + + QList list = mAppManager->list(*testSharableFile); + QVERIFY2(list.count() > 0, mLog.join(endOfLine).toAscii()); + + foreach (XQAiwInterfaceDescriptor interfaceDesc, list) { + foreach (InterfaceData* interfaceData, testData.interfaces.values(IFileView)) { + if (interfaceData->compare(interfaceDesc, mLog)) { + { + XQAiwRequest* request = mAppManager->create(*testSharableFile, interfaceDesc, true); + testRequest(request, QString(), testFileStr, true, true, testSharableFile); + delete request; + } + + { + XQAiwRequest* request = mAppManager->create(*testSharableFile, interfaceDesc, false); + testRequest(request, QString(), testFileStr, false, true, testSharableFile); + delete request; + } + } + } + + mLog << "[QTH] [Test_XQApplicationManager] create_sharablefile_implementation service:" + interfaceDesc.interfaceName(); + mLog << "[QTH] [Test_XQApplicationManager] create_sharablefile_implementation interface:" + interfaceDesc.serviceName(); + mLog << "[QTH] [Test_XQApplicationManager] create_sharablefile_implementation version:" + + QString::number(interfaceDesc.majorVersion()) + "." + QString::number(interfaceDesc.minorVersion()); + + QVERIFY2(interfaceDesc.isValid(), mLog.join(endOfLine).toAscii()); + } + + QVERIFY2(mAppManager->lastError() == XQService::ENoError, mLog.join(endOfLine).toAscii()); + + mLog << "[QTH] [Test_XQApplicationManager] create_sharablefile_implementation end"; +} + +const QList Test_XQApplicationManager::listDrmAttr() +{ + QList attr; + + attr.append(XQApplicationManager::IsProtected); + attr.append(XQApplicationManager::IsForwardable); + attr.append(XQApplicationManager::Description); + attr.append(XQApplicationManager::MimeType); + + return attr; +} + + +void Test_XQApplicationManager::cleanup() +{ + delete mAppManager; + mAppManager = NULL; + mLog.clear(); + testSharableFile->close(); + delete testSharableFile; + testSharableFile = NULL; +} + +void Test_XQApplicationManager::testRequest(XQAiwRequest* request, const QString &operation, + const QString &arguments, bool embedded, bool synchronous, XQSharableFile *sharablefile) +{ + QVERIFY2(request != NULL, mLog.join(endOfLine).toAscii()); + + QVERIFY2(request->isEmbedded() == embedded, mLog.join(endOfLine).toAscii()); + + request->setSynchronous(synchronous); + QVERIFY2(request->isSynchronous() == synchronous, mLog.join(endOfLine).toAscii()); + + if (!operation.isEmpty()) + QVERIFY2(request->operation() == operation, mLog.join(endOfLine).toAscii()); + + QList args; + if (sharablefile) { + args << qVariantFromValue(*sharablefile); + } else { + args << arguments; + } + + request->setArguments(args); + + connect(request, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleOk(const QVariant&))); + connect(request, SIGNAL(requestError(int,const QString&)), this, SLOT(handleError(int,const QString&))); + + mLog << "[QTH] [Test_XQApplicationManager] send " + operation; + mServiceAnswered = false; + QVERIFY2(request->send(), mLog.join(endOfLine).toAscii()); + + if (!operation.isEmpty()) { + while (!mServiceAnswered) + QTest::qWait(20); + + QStringList retList = returnValue.toStringList(); + + QVERIFY2(retList.value(0) == request->descriptor().serviceName(), mLog.join(endOfLine).toAscii()); + QVERIFY2(retList.value(1) == request->descriptor().interfaceName(), mLog.join(endOfLine).toAscii()); + QVERIFY2(retList.value(2) == testString, mLog.join(endOfLine).toAscii()); + } + else + QTest::qWait(100); +} + +void Test_XQApplicationManager::handleOk(const QVariant& ret) +{ + mLog << "[QTH] [Test_XQApplicationManager] request results:" + ret.toStringList().join(", "); + returnValue = ret; + mServiceAnswered = true; +} + +void Test_XQApplicationManager::handleError(int err ,const QString& errString) +{ + mLog << "[QTH] [Test_XQApplicationManager] handleError: " + errString; + mLog << "[QTH] [Test_XQApplicationManager] err: " + QString::number(err); + mServiceAnswered = true; +} + +int main (int argc, char* argv[]) +{ + QApplication app(argc, argv); + QTEST_DISABLE_KEYPAD_NAVIGATION + Test_XQApplicationManager tc; + int ret = 0; + if (argc == 1) { + int c = 5; + char* v[] = {argv[0], "-o", "c:/at_am.txt", "-maxwarnings", "0"}; + ret = QTest::qExec(&tc, c, v); + } + else { + ret = QTest::qExec(&tc, argc, argv); + } + return ret; +} +