/*
* 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 "t_caclient.h"
#include "caservice.h"
#include "canotifier.h"
#include "canotifierfilter.h"
#include "t_caclientNotifier.h"
const int entryIdFake(-1);
const int waitTime500ms(500);
const int waitTime1sec(1000);
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
void TestCaClient::TestAddItemChangeTypeNotifier3Clients()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
{
QSharedPointer<CaService> service = CaService::instance();
TestCaClientNotifier *clientNotifier_1 = new TestCaClientNotifier(*service);
CaNotifier *notifier_1 = clientNotifier_1->getNotifier();
TestCaClientNotifier *clientNotifier_2 = new TestCaClientNotifier(*service);
CaNotifier *notifier_2 = clientNotifier_2->getNotifier();
TestCaClientNotifier *clientNotifier_3 = new TestCaClientNotifier(*service);
CaNotifier *notifier_3 = clientNotifier_3->getNotifier();
connect(notifier_1, SIGNAL(entryChanged(int,ChangeType)),
clientNotifier_1, SLOT(entryChanged(int,ChangeType)));
connect(notifier_2, SIGNAL(entryChanged(CaEntry,ChangeType)),
clientNotifier_2, SLOT(entryChanged(CaEntry,ChangeType)));
connect(notifier_3, SIGNAL(entryChanged(int,ChangeType)),
clientNotifier_3, SLOT(entryChanged(int,ChangeType)));
QTest::qWait(waitTime1sec);
clientNotifier_1->mChangeType = RemoveChangeType;
clientNotifier_2->mChangeType = RemoveChangeType;
clientNotifier_3->mChangeType = RemoveChangeType;
terminatServer();
CaEntry item;
item.setText("Text");
item.setEntryTypeName("TypeName");
QSharedPointer<CaEntry> entry = service->createEntry(item);
QTest::qWait(waitTime1sec);
QCOMPARE(clientNotifier_1->mChangeType, AddChangeType);
QVERIFY(clientNotifier_1->mEntryId > 0);
QCOMPARE(clientNotifier_1->mEntryId, entry->id());
QCOMPARE(clientNotifier_1->mEntryId, clientNotifier_2->mEntryId);
QCOMPARE(clientNotifier_3->mEntryId, clientNotifier_2->mEntryId);
QCOMPARE(clientNotifier_2->mChangeType, AddChangeType);
QCOMPARE(entry->text(), clientNotifier_2->mEntry->text());
QCOMPARE(clientNotifier_3->mChangeType, AddChangeType);
// cleanup
disconnect(notifier_1, SIGNAL(entryChanged(int,ChangeType)),
clientNotifier_1, SLOT(entryChanged(int,ChangeType)));
disconnect(notifier_2, SIGNAL(entryChanged(CaEntry,ChangeType)),
clientNotifier_2, SLOT(entryChanged(CaEntry,ChangeType)));
disconnect(notifier_3, SIGNAL(entryChanged(int,ChangeType)),
clientNotifier_3, SLOT(entryChanged(int,ChangeType)));
QTest::qWait(waitTime1sec);
delete clientNotifier_1;
delete clientNotifier_2;
delete clientNotifier_3;
service->removeEntry(entry->id());
}
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntryChangeTypeNotifier3Clients()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
{
QSharedPointer<CaService> service = CaService::instance();
TestCaClientNotifier *clientNotifier_1 = new TestCaClientNotifier(*service);
CaNotifier *notifier_1 = clientNotifier_1->getNotifier();
TestCaClientNotifier *clientNotifier_2 = new TestCaClientNotifier(*service);
CaNotifier *notifier_2 = clientNotifier_2->getNotifier();
TestCaClientNotifier *clientNotifier_3 = new TestCaClientNotifier(*service);
CaNotifier *notifier_3 = clientNotifier_3->getNotifier();
connect(notifier_1, SIGNAL(entryChanged(int,ChangeType)),
clientNotifier_1, SLOT(entryChanged(int,ChangeType)));
connect(notifier_2, SIGNAL(entryChanged(CaEntry,ChangeType)),
clientNotifier_2, SLOT(entryChanged(CaEntry,ChangeType)));
connect(notifier_3, SIGNAL(entryChanged(int,ChangeType)),
clientNotifier_3, SLOT(entryChanged(int,ChangeType)));
QTest::qWait(waitTime1sec);
terminatServer();
CaEntry item;
item.setText("Text");
item.setEntryTypeName("TypeName");
QSharedPointer<CaEntry> entry = service->createEntry(item);
QTest::qWait(waitTime1sec);
QCOMPARE(clientNotifier_1->mChangeType, AddChangeType);
QVERIFY(clientNotifier_2->mEntryId > 0);
QCOMPARE(clientNotifier_3->mEntryId, entry->id());
int entryId_1 = clientNotifier_1->mEntryId;
clientNotifier_1->mEntryId = 0;
int entryId_2 = clientNotifier_2->mEntryId;
clientNotifier_2->mEntryId = 0;
int entryId_3 = clientNotifier_3->mEntryId;
clientNotifier_3->mEntryId = 0;
bool removed = service->removeEntry(*entry);
QTest::qWait(waitTime1sec);
QCOMPARE(clientNotifier_1->mChangeType, RemoveChangeType);
QCOMPARE(clientNotifier_2->mChangeType, RemoveChangeType);
QCOMPARE(clientNotifier_3->mChangeType, RemoveChangeType);
QVERIFY(clientNotifier_1->mEntryId > 0);
QCOMPARE(clientNotifier_1->mEntryId, entryId_1);
QCOMPARE(clientNotifier_2->mEntryId, entryId_2);
QCOMPARE(clientNotifier_3->mEntryId, entryId_3);
QCOMPARE(entryId_1, entryId_3);
QCOMPARE(entryId_2, entryId_3);
QCOMPARE(removed, TRUE);
// cleanup
disconnect(notifier_1, SIGNAL(entryChanged(int,ChangeType)),
clientNotifier_1, SLOT(entryChanged(int,ChangeType)));
disconnect(notifier_2, SIGNAL(entryChanged(const CaEntry &,ChangeType)),
clientNotifier_2, SLOT(entryChanged(const CaEntry &,ChangeType)));
disconnect(notifier_3, SIGNAL(entryChanged(int,ChangeType)),
clientNotifier_3, SLOT(entryChanged(int,ChangeType)));
QTest::qWait(waitTime500ms);
delete clientNotifier_1;
delete clientNotifier_2;
delete clientNotifier_3;
service->removeEntry(entry->id());
}
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARKEND;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
}
// ---------------------------------------------------------------------------
//
void TestCaClient::TestRemoveEntriesChangeTypeNotifier3Clients()
{
#ifdef Q_OS_SYMBIAN
#ifdef UT_MEMORY_CHECK
// __UHEAP_MARK;
#endif//UT_MEMORY_CHECK
#endif//Q_OS_SYMBIAN
{
QSharedPointer<CaService> service = CaService::instance();
TestCaClientNotifier *clientNotifier_1 = new TestCaClientNotifier(*service);
CaNotifier *notifier_1 = clientNotifier_1->getNotifier();
TestCaClientNotifier *clientNotifier_2 = new TestCaClientNotifier(*service);
CaNotifier *notifier_2 = clientNotifier_2->getNotifier();
TestCaClientNotifier *clientNotifier_3 = new TestCaClientNotifier(*service);
CaNotifier *notifier_3 = clientNotifier_3->getNotifier();
connect(notifier_1, SIGNAL(entryChanged(int,ChangeType)),
clientNotifier_1, SLOT(entryChanged(int,ChangeType)));
connect(notifier_2, SIGNAL(entryChanged(CaEntry,ChangeType)),
clientNotifier_2, SLOT(entryChanged(CaEntry,ChangeType)));
connect(notifier_3, SIGNAL(entryChanged(int,ChangeType)),
clientNotifier_3, SLOT(entryChanged(int,ChangeType)));
QTest::qWait(waitTime1sec);
CaEntry item1;
item1.setText("Text1");
item1.setEntryTypeName("TypeName1");
QSharedPointer<CaEntry> entry1 = service->createEntry(item1);
QTest::qWait(waitTime1sec);
CaEntry item2;
item2.setText("Text2");
item2.setEntryTypeName("TypeName2");
QSharedPointer<CaEntry> entry2 = service->createEntry(item2);
QTest::qWait(waitTime1sec);
CaEntry item3;
item3.setText("Text3");
item3.setEntryTypeName("TypeName3");
QSharedPointer<CaEntry> entry3 = service->createEntry(item3);
QTest::qWait(waitTime1sec);
CaEntry item4;
item4.setText("Text4");
item4.setEntryTypeName("TypeName4");
QSharedPointer<CaEntry> entry4 = service->createEntry(item4);
QTest::qWait(waitTime1sec);
QList<QSharedPointer<CaEntry> > entriesList;
entriesList.append(entry1);
entriesList.append(entry2);
entriesList.append(entry3);
entriesList.append(entry4);
clientNotifier_1->mEntryId = clientNotifier_2->mEntryId =
clientNotifier_3->mEntryId = 0;
bool removed = service->removeEntries(entriesList);
QTest::qWait(waitTime1sec);
QCOMPARE(clientNotifier_1->mChangeType, RemoveChangeType);
QCOMPARE(clientNotifier_2->mChangeType, RemoveChangeType);
QCOMPARE(clientNotifier_3->mChangeType, RemoveChangeType);
QVERIFY(clientNotifier_1->mEntryId > 0);
QCOMPARE(clientNotifier_1->mEntryId, clientNotifier_2->mEntryId);
QCOMPARE(clientNotifier_1->mEntryId, clientNotifier_3->mEntryId);
QCOMPARE(removed, TRUE);
// cleanup
disconnect(notifier_1, SIGNAL(entryChanged(int,ChangeType)),
clientNotifier_1, SLOT(entryChanged(int,ChangeType)));
disconnect(notifier_2, SIGNAL(entryChanged(CaEntry,ChangeType)),
clientNotifier_2, SLOT(entryChanged(CaEntry,ChangeType)));
disconnect(notifier_3, SIGNAL(entryChanged(int,ChangeType)),
clientNotifier_3, SLOT(entryChanged(int,ChangeType)));
QTest::qWait(waitTime1sec);
delete clientNotifier_1;
delete clientNotifier_2;
delete clientNotifier_3;
service->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
}