homescreensrv_plat/contentstorage_api/tsrc/t_contentstorage_api/src/t_caclient_notifier.cpp
author hgs
Wed, 06 Oct 2010 16:00:22 +0300
changeset 125 26079c1bb561
permissions -rw-r--r--
201039_01

/*
* 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::Test_createNotifier()
{
#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::Test_touch()
{
#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
}

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