contentstorage/caclient/tsrc/t_caclient/src/t_caclient_notifier.cpp
author Jaakko Haukipuro (Nokia-MS/Oulu) <Jaakko.Haukipuro@nokia.com>
Thu, 16 Sep 2010 12:11:40 +0100
changeset 117 c63ee96dbe5f
permissions -rw-r--r--
Missing activityfw and taskswitcher components - fix for Bug 3670

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  Main test class for hspluginmodel library.
*
*/

#include <QScopedPointer>
#include <qservicemanager.h>

#include "t_caclient.h"
#include "caservice.h"
#include "canotifier.h"
#include "canotifierfilter.h"
#include "caquery.h"
#include "t_caclientNotifier.h"

const int entryIdFake(-1);
const int waitTime500ms(500);
const int waitTime1sec(1000);

QTM_USE_NAMESPACE

QStringList pluginPaths;
QString xmlName("caapphandlerplugin.xml");

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void TestCaClient::initTestCase()
{
#ifdef Q_OS_SYMBIAN
    startThread();
#endif //Q_OS_SYMBIAN
    mService = CaService::instance();
}
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void TestCaClient::cleanupTestCase()
{
#ifdef Q_OS_SYMBIAN
    stopThread();
#endif //Q_OS_SYMBIAN
    QSharedPointer<CaService> serviceNull(NULL);
    mService = serviceNull;
    QTest::qWait(5000);
}


// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
int threadFunction(void *params)
{
#ifdef Q_OS_SYMBIAN
    while (ETrue) {
        User::ResetInactivityTime();//it should help for Viewserver11 panic
        User::After(5000000);
    }
#endif //Q_OS_SYMBIAN
    return 0;
}

// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void TestCaClient::startThread()
{
#ifdef Q_OS_SYMBIAN
    User::LeaveIfError(iThread.Create(
                           _L("thread_kill_viewsrv11"),
                           threadFunction,
                           16384,
                           4000,
                           4000,
                           NULL));
    iThread.Resume();
#endif //Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void TestCaClient::stopThread()
{
#ifdef Q_OS_SYMBIAN
    iThread.Close();
#endif //Q_OS_SYMBIAN
}


// ---------------------------------------------------------------------------
//
void TestCaClient::TestAssignmentOperatorNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
    {
        CaNotifierFilter filter;
        filter.setEntryRole(ItemEntryRole);
        filter.setTypeNames(QStringList() << "typeName1" << "typeName2");
        filter.setParentId(22);
        filter.setIds(QList<int>() << 11 << 22);

        CaNotifierFilter filterAssign;
        filterAssign = filter;
        QCOMPARE(filterAssign.getEntryRole(), filter.getEntryRole());
        QCOMPARE(filterAssign.getParentId(), filter.getParentId());
        for (int i(0); i < filter.getIds().count(); i++) {
            QCOMPARE(filterAssign.getIds().at(i),
            filter.getIds().at(i));
        }
        for (int i(0); i < filter.getTypeNames().count(); i++) {
            QCOMPARE(filterAssign.getTypeNames().at(i),
            filter.getTypeNames().at(i));
        }

        filter.setEntryRole(GroupEntryRole);
        filter.getTypeNames().clear();
        filter.setTypeNames(QStringList() << "typeName3" << "typeName4");
        filter.setParentId(55);
        filter.getIds().clear();
        filter.setIds(QList<int>() << 33 << 44);

        QVERIFY(filterAssign.getEntryRole() != filter.getEntryRole());
        QVERIFY(filterAssign.getParentId() != filter.getParentId());
        for (int i(0); i < filter.getIds().count(); i++) {
            QVERIFY(filterAssign.getIds().at(i)
            != filter.getIds().at(i));
        }
        for (int i(0); i < filter.getTypeNames().count(); i++) {
            QVERIFY(filterAssign.getTypeNames().at(i)
            != filter.getTypeNames().at(i));
        }

        CaNotifierFilter filterCopyConstructor(filter);
        QCOMPARE(filterCopyConstructor.getEntryRole(), filter.getEntryRole());
        QCOMPARE(filterCopyConstructor.getParentId(), filter.getParentId());
        for (int i(0); i < filter.getIds().count(); i++) {
            QCOMPARE(filterCopyConstructor.getIds().at(i),
            filter.getIds().at(i));
        }
        for (int i(0); i < filter.getTypeNames().count(); i++) {
            QCOMPARE(filterCopyConstructor.getTypeNames().at(i),
            filter.getTypeNames().at(i));
        }

        CaQuery query;
        query.setEntryRoles(GroupEntryRole);
        query.setEntryTypeNames(QStringList() << "Query1" << "Query2");
        query.setParentId(77);

        CaNotifierFilter filterQuery(query);
        QCOMPARE(filterQuery.getEntryRole(), query.entryRoles());
        QCOMPARE(filterQuery.getParentId(), query.parentId());
        QCOMPARE(filterQuery.getIds().count(), 0);
        for (int i(0); i < query.entryTypeNames().count(); i++) {
            QCOMPARE(filterQuery.getTypeNames().at(i),
            query.entryTypeNames().at(i));
        }
    }
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void TestCaClient::TestAddItemChangeTypeNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
    {
        CaNotifierFilter *filter = new CaNotifierFilter();
        filter->setEntryRole(ItemEntryRole);
        QStringList strList;
        strList.append("TypeName");
        filter->setTypeNames(strList);
        TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService, filter);
        CaNotifier *notifier = clientNotifier->getNotifier();

        connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        QTest::qWait(waitTime1sec);
        CaEntry item;
        item.setText("Text");
        item.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry = mService->createEntry(item);
        QTest::qWait(waitTime1sec);

        QCOMPARE(clientNotifier->mChangeType, AddChangeType);
        QVERIFY(clientNotifier->mEntryId > 0);
        QCOMPARE(clientNotifier->mEntryId, entry->id());

        // cleanup
        disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        QTest::qWait(waitTime500ms);
        delete clientNotifier;
        delete filter;
        mService->removeEntry(entry->id());
        QTest::qWait(waitTime500ms);
        QTest::qWait(waitTime500ms);
    }
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestAddGroupChangeTypeNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
    {

        CaNotifierFilter *filter = new CaNotifierFilter();
        filter->setEntryRole(GroupEntryRole);
        filter->setTypeNames(QStringList() << "TypeName");
        TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService, filter);
        CaNotifier *notifier = clientNotifier->getNotifier();

        connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        QTest::qWait(waitTime500ms);
        CaEntry group(GroupEntryRole);
        group.setText("Text");
        group.setEntryTypeName("TypeName");

        QSharedPointer<CaEntry> entry = mService->createEntry(group);
        QTest::qWait(waitTime1sec);

        QCOMPARE(clientNotifier->mChangeType, AddChangeType);
        QVERIFY(clientNotifier->mEntryId > 0);
        QCOMPARE(clientNotifier->mEntryId, entry->id());

        // cleanup
        disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        QTest::qWait(waitTime500ms);
        delete clientNotifier;
        mService->removeEntry(entry->id());
    }
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntryChangeTypeNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
    {

        CaNotifierFilter *filter = new CaNotifierFilter();
        filter->setEntryRole(ItemEntryRole);
        filter->setTypeNames(QStringList() << "TypeName");
        TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService, filter);
        CaNotifier *notifier = clientNotifier->getNotifier();

        connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        QTest::qWait(waitTime500ms);
        connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);
        CaEntry item;
        item.setText("Text");
        item.setEntryTypeName("TypeName");

        QSharedPointer<CaEntry> entry = mService->createEntry(item);
        QTest::qWait(waitTime1sec);

        QCOMPARE(clientNotifier->mChangeType, AddChangeType);
        QVERIFY(clientNotifier->mEntryId > 0);
        QCOMPARE(clientNotifier->mEntryId, entry->id());

        int entryId = clientNotifier->mEntryId;
        clientNotifier->mEntryId = 0;

        bool removed = mService->removeEntry(*entry);
        QTest::qWait(waitTime1sec);

        QCOMPARE(clientNotifier->mChangeType, RemoveChangeType);
        QVERIFY(clientNotifier->mEntryId > 0);
        QCOMPARE(clientNotifier->mEntryId, entryId);
        QCOMPARE(removed, TRUE);

        // cleanup
        disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);
        delete clientNotifier;
        mService->removeEntry(entry->id());
    }
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntryIdChangeTypeNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
    {


        CaEntry item;
        item.setText("Text");
        item.setEntryTypeName("TypeName");

        QSharedPointer<CaEntry> entry = mService->createEntry(item);
        QTest::qWait(waitTime1sec);

        CaNotifierFilter *filter = new CaNotifierFilter();
        filter->setEntryRole(ItemEntryRole);
        filter->setTypeNames(QStringList() << "TypeName");
        filter->setIds(QList<int>() << entry->id());
        TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService, filter);
        CaNotifier *notifier = clientNotifier->getNotifier();

        connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);

        int entryId = entry->id();
        clientNotifier->mEntryId = 0;

        bool removed = mService->removeEntry(entryId);
        QTest::qWait(waitTime1sec);

        QCOMPARE(clientNotifier->mChangeType, RemoveChangeType);
        QVERIFY(clientNotifier->mEntryId > 0);
        QCOMPARE(clientNotifier->mEntryId, entryId);
        QCOMPARE(removed, TRUE);

        // cleanup
        disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);
        delete clientNotifier;
        delete filter;
        mService->removeEntry(entry->id());
    }
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntryChangeTypeNotifierFake()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
    {

        TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
        CaNotifier *notifier = clientNotifier->getNotifier();

        connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);
        CaEntry item;
        item.setText("Text");
        item.setEntryTypeName("TypeName");

        QSharedPointer<CaEntry> entry = mService->createEntry(item);
        QTest::qWait(waitTime1sec);

        QCOMPARE(clientNotifier->mChangeType, AddChangeType);
        QVERIFY(clientNotifier->mEntryId > 0);
        QCOMPARE(clientNotifier->mEntryId, entry->id());

        clientNotifier->mEntryId = 0;
        CaEntry *entryFake = new CaEntry();
        entryFake->setText("Text");
        entryFake->setEntryTypeName("TypeName");

        bool removed = mService->removeEntry(*entryFake);

        QCOMPARE(clientNotifier->mChangeType, AddChangeType);
        QCOMPARE(clientNotifier->mEntryId, 0);
        QCOMPARE(removed, FALSE);

        // cleanup
        disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);
        delete clientNotifier;
        mService->removeEntry(entry->id());
        delete entryFake;
    }
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntryIdChangeTypeNotifierFake()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
    {

        TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
        CaNotifier *notifier = clientNotifier->getNotifier();

        connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);
        CaEntry item;
        item.setText("Text");
        item.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry = mService->createEntry(item);
        QTest::qWait(waitTime1sec);

        QCOMPARE(clientNotifier->mChangeType, AddChangeType);
        QVERIFY(clientNotifier->mEntryId > 0);
        QCOMPARE(clientNotifier->mEntryId, entry->id());

        clientNotifier->mEntryId = 0;
        bool removed = mService->removeEntry(entryIdFake);
        QTest::qWait(waitTime1sec);

        QCOMPARE(clientNotifier->mChangeType, AddChangeType);
        QCOMPARE(clientNotifier->mEntryId, 0);
        QCOMPARE(removed, FALSE);

        // cleanup
        disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);
        delete clientNotifier;
        mService->removeEntry(entry->id());
    }
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntriesChangeTypeNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
    {


        CaEntry item1;
        item1.setText("Text");
        item1.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry1 = mService->createEntry(item1);
        QTest::qWait(waitTime1sec);
        CaEntry item2;
        item2.setText("Text");
        item2.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry2 = mService->createEntry(item2);
        QTest::qWait(waitTime1sec);
        CaEntry item3;
        item3.setText("Text");
        item3.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry3 = mService->createEntry(item3);
        QTest::qWait(waitTime1sec);
        CaEntry item4;
        item4.setText("Text");
        item4.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry4 = mService->createEntry(item4);
        QTest::qWait(waitTime1sec);

        QList< QSharedPointer<CaEntry> > entriesList;
        entriesList.append(entry1);
        entriesList.append(entry2);
        entriesList.append(entry3);
        entriesList.append(entry4);

        CaNotifierFilter *filter = new CaNotifierFilter();
        filter->setEntryRole(ItemEntryRole);
        filter->setTypeNames(QStringList() << "TypeName");
        filter->setIds(QList<int>() << entry2->id() << entry3->id());
        TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService, filter);
        CaNotifier *notifier = clientNotifier->getNotifier();

        connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        QTest::qWait(waitTime500ms);

        clientNotifier->mEntryId = 0;

        bool removed = mService->removeEntries(entriesList);
        QTest::qWait(waitTime1sec);

        QCOMPARE(clientNotifier->mChangeType, RemoveChangeType);
        QVERIFY(clientNotifier->mEntryId > 0);
        QCOMPARE(clientNotifier->mEntryId, entry3->id());
        QCOMPARE(removed, TRUE);

        // cleanup
        disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);
        delete clientNotifier;
        delete filter;
        mService->removeEntries(entriesList);
        QTest::qWait(waitTime500ms);
        entriesList.clear();
    }
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntriesIdsChangeTypeNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
    {

        TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
        CaNotifier *notifier = clientNotifier->getNotifier();

        connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);
        CaEntry item1;
        item1.setText("Text");
        item1.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry1 = mService->createEntry(item1);
        QTest::qWait(waitTime1sec);
        CaEntry item2;
        item2.setText("Text");
        item2.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry2 = mService->createEntry(item2);
        QTest::qWait(waitTime1sec);
        CaEntry item3;
        item3.setText("Text");
        item3.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry3 = mService->createEntry(item3);
        QTest::qWait(waitTime1sec);
        CaEntry item4;
        item4.setText("Text");
        item4.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry4 = mService->createEntry(item4);
        QTest::qWait(waitTime1sec);

        QList<int> entriesIdsList;
        entriesIdsList.append(entry1->id());
        entriesIdsList.append(entry2->id());
        entriesIdsList.append(entry3->id());
        entriesIdsList.append(entry4->id());

        clientNotifier->mEntryId = 0;

        bool removed = mService->removeEntries(entriesIdsList);
        QTest::qWait(waitTime1sec);

        QCOMPARE(clientNotifier->mChangeType, RemoveChangeType);
        QVERIFY(clientNotifier->mEntryId > 0);
        QCOMPARE(clientNotifier->mEntryId, entry4->id());
        QCOMPARE(removed, TRUE);

        // cleanup
        disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);
        delete clientNotifier;
        mService->removeEntries(entriesIdsList);
        QTest::qWait(waitTime500ms);
        entriesIdsList.clear();
    }
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntriesChangeTypeNotifierFake()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
    {

        TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
        CaNotifier *notifier = clientNotifier->getNotifier();

        connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);
        CaEntry item1;
        item1.setText("Text");
        item1.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry1 = mService->createEntry(item1);
        QTest::qWait(waitTime1sec);
        CaEntry item2;
        item2.setText("Text");
        item2.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry2 = mService->createEntry(item2);
        QTest::qWait(waitTime1sec);
        CaEntry item3;
        item3.setText("Text");
        item3.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry3 = mService->createEntry(item3);
        QTest::qWait(waitTime1sec);
        CaEntry item4;
        item4.setText("Text");
        item4.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entry4 = mService->createEntry(item4);
        QTest::qWait(waitTime1sec);

        QList<QSharedPointer<CaEntry> > entriesList;
        entriesList.append(entry1);
        entriesList.append(entry2);
        entriesList.append(entry3);
        entriesList.append(entry4);

        clientNotifier->mEntryId = 0;

        CaEntry itemFake1;
        itemFake1.setText("Text");
        itemFake1.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entryFake1 = mService->createEntry(itemFake1);
        int entryFake1Id = entryFake1->id();
        entryFake1->setId(entryIdFake);
        QTest::qWait(waitTime1sec);
        CaEntry itemFake2;
        itemFake2.setText("Text");
        itemFake2.setEntryTypeName("TypeName");
        QSharedPointer<CaEntry> entryFake2 = mService->createEntry(itemFake2);
        int entryFake2Id = entryFake2->id();
        entryFake2->setId(entryIdFake);
        QTest::qWait(waitTime1sec);
        QList<QSharedPointer<CaEntry> > entriesListFake;
        entriesListFake.append(entryFake1);
        entriesListFake.append(entryFake2);

        clientNotifier->mEntryId = 0;
        clientNotifier->mChangeType = AddChangeType;

        bool removed = mService->removeEntries(entriesListFake);
        QTest::qWait(waitTime1sec);

        QCOMPARE(clientNotifier->mChangeType, AddChangeType);
        QCOMPARE(clientNotifier->mEntryId, 0);
        QCOMPARE(removed, FALSE);

        entryFake1->setId(entryFake1Id);
        entryFake2->setId(entryFake2Id);

        // cleanup
        disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
        clientNotifier, SLOT(entryChanged(int,ChangeType)));
        disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
        clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
        QTest::qWait(waitTime500ms);
        delete clientNotifier;
        mService->removeEntries(entriesList);
        mService->removeEntries(entriesListFake);
        QTest::qWait(waitTime500ms);
        entriesList.clear();
        entriesListFake.clear();
    }
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntriesIdsChangeTypeNotifierFake()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN

    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
            clientNotifier, SLOT(entryChanged(int,ChangeType)));
    connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
            clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text");
    item1.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text");
    item2.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);
    CaEntry item3;
    item3.setText("Text");
    item3.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry3 = mService->createEntry(item3);
    QTest::qWait(waitTime1sec);
    CaEntry item4;
    item4.setText("Text");
    item4.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry4 = mService->createEntry(item4);
    QTest::qWait(waitTime1sec);

    QList<int> entriesIdsList;
    entriesIdsList.append(entry1->id());
    entriesIdsList.append(entry2->id());
    entriesIdsList.append(entry3->id());
    entriesIdsList.append(entry4->id());

    CaEntry itemFake1;
    itemFake1.setText("Text");
    itemFake1.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryFake1 = mService->createEntry(itemFake1);
    int entryFake1Id = entryFake1->id();
    entryFake1->setId(entryIdFake);
    QTest::qWait(waitTime1sec);
    CaEntry itemFake2;
    itemFake2.setText("Text");
    itemFake2.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryFake2 = mService->createEntry(itemFake2);
    int entryFake2Id = entryFake2->id();
    entryFake2->setId(entryIdFake);
    QTest::qWait(waitTime1sec);
    QList<int> entriesIdsListFake;
    entriesIdsListFake.append(entryFake1->id());
    entriesIdsListFake.append(entryFake2->id());

    clientNotifier->mEntryId = 0;
    clientNotifier->mChangeType = AddChangeType;

    bool removed = mService->removeEntries(entriesIdsListFake);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QCOMPARE(clientNotifier->mEntryId, 0);
    QCOMPARE(removed, FALSE);

    entryFake1->setId(entryFake1Id);
    entryFake2->setId(entryFake2Id);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
               clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntries(entriesIdsList);
    mService->removeEntry(*entryFake1);
    mService->removeEntry(*entryFake2);
    QTest::qWait(waitTime1sec);
    entriesIdsList.clear();
    entriesIdsListFake.clear();

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveGroupChangeTypeNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
            clientNotifier, SLOT(entryChanged(int,ChangeType)));
    connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
            clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry = mService->createEntry(group);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entry->id());

    int entryId = clientNotifier->mEntryId;
    clientNotifier->mEntryId = 0;

    bool removed = mService->removeEntry(*entry);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, RemoveChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryId);
    QCOMPARE(removed, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
               clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entry->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveGroupsChangeTypeNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN



    CaEntry group1(GroupEntryRole);
    group1.setText("Text");
    group1.setEntryTypeName("TypeName1");
    QSharedPointer<CaEntry> entry1 = mService->createEntry(group1);
    QTest::qWait(waitTime1sec);
    CaEntry group2(GroupEntryRole);
    group2.setText("Text");
    group2.setEntryTypeName("TypeName2");
    QSharedPointer<CaEntry> entry2 = mService->createEntry(group2);
    QTest::qWait(waitTime1sec);
    CaEntry group3(GroupEntryRole);
    group3.setText("Text");
    group3.setEntryTypeName("TypeName3");
    QSharedPointer<CaEntry> entry3 = mService->createEntry(group3);
    QTest::qWait(waitTime1sec);
    CaEntry group4(GroupEntryRole);
    group4.setText("Text");
    group4.setEntryTypeName("TypeName4");
    QSharedPointer<CaEntry> entry4 = mService->createEntry(group4);
    QTest::qWait(waitTime1sec);

    QList< QSharedPointer<CaEntry> > entriesList;
    entriesList.append(entry1);
    entriesList.append(entry2);
    entriesList.append(entry3);
    entriesList.append(entry4);

    CaNotifierFilter *filter = new CaNotifierFilter();
    filter->setEntryRole(GroupEntryRole);
    filter->setTypeNames(QStringList() << "TypeName3" << "TypeName4");
    filter->setIds(QList<int>() << entry3->id());
    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService, filter);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
            clientNotifier, SLOT(entryChanged(int,ChangeType)));
    connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
            clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);

    clientNotifier->mEntryId = 0;

    bool removed = mService->removeEntries(entriesList);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, RemoveChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entry3->id());
    QCOMPARE(removed, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
               clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    delete filter;
    mService->removeEntries(entriesList);
    QTest::qWait(waitTime1sec);
    entriesList.clear();

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void TestCaClient::TestUpdateChangeTypeNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
            clientNotifier, SLOT(entryChanged(int,ChangeType)));
    connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
            clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);

    CaEntry item;
    item.setText("Text");
    item.setEntryTypeName("TypeName");
    item.setDescription("description");

    QSharedPointer<CaEntry> entry = mService->createEntry(item);

    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entry->id());

    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
               clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);
    int entryId = clientNotifier->mEntryId;
    delete clientNotifier;

    CaNotifierFilter *filter = new CaNotifierFilter();
    filter->setEntryRole(ItemEntryRole);
    filter->setIds(QList<int>() << entry->id());
    TestCaClientNotifier *clientNotifierUpdate = new TestCaClientNotifier(*mService, filter);
    CaNotifier *notifierUpdate = clientNotifierUpdate->getNotifier();

    connect(notifierUpdate, SIGNAL(entryChanged(int,ChangeType)),
            clientNotifierUpdate, SLOT(entryChanged(int,ChangeType)));
    connect(notifierUpdate, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
            clientNotifierUpdate, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);

    bool updated = mService->updateEntry(*entry);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifierUpdate->mChangeType, UpdateChangeType);
    QVERIFY(clientNotifierUpdate->mEntryId > 0);
    QCOMPARE(clientNotifierUpdate->mEntryId, entryId);
    QCOMPARE(clientNotifierUpdate->mEntryId, entry->id());
    QCOMPARE(clientNotifierUpdate->mEntry->description(), QString("description"));
    QCOMPARE(updated, TRUE);

    // cleanup
    disconnect(notifierUpdate, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifierUpdate, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifierUpdate, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
               clientNotifierUpdate, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);

    delete clientNotifierUpdate;
    delete filter;
    mService->removeEntry(entry->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestUpdateChangeTypeNotifierFake()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
            clientNotifier, SLOT(entryChanged(int,ChangeType)));
    connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
            clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));

    QTest::qWait(waitTime500ms);
    CaEntry item;
    item.setText("Text");
    item.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry = mService->createEntry(item);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entry->id());


    int entryId = clientNotifier->mEntryId;
    clientNotifier->mEntryId = 0;
    CaEntry itemFake;
    itemFake.setText("Text");
    itemFake.setEntryTypeName("TypeName");

    bool updated = mService->updateEntry(itemFake);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QCOMPARE(clientNotifier->mEntryId, 0);
    QCOMPARE(updated, FALSE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
               clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entry->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestAddUpdateRemove()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
            clientNotifier, SLOT(entryChanged(int,ChangeType)));
    connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
            clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);

    CaEntry item;
    item.setText("Text");
    item.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry = mService->createEntry(item);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entry->id());


    int entryId = clientNotifier->mEntryId;
    clientNotifier->mEntryId = 0;

    bool updated = mService->updateEntry(*entry);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, UpdateChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entry->id());
    QCOMPARE(updated, TRUE);

    entryId = clientNotifier->mEntryId;
    clientNotifier->mEntryId = 0;

    bool removed = mService->removeEntry(entryId);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, RemoveChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(removed, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
               clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entry->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRegisterNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
            clientNotifier, SLOT(entryChanged(int,ChangeType)));
    connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
            clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    connect(notifier, SIGNAL(entryTouched(int)),
            clientNotifier, SLOT(entryTouched(int)));
    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime1sec);
    QCOMPARE(notifier->receivers(SIGNAL(entryChanged(int,ChangeType))), 1);
    QCOMPARE(notifier->receivers(SIGNAL(entryChanged(CaEntry,ChangeType))), 1);
    QCOMPARE(notifier->receivers(SIGNAL(entryTouched(int))), 1);
    QCOMPARE(notifier->receivers(SIGNAL(groupContentChanged(int))), 1);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
               clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    disconnect(notifier, SIGNAL(entryTouched(int)),
               clientNotifier, SLOT(entryTouched(int)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime1sec);

    QCOMPARE(notifier->receivers(SIGNAL(entryChanged(int,ChangeType))), 0);
    QCOMPARE(notifier->receivers(SIGNAL(entryChanged(CaEntry,ChangeType))), 0);
    QCOMPARE(notifier->receivers(SIGNAL(entryTouched(int))), 0);
    QCOMPARE(notifier->receivers(SIGNAL(groupContentChanged(int))), 0);

    delete clientNotifier;

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestUnregisterNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN

    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
            clientNotifier, SLOT(entryChanged(int,ChangeType)));
    connect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
            clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    connect(notifier, SIGNAL(entryTouched(int)),
            clientNotifier, SLOT(entryTouched(int)));
    QTest::qWait(waitTime500ms);
    disconnect(notifier, SIGNAL(entryTouched(int)),
               clientNotifier, SLOT(entryTouched(int)));
    connect(notifier, SIGNAL(entryTouched(int)),
            clientNotifier, SLOT(entryTouched(int)));
    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);

    QCOMPARE(notifier->receivers(SIGNAL(entryChanged(int,ChangeType))), 1);
    QCOMPARE(notifier->receivers(SIGNAL(entryChanged(CaEntry,ChangeType))), 1);
    QCOMPARE(notifier->receivers(SIGNAL(entryTouched(int))), 1);
    QCOMPARE(notifier->receivers(SIGNAL(groupContentChanged(int))), 1);

    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
               clientNotifier, SLOT(entryChanged(const CaEntry &,ChangeType)));
    disconnect(notifier, SIGNAL(entryTouched(int)),
               clientNotifier, SLOT(entryTouched(int)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    connect(notifier, SIGNAL(entryChanged(int,ChangeType)),
            clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime1sec);

    QCOMPARE(notifier->receivers(SIGNAL(entryChanged(int,ChangeType))), 0);
    QCOMPARE(notifier->receivers(SIGNAL(entryChanged(CaEntry,ChangeType))), 0);
    QCOMPARE(notifier->receivers(SIGNAL(entryTouched(int))), 0);
    QCOMPARE(notifier->receivers(SIGNAL(groupContentChanged(int))), 0);

    delete clientNotifier;
    QTest::qWait(waitTime500ms);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestTouchEntryNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN

    CaEntry item;
    item.setText("Text");
    item.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry = mService->createEntry(item);
    QTest::qWait(waitTime1sec);

    CaNotifierFilter *filter = new CaNotifierFilter();
    filter->setEntryRole(ItemEntryRole);
    filter->setIds(QList<int>() << entry->id());
    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService, filter);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryTouched(int)),
            clientNotifier, SLOT(entryTouched(int)));
    QTest::qWait(waitTime500ms);

    bool touched = mService->touch(*entry);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entry->id());
    QCOMPARE(touched, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryTouched(int)),
               clientNotifier, SLOT(entryTouched(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    delete filter;
    mService->removeEntry(entry->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestTouchEntryIdNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryTouched(int)),
            clientNotifier, SLOT(entryTouched(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item;
    item.setText("Text");
    item.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry = mService->createEntry(item);
    QTest::qWait(waitTime1sec);
    QCOMPARE(clientNotifier->mEntryId, 0);

    bool touched = mService->touch(*entry);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entry->id());
    QCOMPARE(touched, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryTouched(int)),
               clientNotifier, SLOT(entryTouched(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entry->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestTouchEntryNotifierFake()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryTouched(int)),
            clientNotifier, SLOT(entryTouched(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item;
    item.setText("Text");
    item.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry = mService->createEntry(item);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mEntryId, 0);

    CaEntry *entryFake = new CaEntry();
    entryFake->setText("Text");
    entryFake->setEntryTypeName("TypeName");

    bool touched = mService->touch(*entryFake);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mEntryId, 0);
    QCOMPARE(touched, FALSE);

    // cleanup
    disconnect(notifier, SIGNAL(entryTouched(int)),
               clientNotifier, SLOT(entryTouched(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entry->id());
    QTest::qWait(waitTime1sec);
    delete entryFake;

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}


void TestCaClient::TestTouchEntryUidNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    QScopedPointer<TestCaClientNotifier> clientNotifier(
        new TestCaClientNotifier(*mService));

    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryTouched(int)),
            clientNotifier.data(), SLOT(entryTouched(int)));

    CaEntry item;
    item.setText("Text");
    item.setEntryTypeName("application");
    item.setAttribute(
        "application:uid",
        "-3");

    QSharedPointer<CaEntry> entry = mService->createEntry(item);

    QTest::qWait(waitTime1sec);

    QVERIFY(!entry.isNull());

    const int expectedEntryId = entry->id();

    entry->setId(0);

    QCOMPARE(clientNotifier->mEntryId, 0);

    bool touched = mService->touch(*entry);

    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mEntryId, expectedEntryId);
    QCOMPARE(touched, true);

    // cleanup
    disconnect(notifier, SIGNAL(entryTouched(int)),
               clientNotifier.data(), SLOT(entryTouched(int)));

    QTest::qWait(waitTime500ms);

    mService->removeEntry(expectedEntryId);
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}


// ---------------------------------------------------------------------------
//
void TestCaClient::TestTouchEntryIdNotifierFake()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN

    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryTouched(int)),
            clientNotifier, SLOT(entryTouched(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item;
    item.setText("Text");
    item.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry = mService->createEntry(item);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mEntryId, 0);

    QScopedPointer<CaEntry> entryFake(new CaEntry());
    entryFake->setText("Text");
    entryFake->setEntryTypeName("TypeName");
    entryFake->setId(entryIdFake);

    bool touched = mService->touch(*entryFake);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mEntryId, 0);
    QCOMPARE(touched, FALSE);

    // cleanup
    disconnect(notifier, SIGNAL(entryTouched(int)),
               clientNotifier, SLOT(entryTouched(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entry->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestTouchGroupNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryTouched(int)),
            clientNotifier, SLOT(entryTouched(int)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry = mService->createEntry(group);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mEntryId, 0);

    bool touched = mService->touch(*entry);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entry->id());
    QCOMPARE(touched, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryTouched(int)),
               clientNotifier, SLOT(entryTouched(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entry->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestAppendEntryGroupNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN

    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryG = mService->createEntry(group);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryG->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item;
    item.setText("Text");
    item.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryI = mService->createEntry(item);
    QTest::qWait(waitTime1sec);
    int groupId = entryG->id();

    clientNotifier->mChangeType = RemoveChangeType;
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;

    bool appended = mService->appendEntryToGroup((CaEntry &)(*entryG), *entryI);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryG->id());
    QCOMPARE(appended, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entryI->id());
    QTest::qWait(waitTime1sec);
    mService->removeEntry(entryG->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestAppendEntryGroupIdNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryG = mService->createEntry(group);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryG->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item;
    item.setText("Text");
    item.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryI = mService->createEntry(item);
    QTest::qWait(waitTime1sec);
    int groupId = entryG->id();

    clientNotifier->mChangeType = RemoveChangeType;
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;

    bool appended = mService->appendEntryToGroup(((CaEntry &)*entryG).id(), (*entryI).id());
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryG->id());
    QCOMPARE(appended, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int, ChangeType)),
               clientNotifier, SLOT(entryChanged(int, ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entryI->id());
    QTest::qWait(waitTime1sec);
    mService->removeEntry(entryG->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestAppendEntriesGroupNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryGroup = mService->createEntry(group);
    QTest::qWait(waitTime1sec);
    int groupId = entryGroup->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryGroup->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text");
    item1.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text");
    item2.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);

    QList< QSharedPointer<CaEntry>  > entriesList;
    entriesList.append(entry1);
    entriesList.append(entry2);

    clientNotifier->mChangeType = RemoveChangeType;
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;

    bool appended = mService->appendEntriesToGroup((CaEntry &)*entryGroup, entriesList);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryGroup->id());
    QCOMPARE(appended, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int, ChangeType)),
               clientNotifier, SLOT(entryChanged(int, ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntries(entriesList);
    QTest::qWait(waitTime1sec);
    mService->removeEntry(entryGroup->id());
    QTest::qWait(waitTime1sec);
    entriesList.clear();

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestAppendEntriesGroupIdNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryGroup = mService->createEntry(group);
    QTest::qWait(waitTime1sec);
    int groupId = entryGroup->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryGroup->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text");
    item1.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryItem1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text");
    item2.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryItem2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);

    QList<int> entriesIdsList;
    entriesIdsList.append(entryItem1->id());
    entriesIdsList.append(entryItem2->id());

    clientNotifier->mChangeType = RemoveChangeType;
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;

    bool appended = mService->appendEntriesToGroup(((CaEntry &)*entryGroup).id(), entriesIdsList);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryGroup->id());
    QCOMPARE(appended, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int, ChangeType)),
               clientNotifier, SLOT(entryChanged(int, ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntries(entriesIdsList);
    QTest::qWait(waitTime1sec);
    mService->removeEntry(entryGroup->id());
    QTest::qWait(waitTime1sec);
    entriesIdsList.clear();

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestPrependEntryGroupNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryG = mService->createEntry(group);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryG->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item;
    item.setText("Text");
    item.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryI = mService->createEntry(item);
    QTest::qWait(waitTime1sec);
    int groupId = entryG->id();

    clientNotifier->mChangeType = RemoveChangeType;
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;

    bool appended = mService->prependEntryToGroup((CaEntry &)(*entryG), *entryI);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryG->id());
    QCOMPARE(appended, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int, ChangeType)),
               clientNotifier, SLOT(entryChanged(int, ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entryI->id());
    QTest::qWait(waitTime1sec);
    mService->removeEntry(entryG->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestPrependEntryGroupIdNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryG = mService->createEntry(group);
    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryG->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item;
    item.setText("Text");
    item.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryI = mService->createEntry(item);
    QTest::qWait(waitTime1sec);
    int groupId = entryG->id();

    clientNotifier->mChangeType = RemoveChangeType;
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;

    bool appended = mService->prependEntryToGroup(((CaEntry &)*entryG).id(), (*entryI).id());
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryG->id());
    QCOMPARE(appended, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int, ChangeType)),
               clientNotifier, SLOT(entryChanged(int, ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entryI->id());
    QTest::qWait(waitTime1sec);
    mService->removeEntry(entryG->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestPrependEntriesGroupNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryGroup = mService->createEntry(group);
    QTest::qWait(waitTime1sec);
    int groupId = entryGroup->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryGroup->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text");
    item1.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text");
    item2.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);

    QList< QSharedPointer<CaEntry> > entriesList;
    entriesList.append(entry1);
    entriesList.append(entry2);

    clientNotifier->mChangeType = RemoveChangeType;
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;

    bool appended = mService->prependEntriesToGroup((CaEntry &)*entryGroup, entriesList);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryGroup->id());
    QCOMPARE(appended, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int, ChangeType)),
               clientNotifier, SLOT(entryChanged(int, ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntries(entriesList);
    QTest::qWait(waitTime1sec);
    mService->removeEntry(entryGroup->id());
    QTest::qWait(waitTime1sec);
    entriesList.clear();

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestPrependEntriesGroupIdNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryGroup = mService->createEntry(group);
    QTest::qWait(waitTime1sec);
    int groupId = entryGroup->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryGroup->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text");
    item1.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryItem1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text");
    item2.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryItem2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);

    QList<int> entriesIdsList;
    entriesIdsList.append(entryItem1->id());
    entriesIdsList.append(entryItem2->id());

    clientNotifier->mChangeType = RemoveChangeType;
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;

    bool appended = mService->prependEntriesToGroup(((CaEntry &)*entryGroup).id(), entriesIdsList);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryGroup->id());
    QCOMPARE(appended, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int, ChangeType)),
               clientNotifier, SLOT(entryChanged(int, ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntries(entriesIdsList);
    QTest::qWait(waitTime1sec);
    mService->removeEntry(entryGroup->id());
    QTest::qWait(waitTime1sec);
    entriesIdsList.clear();

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntryGroupNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN

    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryGroup = mService->createEntry(group);
    QTest::qWait(waitTime1sec);
    int groupId = entryGroup->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryGroup->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text");
    item1.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text");
    item2.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);

    QList< QSharedPointer<CaEntry> > entriesList;
    entriesList.append(entry1);
    entriesList.append(entry2);

    bool appended = mService->appendEntriesToGroup((CaEntry &)*entryGroup, entriesList);
    QTest::qWait(waitTime1sec);
    QCOMPARE(appended, TRUE);

    clientNotifier->mChangeType = AddChangeType;
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;
    bool removed = mService->removeEntryFromGroup((CaEntry &)*entryGroup, *entry1);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryGroup->id());
    QCOMPARE(removed, TRUE);

    clientNotifier->mChangeType = AddChangeType;
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;
    removed = mService->removeEntryFromGroup((CaEntry &)*entryGroup, *entry2);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryGroup->id());
    QCOMPARE(removed, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int, ChangeType)),
               clientNotifier, SLOT(entryChanged(int, ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntries(entriesList);
    QTest::qWait(waitTime1sec);
    mService->removeEntry(entryGroup->id());
    QTest::qWait(waitTime1sec);
    entriesList.clear();

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntryGroupIdNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN


    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryGroup = mService->createEntry(group);
    QTest::qWait(waitTime1sec);
    int groupId = entryGroup->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryGroup->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text");
    item1.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text");
    item2.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);

    QList< QSharedPointer<CaEntry> > entriesList;
    entriesList.append(entry1);
    entriesList.append(entry2);

    bool appended = mService->appendEntriesToGroup((CaEntry &)*entryGroup, entriesList);
    QTest::qWait(waitTime1sec);
    QCOMPARE(appended, TRUE);

    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;
    bool removed = mService->removeEntryFromGroup(entryGroup->id(), entry1->id());
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryGroup->id());
    QCOMPARE(removed, TRUE);

    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;
    removed = mService->removeEntryFromGroup(entryGroup->id(), entry2->id());
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryGroup->id());
    QCOMPARE(removed, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int, ChangeType)),
               clientNotifier, SLOT(entryChanged(int, ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntries(entriesList);
    QTest::qWait(waitTime1sec);
    mService->removeEntry(entryGroup->id());
    QTest::qWait(waitTime1sec);
    entriesList.clear();

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntriesGroupNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN

    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryGroup = mService->createEntry(group);
    QTest::qWait(waitTime1sec);
    int groupId = entryGroup->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryGroup->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text");
    item1.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text");
    item2.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);

    QList<QSharedPointer<CaEntry> > entriesList;
    entriesList.append(entry1);
    entriesList.append(entry2);

    bool appended = mService->appendEntriesToGroup((CaEntry &)*entryGroup, entriesList);
    QTest::qWait(waitTime1sec);
    QCOMPARE(appended, TRUE);

    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;
    bool removed = mService->removeEntriesFromGroup((CaEntry &)*entryGroup, entriesList);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryGroup->id());
    QCOMPARE(removed, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int, ChangeType)),
               clientNotifier, SLOT(entryChanged(int, ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntries(entriesList);
    QTest::qWait(waitTime1sec);
    mService->removeEntry(entryGroup->id());
    QTest::qWait(waitTime1sec);
    entriesList.clear();

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntriesGroupIdNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN

    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryGroup = mService->createEntry(group);
    QTest::qWait(waitTime1sec);
    int groupId = entryGroup->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryGroup->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text");
    item1.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text");
    item2.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);

    QList<QSharedPointer<CaEntry> > entriesList;
    entriesList.append(entry1);
    entriesList.append(entry2);

    bool appended = mService->appendEntriesToGroup((CaEntry &)*entryGroup, entriesList);
    QTest::qWait(waitTime1sec);
    QCOMPARE(appended, TRUE);

    QList<int> entriesIdList;
    entriesIdList.append(entry1->id());
    entriesIdList.append(entry2->id());
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;
    bool removed = mService->removeEntriesFromGroup(entryGroup->id(), entriesIdList);
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryGroup->id());
    QCOMPARE(removed, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int, ChangeType)),
               clientNotifier, SLOT(entryChanged(int, ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntries(entriesList);
    QTest::qWait(waitTime1sec);
    mService->removeEntry(entryGroup->id());
    QTest::qWait(waitTime1sec);
    entriesList.clear();
    entriesIdList.clear();

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestInsertEntryGroupNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN

    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryG = mService->createEntry(group);
    QTest::qWait(waitTime1sec);
    int groupId = entryG->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryG->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text1");
    item1.setEntryTypeName("TypeName1");
    QSharedPointer<CaEntry> entryI1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text2");
    item2.setEntryTypeName("TypeName2");
    QSharedPointer<CaEntry> entryI2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);

    bool appended = mService->appendEntryToGroup((CaEntry &)(*entryG), *entryI1);
    QTest::qWait(waitTime500ms);
    QCOMPARE(appended, TRUE);
    appended = mService->prependEntryToGroup((CaEntry &)(*entryG), *entryI2);
    QTest::qWait(waitTime500ms);
    QCOMPARE(appended, TRUE);

    CaEntry item3;
    item3.setText("Text3");
    item3.setEntryTypeName("TypeName3");
    QSharedPointer<CaEntry> entryI3 = mService->createEntry(item3);
    QTest::qWait(waitTime1sec);
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;

    bool inserted = mService->insertEntryIntoGroup((CaEntry &)*entryG, *entryI3, entryI2->id());
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryG->id());
    QCOMPARE(inserted, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entryI1->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryI2->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryI3->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryG->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void TestCaClient::TestInsertEntryGroupIdNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN

    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryG = mService->createEntry(group);
    QTest::qWait(waitTime1sec);
    int groupId = entryG->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryG->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text1");
    item1.setEntryTypeName("TypeName1");
    QSharedPointer<CaEntry> entryI1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text2");
    item2.setEntryTypeName("TypeName2");
    QSharedPointer<CaEntry> entryI2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);

    bool appended = mService->appendEntryToGroup(entryG->id(), entryI1->id());
    QTest::qWait(waitTime500ms);
    QCOMPARE(appended, TRUE);
    appended = mService->prependEntryToGroup(entryG->id(), entryI2->id());
    QTest::qWait(waitTime500ms);
    QCOMPARE(appended, TRUE);

    CaEntry item3;
    item3.setText("Text3");
    item3.setEntryTypeName("TypeName3");
    QSharedPointer<CaEntry> entryI3 = mService->createEntry(item3);
    QTest::qWait(waitTime1sec);
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;

    bool inserted = mService->insertEntryIntoGroup(entryG->id(), entryI3->id(), entryI2->id());
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryG->id());
    QCOMPARE(inserted, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entryI1->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryI2->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryI3->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryG->id());
    QTest::qWait(waitTime1sec);

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestInsertEntriesGroupNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN

    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryG = mService->createEntry(group);
    QTest::qWait(waitTime1sec);
    int groupId = entryG->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryG->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text1");
    item1.setEntryTypeName("TypeName1");
    QSharedPointer<CaEntry> entryI1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text2");
    item2.setEntryTypeName("TypeName2");
    QSharedPointer<CaEntry> entryI2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);

    bool appended = mService->appendEntryToGroup((CaEntry &)(*entryG), *entryI1);
    QTest::qWait(waitTime500ms);
    QCOMPARE(appended, TRUE);
    appended = mService->prependEntryToGroup((CaEntry &)(*entryG), *entryI2);
    QTest::qWait(waitTime500ms);
    QCOMPARE(appended, TRUE);

    CaEntry item3;
    item3.setText("Text3");
    item3.setEntryTypeName("TypeName3");
    QSharedPointer<CaEntry> entryI3 = mService->createEntry(item3);
    QTest::qWait(waitTime1sec);
    CaEntry item4;
    item4.setText("Text4");
    item4.setEntryTypeName("TypeName4");
    QSharedPointer<CaEntry> entryI4 = mService->createEntry(item4);
    QTest::qWait(waitTime1sec);

    QList<QSharedPointer<CaEntry> > entriesList;
    entriesList.append(entryI3);
    entriesList.append(entryI4);
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;

    bool inserted = mService->insertEntriesIntoGroup((CaEntry &)*entryG, entriesList, entryI2->id());
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryG->id());
    QCOMPARE(inserted, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entryI1->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryI2->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryI3->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryI4->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryG->id());
    QTest::qWait(waitTime1sec);
    entriesList.clear();
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestInsertEntriesGroupIdNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN

    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService);
    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    QTest::qWait(waitTime500ms);
    CaEntry group(GroupEntryRole);
    group.setText("Text");
    group.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entryG = mService->createEntry(group);
    QTest::qWait(waitTime1sec);
    int groupId = entryG->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mEntryId > 0);
    QCOMPARE(clientNotifier->mEntryId, entryG->id());

    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    CaEntry item1;
    item1.setText("Text1");
    item1.setEntryTypeName("TypeName1");
    QSharedPointer<CaEntry> entryI1 = mService->createEntry(item1);
    QTest::qWait(waitTime1sec);
    CaEntry item2;
    item2.setText("Text2");
    item2.setEntryTypeName("TypeName2");
    QSharedPointer<CaEntry> entryI2 = mService->createEntry(item2);
    QTest::qWait(waitTime1sec);

    bool appended = mService->appendEntryToGroup((CaEntry &)(*entryG), *entryI1);
    QTest::qWait(waitTime500ms);
    QCOMPARE(appended, TRUE);
    appended = mService->prependEntryToGroup((CaEntry &)(*entryG), *entryI2);
    QTest::qWait(waitTime500ms);
    QCOMPARE(appended, TRUE);

    CaEntry item3;
    item3.setText("Text3");
    item3.setEntryTypeName("TypeName3");
    QSharedPointer<CaEntry> entryI3 = mService->createEntry(item3);
    QTest::qWait(waitTime1sec);
    CaEntry item4;
    item4.setText("Text4");
    item4.setEntryTypeName("TypeName4");
    QSharedPointer<CaEntry> entryI4 = mService->createEntry(item4);
    QTest::qWait(waitTime1sec);

    QList<int> entriesIdsList;
    entriesIdsList.append(entryI3->id());
    entriesIdsList.append(entryI4->id());
    clientNotifier->mEntryId = 0;
    clientNotifier->mGroupId = 0;

    bool inserted = mService->insertEntriesIntoGroup(entryG->id(), entriesIdsList, entryI2->id());
    QTest::qWait(waitTime1sec);

    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mGroupId, groupId);
    QCOMPARE(clientNotifier->mGroupId, entryG->id());
    QCOMPARE(inserted, TRUE);

    // cleanup
    disconnect(notifier, SIGNAL(entryChanged(int,ChangeType)),
               clientNotifier, SLOT(entryChanged(int,ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);
    delete clientNotifier;
    mService->removeEntry(entryI1->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryI2->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryI3->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryI4->id());
    QTest::qWait(waitTime500ms);
    mService->removeEntry(entryG->id());
    QTest::qWait(waitTime1sec);
    entriesIdsList.clear();

#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}

// ---------------------------------------------------------------------------
//
void TestCaClient::TestChangeEntryWithParentIdNotifier()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
    CaNotifierFilter *filter = new CaNotifierFilter();
    filter->setParentId(1); // AllCollections
    TestCaClientNotifier *clientNotifier = new TestCaClientNotifier(*mService, filter);

    CaNotifier *notifier = clientNotifier->getNotifier();

    connect(notifier, SIGNAL(entryChanged(int, ChangeType)),
            clientNotifier, SLOT(entryChanged(int, ChangeType)));
    connect(notifier, SIGNAL(groupContentChanged(int)),
            clientNotifier, SLOT(groupContentChanged(int)));
    QTest::qWait(waitTime500ms);

    CaEntry entryToAdd(ItemEntryRole);
    entryToAdd.setText("Text");
    entryToAdd.setEntryTypeName("TypeName");
    QSharedPointer<CaEntry> entry = mService->createEntry(entryToAdd);
    QTest::qWait(waitTime1sec);
    int entryId = entry->id();

    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QCOMPARE(clientNotifier->mEntryId, 0);
    QCOMPARE(clientNotifier->mCount, 0);

    bool appended = mService->appendEntryToGroup(3, entryId); // office
    QTest::qWait(waitTime1sec);


    QCOMPARE(clientNotifier->mChangeType, AddChangeType);
    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mCount, 1);

    mService->removeEntry(entryId);

    QTest::qWait(waitTime1sec);

    QCOMPARE(clientNotifier->mChangeType, RemoveChangeType);
    QVERIFY(clientNotifier->mGroupId > 0);
    QCOMPARE(clientNotifier->mCount, 2);

    disconnect(notifier, SIGNAL(entryChanged(int, ChangeType)),
               clientNotifier, SLOT(entryChanged(int, ChangeType)));
    disconnect(notifier, SIGNAL(groupContentChanged(int)),
               clientNotifier, SLOT(groupContentChanged(int)));

    QTest::qWait(waitTime500ms);

    delete clientNotifier;
    delete filter;


#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}

//QTEST_MAIN(homescreen::test::TestCaClient)