diff -r 90517678cc4f -r 453da2cfceef qtmobility/tests/auto/qcontactactions/unittest/tst_qcontactactions.cpp --- a/qtmobility/tests/auto/qcontactactions/unittest/tst_qcontactactions.cpp Mon May 03 13:18:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,471 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the Qt Mobility Components. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#define QT_STATICPLUGIN -#include -#include - -#include "qtcontacts.h" -#include "qcontactmanagerdataholder.h" //QContactManagerDataHolder -#include "qcontactaction.h" -#include "qcontactactionfactory.h" -#include "qcontactactiondescriptor.h" - -QTM_USE_NAMESPACE - -class tst_QContactActions : public QObject -{ -Q_OBJECT - -public: - tst_QContactActions(); - virtual ~tst_QContactActions(); -private: - QContactManagerDataHolder managerDataHolder; - -public slots: - void init(); - void cleanup(); -private slots: - void testSendEmail(); - void testDescriptor(); - void testDescriptorLessThan(); - void testDescriptorHash(); - void traits(); -}; - -/* Test a static factory as well */ -class DummyStaticActionFactory : public QContactActionFactory -{ - Q_OBJECT - Q_INTERFACES(QtMobility::QContactActionFactory) - -public: - DummyStaticActionFactory() {} - ~DummyStaticActionFactory() {} - - QString name() const - { - return QString("dummystaticactionfactory"); - } - - QList actionDescriptors() const - { - return QList(); - } - - QContactAction* instance(const QContactActionDescriptor&) const - { - return 0; - } - - QVariantMap actionMetadata(const QContactActionDescriptor&) const - { - return QVariantMap(); - } -}; - -/* Statically import it (and a duplicate copy of it, purely for testing purposes) */ -Q_EXPORT_PLUGIN2(contacts_testdummystaticactionfactory, DummyStaticActionFactory) -Q_IMPORT_PLUGIN(contacts_testdummystaticactionfactory) -Q_EXPORT_PLUGIN2(contacts_testdummystaticactionfactorycopy, DummyStaticActionFactory) -Q_IMPORT_PLUGIN(contacts_testdummystaticactionfactorycopy) - -tst_QContactActions::tst_QContactActions() -{ - // set the correct path to look for plugins - QString path = QApplication::applicationDirPath() + "/dummyplugin/plugins"; - QApplication::addLibraryPath(path); -} - -tst_QContactActions::~tst_QContactActions() -{ - QString path = QApplication::applicationDirPath() + "/dummyplugin/plugins"; - QApplication::removeLibraryPath(path); -} - -void tst_QContactActions::init() -{ -} - -void tst_QContactActions::cleanup() -{ -} - -void tst_QContactActions::testSendEmail() -{ - QContact c; - QContactEmailAddress e; - e.setEmailAddress("test@nokia.com"); - c.saveDetail(&e); - - QVERIFY(QContactAction::availableActions().contains("SendEmail")); - QVERIFY(QContactAction::availableActions("Test").contains("SendEmail")); - QVERIFY(QContactAction::availableActions("Test", 1).contains("SendEmail")); - QVERIFY(QContactAction::availableActions(QString(), -200).contains("SendEmail")); - - QList descrs = QContactAction::actionDescriptors(); - bool foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - if (descrs.at(i).actionName() == QString("SendEmail")) { - foundSendEmail = true; - break; - } - } - QVERIFY(foundSendEmail); - - descrs = QContactAction::actionDescriptors(QString(), "Test"); - foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - QCOMPARE(descrs.at(i).vendorName(), QString("Test")); - if (descrs.at(i).actionName() == QString("SendEmail")) { - foundSendEmail = true; - break; - } - } - QVERIFY(foundSendEmail); - - descrs = QContactAction::actionDescriptors(QString(), "Test", 1); - foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - QCOMPARE(descrs.at(i).vendorName(), QString("Test")); - QCOMPARE(descrs.at(i).implementationVersion(), 1); - if (descrs.at(i).actionName() == QString("SendEmail") - && descrs.at(i).vendorName() == QString("Test") - && descrs.at(i).implementationVersion() == 1) { - foundSendEmail = true; - break; - } - } - QVERIFY(foundSendEmail); - - descrs = QContactAction::actionDescriptors(QString(), "Test", -200); // shouldn't find any with this impl.version. - foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - QCOMPARE(descrs.at(i).vendorName(), QString("Test")); - if (descrs.at(i).actionName() == QString("SendEmail") - && descrs.at(i).vendorName() == QString("Test") - && descrs.at(i).implementationVersion() == 1) { - foundSendEmail = true; - break; - } - } - QVERIFY(!foundSendEmail); - - descrs = QContactAction::actionDescriptors(QString(), QString(), -200); // ignores implementation Version if empty vendor - foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - if (descrs.at(i).actionName() == QString("SendEmail") - && descrs.at(i).vendorName() == QString("Test") - && descrs.at(i).implementationVersion() == 1) { - foundSendEmail = true; - break; - } - } - QVERIFY(foundSendEmail); - - descrs = QContactAction::actionDescriptors(QString(), "Nonexistent"); - foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - QCOMPARE(descrs.at(i).vendorName(), QString("Nonexistent")); - if (descrs.at(i).actionName() == QString("SendEmail") - && descrs.at(i).vendorName() == QString("Test") - && descrs.at(i).implementationVersion() == 1) { - foundSendEmail = true; - break; - } - } - QVERIFY(!foundSendEmail); - - descrs = QContactAction::actionDescriptors("SendEmail"); - foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - QCOMPARE(descrs.at(i).actionName(), QString("SendEmail")); - if (descrs.at(i).actionName() == QString("SendEmail") - && descrs.at(i).vendorName() == QString("Test") - && descrs.at(i).implementationVersion() == 1) { - foundSendEmail = true; - break; - } - } - QVERIFY(foundSendEmail); - - descrs = QContactAction::actionDescriptors("SendEmail", "Test"); - foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - QCOMPARE(descrs.at(i).actionName(), QString("SendEmail")); - QCOMPARE(descrs.at(i).vendorName(), QString("Test")); - if (descrs.at(i).actionName() == QString("SendEmail") - && descrs.at(i).vendorName() == QString("Test") - && descrs.at(i).implementationVersion() == 1) { - foundSendEmail = true; - break; - } - } - QVERIFY(foundSendEmail); - - descrs = QContactAction::actionDescriptors("SendEmail", "Test", 1); - foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - QCOMPARE(descrs.at(i).actionName(), QString("SendEmail")); - QCOMPARE(descrs.at(i).vendorName(), QString("Test")); - QCOMPARE(descrs.at(i).implementationVersion(), 1); - if (descrs.at(i).actionName() == QString("SendEmail") - && descrs.at(i).vendorName() == QString("Test") - && descrs.at(i).implementationVersion() == 1) { - foundSendEmail = true; - break; - } - } - QVERIFY(foundSendEmail); - - descrs = QContactAction::actionDescriptors("SendEmail", "Test", -200); // shouldn't find any with this impl.version. - foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - QCOMPARE(descrs.at(i).actionName(), QString("SendEmail")); - QCOMPARE(descrs.at(i).vendorName(), QString("Test")); - if (descrs.at(i).actionName() == QString("SendEmail") - && descrs.at(i).vendorName() == QString("Test") - && descrs.at(i).implementationVersion() == 1) { - foundSendEmail = true; - break; - } - } - QVERIFY(!foundSendEmail); - - descrs = QContactAction::actionDescriptors("SendEmail", QString(), -200); // ignores implementation Version if empty vendor - foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - QCOMPARE(descrs.at(i).actionName(), QString("SendEmail")); - if (descrs.at(i).actionName() == QString("SendEmail") - && descrs.at(i).vendorName() == QString("Test") - && descrs.at(i).implementationVersion() == 1) { - foundSendEmail = true; - break; - } - } - QVERIFY(foundSendEmail); - - descrs = QContactAction::actionDescriptors("SendEmail", "Nonexistent"); - foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - QCOMPARE(descrs.at(i).actionName(), QString("SendEmail")); - QCOMPARE(descrs.at(i).vendorName(), QString("Nonexistent")); - if (descrs.at(i).actionName() == QString("SendEmail") - && descrs.at(i).vendorName() == QString("Test") - && descrs.at(i).implementationVersion() == 1) { - foundSendEmail = true; - break; - } - } - QVERIFY(!foundSendEmail); - - descrs = QContactAction::actionDescriptors(); - QContactAction* sendEmail = 0; - for (int i = 0; i < descrs.size(); i++) { - if (descrs.at(i).actionName() == QString("SendEmail") - && descrs.at(i).vendorName() == QString("Test") - && descrs.at(i).implementationVersion() == 1) { - sendEmail = QContactAction::action(descrs.at(i)); - break; - } - } - QVERIFY(sendEmail); - - QVERIFY(!sendEmail->actionDescriptor().actionName().isEmpty()); - //QVERIFY(!sendEmail->metadata().isNull()); - QVERIFY(!sendEmail->actionDescriptor().vendorName().isEmpty()); - QVERIFY(sendEmail->actionDescriptor().implementationVersion() != -1); - QVERIFY(sendEmail->actionDescriptor().implementationVersion() != 0); - //QVERIFY(!sendEmail->contactFilter().isEmpty()); - QVERIFY(sendEmail->isDetailSupported(e)); - QVERIFY(sendEmail->supportedDetails(c).contains(e)); - //QVERIFY(sendEmail->performAction(c, e)); - //QVERIFY(sendEmail->performAction(c)); - - delete sendEmail; -} - -void tst_QContactActions::testDescriptor() -{ - // first, test retrieving an action when no factories are loaded - QContactAction* invalidAction = QContactAction::action(QContactActionDescriptor()); - QVERIFY(invalidAction == 0); // should be null. - - QContact c; - QContactEmailAddress e; - e.setEmailAddress("test@nokia.com"); - c.saveDetail(&e); - - QVERIFY(QContactAction::availableActions().contains("SendEmail")); - QVERIFY(QContactAction::availableActions("Test").contains("SendEmail")); - QVERIFY(QContactAction::availableActions("Test", 1).contains("SendEmail")); - QVERIFY(QContactAction::availableActions(QString(), -200).contains("SendEmail")); - - QList descrs = QContactAction::actionDescriptors(); - QContactAction* sendEmailAction = 0; - bool foundSendEmail = false; - for (int i = 0; i < descrs.size(); i++) { - if (descrs.at(i).actionName() == QString("SendEmail")) { - sendEmailAction = QContactAction::action(descrs.at(i)); - foundSendEmail = true; - break; - } - } - QVERIFY(foundSendEmail); - - // first, ensure that the descriptor identifies the correct action - QContactActionDescriptor sendEmailDescriptor; - sendEmailDescriptor.setActionName(sendEmailAction->actionDescriptor().actionName()); - sendEmailDescriptor.setVendorName(sendEmailAction->actionDescriptor().vendorName()); - sendEmailDescriptor.setImplementationVersion(sendEmailAction->actionDescriptor().implementationVersion()); - - // secondly, test operator= and operator==, and copy constructor - QContactActionDescriptor sendEmailDescriptor2 = sendEmailDescriptor; - QContactActionDescriptor sendEmailDescriptor3(sendEmailDescriptor2); - QContactActionDescriptor sendEmailDescriptor4 = sendEmailAction->actionDescriptor(); - QContactActionDescriptor sendEmailDescriptor5 = QContactAction::actionDescriptors(sendEmailDescriptor.actionName(), sendEmailDescriptor.vendorName(), sendEmailDescriptor.implementationVersion()).at(0); - QContactActionDescriptor sendEmailDescriptor6(sendEmailDescriptor); - sendEmailDescriptor6 = sendEmailDescriptor5; - QVERIFY(sendEmailDescriptor2.actionName() == sendEmailDescriptor.actionName()); - QVERIFY(sendEmailDescriptor2.vendorName() == sendEmailDescriptor.vendorName()); - QVERIFY(sendEmailDescriptor2.implementationVersion() == sendEmailDescriptor.implementationVersion()); - QVERIFY(sendEmailDescriptor == sendEmailDescriptor2); - QVERIFY(sendEmailDescriptor == sendEmailDescriptor3); - QVERIFY(sendEmailDescriptor == sendEmailDescriptor4); - QVERIFY(sendEmailDescriptor == sendEmailDescriptor5); - QVERIFY(sendEmailDescriptor == sendEmailDescriptor6); - - QVERIFY(!sendEmailDescriptor2.isEmpty()); - sendEmailDescriptor2.setActionName(""); - QVERIFY(sendEmailDescriptor2 != sendEmailDescriptor); - QVERIFY(sendEmailDescriptor2.isEmpty()); // without an action name, cannot uniquely identify an action impl - sendEmailDescriptor2.setActionName(sendEmailDescriptor.actionName()); - - QVERIFY(!sendEmailDescriptor2.isEmpty()); - sendEmailDescriptor2.setVendorName(""); - QVERIFY(sendEmailDescriptor2 != sendEmailDescriptor); - QVERIFY(sendEmailDescriptor2.isEmpty()); // without a vendor name, cannot uniquely identify an action impl - sendEmailDescriptor2.setVendorName(sendEmailDescriptor.vendorName()); - - QVERIFY(!sendEmailDescriptor2.isEmpty()); - sendEmailDescriptor2.setImplementationVersion(0); - QVERIFY(sendEmailDescriptor2 != sendEmailDescriptor); - QVERIFY(sendEmailDescriptor2.isEmpty()); // without a version, cannot uniquely identify an action impl - sendEmailDescriptor2.setImplementationVersion(sendEmailDescriptor.implementationVersion()); - - QVERIFY(sendEmailDescriptor2 == sendEmailDescriptor); - - // ensure that the caller takes ownership of the action; ie, not singleton etc. - QContactAction *sendEmailAction2 = QContactAction::action(sendEmailAction->actionDescriptor()); - QContactAction *sendEmailAction3 = QContactAction::action(sendEmailAction->actionDescriptor()); - QVERIFY(sendEmailAction != sendEmailAction2); - QVERIFY(sendEmailAction != sendEmailAction3); - QVERIFY(sendEmailAction2 != sendEmailAction3); - - delete sendEmailAction2; - delete sendEmailAction; - - QVERIFY(sendEmailAction3->actionDescriptor() == sendEmailDescriptor); - delete sendEmailAction3; -} - -void tst_QContactActions::testDescriptorLessThan() -{ - QContactActionDescriptor qcad1; - qcad1.setVendorName("a"); - qcad1.setActionName("a"); - qcad1.setImplementationVersion(1); - - QContactActionDescriptor qcad2; - qcad2.setVendorName("a"); - qcad2.setActionName("a"); - qcad2.setImplementationVersion(2); - - QContactActionDescriptor qcad3; - qcad3.setVendorName("a"); - qcad3.setActionName("b"); - qcad3.setImplementationVersion(1); - - QContactActionDescriptor qcad4; - qcad4.setVendorName("b"); - qcad4.setActionName("a"); - qcad4.setImplementationVersion(1); - - QVERIFY(qcad1 < qcad2); - QVERIFY(qcad2 < qcad3); - QVERIFY(qcad3 < qcad4); -} - -void tst_QContactActions::testDescriptorHash() -{ - QContactActionDescriptor qcad1; - qcad1.setVendorName("a"); - qcad1.setActionName("a"); - qcad1.setImplementationVersion(1); - - QContactActionDescriptor qcad2; - qcad2.setVendorName("a"); - qcad2.setActionName("a"); - qcad2.setImplementationVersion(1); - - QContactActionDescriptor qcad3; - qcad3.setVendorName("a"); - qcad3.setActionName("a"); - qcad3.setImplementationVersion(2); - - QVERIFY(qHash(qcad1) == qHash(qcad2)); - QVERIFY(qHash(qcad1) != qHash(qcad3)); -} - -void tst_QContactActions::traits() -{ - QCOMPARE(sizeof(QContactActionDescriptor), sizeof(void *)); - QTypeInfo ti; - QVERIFY(ti.isComplex); - QVERIFY(!ti.isStatic); - QVERIFY(!ti.isLarge); - QVERIFY(!ti.isPointer); - QVERIFY(!ti.isDummy); -} - -QTEST_MAIN(tst_QContactActions) -#include "tst_qcontactactions.moc"