diff -r 3ab5c078b490 -r c63ee96dbe5f contentstorage/caclient/tsrc/t_caclient/src/t_caclient_notifier_adv.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contentstorage/caclient/tsrc/t_caclient/src/t_caclient_notifier_adv.cpp Thu Sep 16 12:11:40 2010 +0100 @@ -0,0 +1,267 @@ +/* +* 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 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 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 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 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 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 entry1 = service->createEntry(item1); + QTest::qWait(waitTime1sec); + CaEntry item2; + item2.setText("Text2"); + item2.setEntryTypeName("TypeName2"); + QSharedPointer entry2 = service->createEntry(item2); + QTest::qWait(waitTime1sec); + CaEntry item3; + item3.setText("Text3"); + item3.setEntryTypeName("TypeName3"); + QSharedPointer entry3 = service->createEntry(item3); + QTest::qWait(waitTime1sec); + CaEntry item4; + item4.setText("Text4"); + item4.setEntryTypeName("TypeName4"); + QSharedPointer entry4 = service->createEntry(item4); + QTest::qWait(waitTime1sec); + + QList > 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 +} +