--- a/qtmobility/tests/benchmarks/contacts/tst_contacts.cpp Fri Apr 16 15:51:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,933 +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$
-**
-****************************************************************************/
-#include <QApplication>
-#include <QtTest/QtTest>
-//#include "contact.h"
-//#include <QContactManager>
-#include <QDebug>
-#include <QEventLoop>
-#include <QTimer>
-
-#include <qcontactabstractrequest.h>
-#include <requests/qcontactfetchrequest.h>
-#include <filters/qcontactlocalidfilter.h>
-#include <details/qcontactdetails.h>
-
-#ifdef Q_OS_SYMBIAN
-#include <cntfilt.h>
-#include <cntitem.h>
-#include <cntdb.h>
-#include <cntitem.h>
-#include <cntfield.h>
-#include <cntfldst.h>
-#include <cntdef.h>
-#include <cntdef.hrh>
-#endif
-
-QTM_USE_NAMESPACE
-
-//Q_DECLARE_METATYPE(QSystemInfo::Version);
-//Q_DECLARE_METATYPE(QSystemInfo::Feature);
-
-class tst_Contact : public QObject
-{
- Q_OBJECT
-
-private slots:
- void initTestCase();
- void cleanupTestCase();
-
- void tst_createTime();
-
- void tst_fetchAllContactIds();
- void tst_fetchOneContact();
- void tst_fetchTenContact();
- //void tst_fetchAllContact();
-
- void tst_createContact();
- void tst_saveContact();
-
- void tst_nameFilter();
-
- void tst_removeOneContact();
- void tst_removeAllContacts();
-
-
-// void tst_currentLanguage();
-// void tst_availableLanguages();
-//
-// void tst_versions_data();
-// void tst_versions();
-//
-// void tst_hasFeatures_data();
-// void tst_hasFeatures();
-
-public slots:
-
- void gotContact(QContactFetchRequest*,bool);
- void stateChanged(QContactAbstractRequest::State newState);
- void timeout();
- void resultsAvailable();
- void resultsAvailableFilter();
- void setBackend(QString);
-
-private:
- void createContact();
- void clearContacts();
- int countContacts();
-
- enum {
- BackendQContacts,
- BackendContactsModel
- } m_backend;
- QString manager;
- QEventLoop *loop;
- QContactManager *m_qm;
- int m_num_contacts;
- QList<QContactLocalId> id_list;
-
- int m_run;
-
- int m_num_start;
-
- QTimer *m_timer;
- QStringList firstNames;
- QStringList lastNames;
-
-};
-
-void tst_Contact::setBackend(QString backend)
-{
- manager = backend;
- if(manager == "SymbianContactsModel") // Only one at the moment
- m_backend = BackendContactsModel;
- else
- m_backend = BackendQContacts;
- qWarning() << "Backend set to: " << manager;
-}
-
-void tst_Contact::initTestCase()
-{
- qDebug() << "Managers: " << QContactManager::availableManagers();
- m_run = 0;
-
-#if defined(Q_WS_MAEMO_6)
- QStringList list = QContactManager::availableManagers();
- int found = 0;
- while(!list.empty()){
- if(list.takeFirst() == "tracker"){
- found = 1;
- break;
- }
- }
- if(!found)
- QFAIL("Unable to find Maemo 6 tracker plugin. Please check install");
-
- if(manager.isEmpty())
- manager = "memory";
- m_qm = new QContactManager(manager);
-#elif defined(Q_WS_MAEMO_5)
- QFAIL("Maemo 5 does not support QContacts");
-#elif defined(Q_OS_SYMBIAN)
- if(m_backend != BackendContactsModel) {
- QStringList list = QContactManager::availableManagers();
- int found = 0;
- while(!list.empty()){
- if(list.takeFirst() == "symbian"){
- found = 1;
- break;
- }
- }
- if(!found) {
- QFAIL("Unable to find Symbian plugin. Please check install");
- }
-
- if(manager.isEmpty()) {
- manager = "symbian";
- }
- m_qm = new QContactManager(manager);
- }
- else {
- m_qm = 0x0;
- }
-#else
- QFAIL("Platform not supported");
-#endif
-
-
- // setup an event loop for waiting
- loop = new QEventLoop;
-
- firstNames << "Anahera" << "Anaru" << "Hemi" << "Hine" << "Kiri" << "Maata" << "Mere" << "Moana" << "Paora" << "Petera" << "Piripi" << "Ruiha" << "Tane" << "Whetu";
- lastNames << "Ati Awa" << "Kai Taho" << "Moriori" << "Muaupoko" << "Nga Rauru" << "Taranaki" << "Opotoki" << "Aotea" << "Taninui" << "Tuhourangi" << "Tainui" << "Waitaha";
-
- m_num_start = countContacts();
- qDebug() << "Number of Contact: " << m_num_start;
-
-
- for(int i = 0; i < 20; i++){
- createContact();
- }
-
- int after = countContacts();
- if(after - m_num_start != 20){
- qWarning() << "Failed to create 20 contacts";
- }
-
- m_timer = new QTimer(this);
- connect(m_timer, SIGNAL(timeout()), this, SLOT(timeout()));
-
-}
-
-int tst_Contact::countContacts()
-{
- if(m_backend == BackendQContacts) {
- QList<QContactLocalId> qcl = m_qm->contactIds();
- return qcl.count();
- } else if(m_backend == BackendContactsModel){
-#ifdef Q_OS_SYMBIAN
- CContactDatabase* contactsDb = CContactDatabase::OpenL();
- CleanupStack::PushL(contactsDb);
-
- int num = contactsDb->CountL();
-
- CleanupStack::PopAndDestroy(contactsDb);
-
- return num;
-#endif
- }
-
- qWarning("No backend support in countContacts()");
- return 0;
-
-}
-
-void tst_Contact::cleanupTestCase()
-{
- clearContacts();
- int num_end = countContacts();
- if(m_num_start != num_end){
- QFAIL(QString("Number of contacts ending: %2 is different that starting number %1. Poor cleanup").arg(m_num_start).arg(num_end).toAscii());
- }
-}
-
-void tst_Contact::clearContacts()
-{
- if(m_backend == BackendQContacts) {
- QMap<int, QContactManager::Error> errorMap;
- m_qm->removeContacts(&id_list, &errorMap);
- id_list.clear();
- }
- else if(m_backend == BackendContactsModel){
-#ifdef Q_OS_SYMBIAN
- CContactDatabase* db = CContactDatabase::OpenL();
- CleanupStack::PushL(db);
-
- CContactIdArray* idArray = CContactIdArray::NewLC();
- while(!id_list.isEmpty())
- idArray->AddL(id_list.takeFirst());
- db->DeleteContactsL(*idArray);
-
- CleanupStack::PopAndDestroy(2); //idArray, contactsDb
-#endif
- }
-
-}
-
-void tst_Contact::tst_createTime()
-{
-
- if(m_backend == BackendQContacts){
- QContactManager *qm = 0x0;
-
- QBENCHMARK {
- qm = new QContactManager(manager);
- }
-
- delete qm;
- }
- else if(m_backend == BackendContactsModel){
-#ifdef Q_OS_SYMBIAN
- CContactDatabase* db = 0x0;
- QBENCHMARK {
- db = CContactDatabase::OpenL();
- }
- CleanupStack::PushL(db);
- CleanupStack::PopAndDestroy(1); //db
-#endif
- }
-}
-
-void tst_Contact::tst_fetchAllContactIds()
-{
- if(m_backend == BackendQContacts) {
- QList<QContactLocalId> ql;
- QBENCHMARK {
- ql = m_qm->contactIds();
- }
- }
- else if(m_backend == BackendContactsModel){
-#ifdef Q_OS_SYMBIAN
- //open database
- // Open the default contact database
- CContactDatabase* contactsDb = CContactDatabase::OpenL();
- CleanupStack::PushL(contactsDb);
-
- CCntFilter *filter = CCntFilter::NewLC();
-
- //get all contact items (no groups, templates...)
- filter->SetContactFilterTypeALL(EFalse);
- filter->SetContactFilterTypeCard(ETrue);
-
- CContactIdArray *iContacts = 0x0;
-
- QBENCHMARK {
- contactsDb->FilterDatabaseL(*filter);
- iContacts = CContactIdArray::NewLC(filter->iIds);
- }
-
- CleanupStack::PopAndDestroy(3); //iContacts, filter, contactsDb
-#endif
- }
-}
-
-void tst_Contact::tst_fetchOneContact()
-{
- if(m_backend == BackendQContacts){
- QContact c;
-
- m_run++;
-
-#if defined(Q_WS_MAEMO_6)
- int ret;
- QContactFetchRequest* req = new QContactFetchRequest;
-
- QList<QContactLocalId> qcl = m_qm->contactIds();
- if(qcl.count() < 1)
- QFAIL("No contacts to pull from tracker");
- QList<QContactLocalId> one;
- one += qcl.takeFirst();
- QContactLocalIdFilter idFil;
- idFil.setIds(one);
- req->setFilter(idFil);
-
- req->setManager(m_qm);
- //connect(req, SIGNAL(progress(QContactFetchRequest*, bool)), this, SLOT(gotContact(QContactFetchRequest*,bool)));
- //connect(req, SIGNAL(stateChanged(QContactAbstractRequest::State)), this, SLOT(stateChanged(QContactAbstractRequest::State)));
- connect(req, SIGNAL(resultsAvailable()), this, SLOT(resultsAvailable()));
-
- m_num_contacts = 1;
- m_timer->start(1000);
-
- QBENCHMARK {
- req->start();
- ret = loop->exec();
- }
- m_timer->stop();
-
- //qDebug() << "Got Contact: " << qm->synthesizeDisplayLabel(c);
- if(ret){
- QFAIL("Failed to load one contact");
- }
- delete req;
-
-#elif defined(Q_OS_SYMBIAN)
- QList<QContactLocalId> qcl = m_qm->contactIds();
- if(qcl.count() < 1)
- QFAIL("No contacts to pull from tracker");
-
- QBENCHMARK {
- c = m_qm->contact(qcl.first());
- }
-#endif
- }
- else if(m_backend == BackendContactsModel){
-#ifdef Q_OS_SYMBIAN
- //open database
- // Open the default contact database
- CContactDatabase* contactDb = CContactDatabase::OpenL();
- CleanupStack::PushL(contactDb);
-
- int id = id_list.takeFirst();
- id_list.append(id);
-
- CContactItem *item;
- TInt r;
-
- QBENCHMARK {
- TRAP(r, item = contactDb->ReadContactL(id));
- }
- CleanupStack::PushL(item);
-
- if(r != KErrNone){ qWarning() << "Error by OpenContactL: " << r; }
-
-// TRAP(r, contactDb->CloseContactL(id));
-// if(r != KErrNone){qWarning() << "Error by CloseContactL: " << r; }
-
- //qDebug() << "Call FetchContactDone: " << id;
-
- CleanupStack::PopAndDestroy(2); //contact, lock, contactsDb
-
-#endif
- }
-}
-
-
-
-void tst_Contact::tst_fetchTenContact()
-{
- if(m_backend == BackendQContacts){
- QContact c;
- m_run++;
-
-#if defined(Q_WS_MAEMO_6)
- int ret;
-
- QContactFetchRequest* req = new QContactFetchRequest;
-
- QList<QContactLocalId> qcl = m_qm->contactIds();
- if(qcl.count() < 10){
- QFAIL("No enough contacts to get 10");
- }
- QList<QContactLocalId> one;
- for(int i = 0; i<10; i++)
- one += qcl.takeFirst();
- m_num_contacts = 10;
-
- QContactLocalIdFilter idFil;
- idFil.setIds(one);
- req->setFilter(idFil);
-
- req->setManager(m_qm);
-
- // connect(req, SIGNAL(progress(QContactFetchRequest*, bool)), this, SLOT(gotContact(QContactFetchRequest*,bool)));
- connect(req, SIGNAL(resultsAvailable()), this, SLOT(resultsAvailable()));
-
- m_timer->start(1000);
-
- QBENCHMARK {
- req->start();
- ret = loop->exec();
- }
- m_timer->stop();
-
- //qDebug() << "Got Contact: " << qm->synthesizeDisplayLabel(c);
- if(ret){
- QFAIL("Failed to load one contact");
- }
-
- delete req;
-
-#elif defined(Q_OS_SYMBIAN)
- QList<QContactLocalId> qcl = m_qm->contactIds();
- if(qcl.count() < 10){
- QFAIL("No enough contacts to get 10");
- }
- QList<QContactLocalId> one;
- for(int i = 0; i<10; i++)
- one += qcl.takeFirst();
-
- QContactLocalIdFilter idFil;
- idFil.setIds(one);
-
- QList<QContact> qlc;
-
- QBENCHMARK {
- qlc = m_qm->contacts(idFil, QList<QContactSortOrder>(), QStringList());
- }
-
- if(qlc.count() != 10){
- QFAIL("Did not get 10 contacts back");
- }
-
-#endif
- }
- else if(m_backend == BackendContactsModel){
-#ifdef Q_OS_SYMBIAN
- //open database
- // Open the default contact database
- CContactDatabase* contactDb = CContactDatabase::OpenL();
- CleanupStack::PushL(contactDb);
-
- int id = id_list.takeFirst();
- id_list.append(id);
-
- TInt r;
-
- CContactItem *item1;
- CContactItem *item2;
- CContactItem *item3;
- CContactItem *item4;
- CContactItem *item5;
- CContactItem *item6;
- CContactItem *item7;
- CContactItem *item8;
- CContactItem *item9;
- CContactItem *item10;
-
- QBENCHMARK {
- TRAP(r, item1 = contactDb->ReadContactL(id));
- id = id_list.takeFirst();
- id_list.append(id);
- TRAP(r, item2 = contactDb->ReadContactL(id));
- id = id_list.takeFirst();
- id_list.append(id);
- TRAP(r, item3 = contactDb->ReadContactL(id));
- id = id_list.takeFirst();
- id_list.append(id);
- TRAP(r, item4 = contactDb->ReadContactL(id));
- id = id_list.takeFirst();
- id_list.append(id);
- TRAP(r, item5 = contactDb->ReadContactL(id));
- id = id_list.takeFirst();
- id_list.append(id);
- TRAP(r, item6 = contactDb->ReadContactL(id));
- id = id_list.takeFirst();
- id_list.append(id);
- TRAP(r, item7 = contactDb->ReadContactL(id));
- id = id_list.takeFirst();
- id_list.append(id);
- TRAP(r, item8 = contactDb->ReadContactL(id));
- id = id_list.takeFirst();
- id_list.append(id);
- TRAP(r, item9 = contactDb->ReadContactL(id));
- id = id_list.takeFirst();
- id_list.append(id);
- TRAP(r, item10 = contactDb->ReadContactL(id));
- }
- CleanupStack::PushL(item1);
- CleanupStack::PushL(item2);
- CleanupStack::PushL(item3);
- CleanupStack::PushL(item4);
- CleanupStack::PushL(item5);
- CleanupStack::PushL(item6);
- CleanupStack::PushL(item7);
- CleanupStack::PushL(item8);
- CleanupStack::PushL(item9);
- CleanupStack::PushL(item10);
-
- if(r != KErrNone){ qWarning() << "Error by OpenContactL: " << r; }
-
- CleanupStack::PopAndDestroy(11); //10*item + contactsDb
-#endif
- }
-}
-
-void tst_Contact::timeout()
-{
- qDebug() << "***** Timeout, haven't received the signal/contact within 1sec";
- loop->exit(1); // timeout, fail test
-
-}
-
-void tst_Contact::gotContact(QContactFetchRequest *request, bool appendOnly)
-{
- Q_UNUSED(appendOnly);
-
- // first, check to make sure that the request is still valid.
- if (request->state() == QContactAbstractRequest::CanceledState) {
- delete request;
- QWARN("Contact request canceled");
- loop->exit(1);
- return; // ignore these results.
- }
-
- if(request->contacts().count() > 0) {
- m_num_contacts -= request->contacts().count();
- if(m_num_contacts <= 0)
- loop->exit(0);
- return; // got one or more
- }
-
- // check to see if the request status is "finished" - clean up.
- if (request->state() == QContactAbstractRequest::FinishedState) {
- delete request;
- }
-
-}
-
-void tst_Contact::resultsAvailable()
-{
-
- QContactFetchRequest *req = qobject_cast<QContactFetchRequest *>(sender());
- if(req){
- //qDebug() << m_run << " Got resultsAvailable: " << req->contacts().count() << " need: " << m_num_contacts;
- if(!req->contacts().empty()) {
- m_num_contacts -= req->contacts().count();
- if(m_num_contacts <= 0)
- loop->exit(0);
- return; // got one or more
- }
- }
-
-}
-
-void tst_Contact::resultsAvailableFilter()
-{
-
- QContactFetchRequest *req = qobject_cast<QContactFetchRequest *>(sender());
- if(req){
- if(!req->contacts().empty()) { // we got enough certainly...don't know how many are coming back with the filter
- loop->exit(0);
- return; // got one or more
- }
- }
-}
-
-void tst_Contact::stateChanged(QContactAbstractRequest::State /*newState*/)
-{
- qDebug() << "Got state change";
-}
-
-void tst_Contact::tst_createContact()
-{
- QBENCHMARK {
- createContact();
- }
-}
-
-void tst_Contact::tst_saveContact()
-{
- if(m_backend == BackendQContacts) {
- QContact *c = new QContact;
- c->setType("Contact");
- QContactName cname;
- QString name;
- name = firstNames.takeFirst();
- firstNames.push_back(name);
- cname.setFirstName(name);
- name = lastNames.takeFirst();
- lastNames.push_back(name);
- cname.setLastName(name);
- cname.setPrefix("Mr");
- c->saveDetail(&cname);
-
- int ret = 0;
-
- QBENCHMARK {
- ret = m_qm->saveContact(c);
- }
- if(!ret){
- qDebug() << "Failed to create contact durring setup";
- return;
- }
- id_list.append(c->localId());
- delete c;
- }
- else if(m_backend == BackendContactsModel){
-#ifdef Q_OS_SYMBIAN
- // Create a contact card and add a work phone number. Numeric values are
- // stored in a text field (storage type = KStorageTypeText).
-
- CContactDatabase* db = CContactDatabase::OpenL();
- CleanupStack::PushL(db);
-
- CContactCard* newCard = CContactCard::NewLC();
-
- QString name;
-
- // Create the firstName field and add the data to it
- name = firstNames.takeFirst();
- firstNames.push_back(name);
- CContactItemField* firstName = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldGivenName);
- TPtrC Firstname(reinterpret_cast<const TUint16*>(name.utf16()));
- firstName->TextStorage()->SetTextL(Firstname);
- newCard->AddFieldL(*firstName);
- CleanupStack::Pop(firstName);
-
- // Create the lastName field and add the data to it
- name = lastNames.takeFirst();
- lastNames.push_back(name);
- CContactItemField* lastName= CContactItemField::NewLC(KStorageTypeText, KUidContactFieldFamilyName);
- TPtrC Lastname(reinterpret_cast<const TUint16*>(name.utf16()));
- lastName->TextStorage()->SetTextL(Lastname);
- newCard->AddFieldL(*lastName);
- CleanupStack::Pop(lastName);
-
- CContactItemField* prefix = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldPrefixName);
- _LIT(KPrefix, "Mr");
- prefix->TextStorage()->SetTextL(KPrefix);
- newCard->AddFieldL(*prefix);
- CleanupStack::Pop(prefix);
-
- QBENCHMARK {
- // Add newCard to the database
- const TContactItemId contactId = db->AddNewContactL(*newCard);
- db->CloseContactL(contactId);
- id_list.append(contactId);
- }
-
- CleanupStack::PopAndDestroy(2); //newCard, contactsDb
-#else
- qWarning("ContactModel set but Q_OS_SYMBIAN not set, this doesn't make sense");
-#endif
- }
-}
-
-
-void tst_Contact::createContact()
-{
- if(m_backend == BackendQContacts) {
- QContact *c = new QContact;
- c->setType("Contact");
- QContactName cname;
- QString name;
- name = firstNames.takeFirst();
- firstNames.push_back(name);
- cname.setFirstName(name);
- name = lastNames.takeFirst();
- lastNames.push_back(name);
- cname.setLastName(name);
- cname.setPrefix("Mr");
- c->saveDetail(&cname);
-
- if(!m_qm->saveContact(c)){
- qDebug() << "Failed to create contact durring setup";
- return;
- }
- id_list.append(c->localId());
- delete c;
- }
- else if(m_backend == BackendContactsModel){
-#ifdef Q_OS_SYMBIAN
- // Create a contact card and add a work phone number. Numeric values are
- // stored in a text field (storage type = KStorageTypeText).
-
- CContactDatabase* db = CContactDatabase::OpenL();
- CleanupStack::PushL(db);
-
- CContactCard* newCard = CContactCard::NewLC();
-
- QString name;
-
- // Create the firstName field and add the data to it
- name = firstNames.takeFirst();
- firstNames.push_back(name);
- CContactItemField* firstName = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldGivenName);
- TPtrC Firstname(reinterpret_cast<const TUint16*>(name.utf16()));
- firstName->TextStorage()->SetTextL(Firstname);
- newCard->AddFieldL(*firstName);
- CleanupStack::Pop(firstName);
-
- // Create the lastName field and add the data to it
- name = lastNames.takeFirst();
- lastNames.push_back(name);
- CContactItemField* lastName= CContactItemField::NewLC(KStorageTypeText, KUidContactFieldFamilyName);
- TPtrC Lastname(reinterpret_cast<const TUint16*>(name.utf16()));
- lastName->TextStorage()->SetTextL(Lastname);
- newCard->AddFieldL(*lastName);
- CleanupStack::Pop(lastName);
-
- CContactItemField* prefix = CContactItemField::NewLC(KStorageTypeText, KUidContactFieldPrefixName);
- _LIT(KPrefix, "Mr");
- prefix->TextStorage()->SetTextL(KPrefix);
- newCard->AddFieldL(*prefix);
- CleanupStack::Pop(prefix);
-
- // Add newCard to the database
- const TContactItemId contactId = db->AddNewContactL(*newCard);
- db->CloseContactL(contactId);
-
- id_list.append(contactId);
- CleanupStack::PopAndDestroy(2); //newCard, contactsDb
-#else
- qWarning("ContactModel set but Q_OS_SYMBIAN not set, this doesn't make sense");
-#endif
- }
-}
-
-void tst_Contact::tst_nameFilter()
-{
- if(m_backend == BackendQContacts){
- QContactFilter fil = QContactName::match(firstNames.first(),""); // pick one first name to find
- //QContactFilter fil = QContactName::match("sdfsdfsdfjhsjkdfshdkf", ""); // pick one first name to find
- QContact c;
-
- m_run++;
-
-#if defined(Q_WS_MAEMO_6)
- int ret;
- QContactFetchRequest* req = new QContactFetchRequest;
- req->setFilter(fil);
- req->setManager(m_qm);
-
- connect(req, SIGNAL(resultsAvailable()), this, SLOT(resultsAvailableFilter()));
-
- m_timer->start(1000);
-
- QBENCHMARK {
- req->start();
- ret = loop->exec();
- }
- m_timer->stop();
-
- //qDebug() << "Got Contact: " << qm->synthesizeDisplayLabel(c);
- if(ret){
- QFAIL("Failed to load one contact");
- }
-
-// QList<QContact> qcl = req->contacts();
-// while(!qcl.isEmpty()){
-// QContact c = qcl.takeFirst();
-// qDebug() << "Contact: " << c.displayLabel();
-// }
- delete req;
-
-#elif defined(Q_OS_SYMBIAN)
- QList<QContact> qlc;
-
- QBENCHMARK {
- qlc = m_qm->contacts(fil, QList<QContactSortOrder>(), QStringList());
- }
-
-// while(!qlc.isEmpty()){
-// QContact c = qlc.takeFirst();
-// qDebug() << "Contact: " << c.displayLabel();
-// }
-#endif
- }
- else if(m_backend == BackendContactsModel){
-#ifdef Q_OS_SYMBIAN
- //open database
- // Open the default contact database
- CContactDatabase* contactDb = CContactDatabase::OpenL();
- CleanupStack::PushL(contactDb);
-
- CContactItem *item = 0x0;
-
- const TPtrC Firstname(reinterpret_cast<const TUint16*>(firstNames.first().utf16()));
- CContactIdArray* idArray;
-
- CContactItemFieldDef* fieldDef = new (ELeave) CContactItemFieldDef();
- CleanupStack::PushL(fieldDef);
-
- fieldDef->AppendL( KUidContactFieldGivenName);
-
- QBENCHMARK {
- idArray = contactDb->FindLC(Firstname, fieldDef);
- if(idArray->Count() > 0)
- item = contactDb->ReadContactL((*idArray)[0]);
- else
- QFAIL("No contacts returned from CContactDatabase::FindLC");
- }
- CleanupStack::PushL(item);
-
- CleanupStack::PopAndDestroy(4); //item, idArray, fielddef, lock, contactsDb
-#endif
- }
-}
-
-void tst_Contact::tst_removeOneContact()
-{
- if(m_backend == BackendQContacts){
- QList<QContactLocalId> one;
- QMap<int, QContactManager::Error> errorMap;
-
- if(id_list.count() < 1){ // incase we run out of contacts
- createContact();
- }
-
- one += id_list.takeFirst();
- QBENCHMARK {
- m_qm->removeContacts(&one, &errorMap);
- }
-
- }
- else if(m_backend == BackendContactsModel){
-#ifdef Q_OS_SYMBIAN
- CContactDatabase* db = CContactDatabase::OpenL();
- CleanupStack::PushL(db);
-
- if(id_list.isEmpty())
- QFAIL("no contacts available to be removed for tst_removeOnContact()");
-
-
- TInt32 id = id_list.takeFirst();
-
- QBENCHMARK {
- db->DeleteContactL(id);
- }
-
- CleanupStack::PopAndDestroy(1); //idArray, contactsDb
-#endif
- }
-}
-
-void tst_Contact::tst_removeAllContacts()
-{
- int before = countContacts();
-
- if(before < 20) {
- for(int i = before; i < 20; i++){
- createContact();
- }
- }
-
- QBENCHMARK {
- clearContacts();
- }
-
-}
-
-int main(int argc, char **argv){
-
- QApplication app(argc, argv);
-
- tst_Contact test1;
- test1.setBackend("memory");
- QTest::qExec(&test1, argc, argv);
-
-// tst_Contact test2;
-// test2.setBackend("tracker");
-// QTest::qExec(&test2, argc, argv);
-#if defined(Q_OS_SYMBIAN)
- tst_Contact test2;
- test2.setBackend("symbian");
- QTest::qExec(&test2, argc, argv);
-
- tst_Contact test3;
- test3.setBackend("SymbianContactsModel");
- QTest::qExec(&test3, argc, argv);
-#endif
-}
-
-#include "tst_contacts.moc"
-