contentstorage/caclient/tsrc/t_caclient/src/t_caclient_notifier_adv.cpp
changeset 117 c63ee96dbe5f
--- /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<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
+}
+