logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsremovestates.cpp
changeset 14 f27aebe284bb
child 15 76d2cf7a585e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsremovestates.cpp	Wed Aug 18 09:49:12 2010 +0300
@@ -0,0 +1,265 @@
+/*
+* 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:
+*
+*/
+#include "ut_logsremovestates.h"
+#include "logsremovestates.h"
+#include "logclient_stubs_helper.h"
+#include "logsmodel.h"
+#include <logcli.h>
+#include <logview.h>
+
+#include <QtTest/QtTest>
+
+void UT_LogsRemoveStates::initTestCase()
+{
+    int rfsDummy = 0;
+    mLogClient = CLogClient::NewL( *((RFs*)&rfsDummy) );
+}
+
+void UT_LogsRemoveStates::cleanupTestCase()
+{
+    delete mLogClient;
+}
+
+
+void UT_LogsRemoveStates::init()
+{
+    reset();
+    
+    mCurrentState = 0;
+    mIndex = 0;
+    mLogView = 0;
+    mLogViewEvent = 0;
+    mIsRecentView = true;
+
+    mLogView = CLogViewRecent::NewL(*mLogClient);
+    mLogViewEvent = 0;
+    mDuplicatesView = CLogViewDuplicate::NewL(*mLogClient);
+}
+
+void UT_LogsRemoveStates::cleanup()
+{
+    delete mLogView;
+    mLogView = 0;
+    delete mLogViewEvent;
+    mLogViewEvent = 0;
+    delete mDuplicatesView;
+    mDuplicatesView = 0;  
+}
+
+void UT_LogsRemoveStates::reset()
+{
+    mRemoveCompleted = false;
+    mClearType = -1;
+    mRemovedEvents.clear();
+}
+
+void UT_LogsRemoveStates::testClearAll()
+{
+    LogsRemoveStateClearAll state(*this, *this);
+    mClearType = LogsModel::TypeLogsClearAll;
+    QVERIFY( state.enterL() );
+    QCOMPARE( LogClientStubsHelper::lastCalledFunc(), QString("ClearLog") );
+    
+    mClearType = LogsModel::TypeLogsClearMissed;
+    QVERIFY( state.enterL() );
+    QCOMPARE( LogClientStubsHelper::lastCalledFunc(), QString("ClearLogRecentList") );
+    
+    QVERIFY( !state.continueL() );
+}
+
+void UT_LogsRemoveStates::testInit()
+{
+    LogsRemoveStateInit state(*this, *this);
+    
+    // Nothing happens when no recent view exists
+    mIsRecentView = false;
+    QVERIFY( !state.enterL() );
+    
+    // Recent view exists and is getting initialized
+    mIndex = 4;
+    mIsRecentView = true;
+    QVERIFY( state.enterL() );
+    QCOMPARE( mIndex, 0 );
+    
+    QVERIFY( !state.continueL() );
+}
+
+void UT_LogsRemoveStates::testDelete()
+{
+    LogsRemoveStateDelete state(*this, *this);
+    
+    // Nothing to delete
+    QVERIFY( !state.enterL() );
+    
+    // Delete several
+    mRemovedEvents.append(1);
+    mRemovedEvents.append(3);
+    mRemovedEvents.append(4);
+    
+    QVERIFY( state.enterL() );
+    QCOMPARE( state.mRemoveIndex, 1 );
+    QVERIFY( state.continueL() );
+    QCOMPARE( state.mRemoveIndex, 2 );
+    QVERIFY( state.continueL() );
+    QCOMPARE( state.mRemoveIndex, 3 );
+    QVERIFY( !state.continueL() );
+}
+
+void UT_LogsRemoveStates::testDeleteDuplicates()
+{
+    LogsRemoveStateDeleteDuplicates state(*this, *this);
+    
+    // More than one id, duplicate deletion not supported
+    mRemovedEvents.append(1);
+    mRemovedEvents.append(3);
+    QVERIFY( !state.enterL() );
+    
+    // Dbview iterator is not at correct location
+    mRemovedEvents.clear();
+    mRemovedEvents.append(99);
+    const_cast<CLogEvent&>( mLogView->Event() ).SetId( 100 );
+    QVERIFY( !state.enterL() );
+    
+    // No duplicates
+    LogClientStubsHelper::setStubAsyncCallPossible(false);
+    LogClientStubsHelper::setViewCount(0); // effective also for duplicates view
+    const_cast<CLogEvent&>( mLogView->Event() ).SetId( 99 );
+    QVERIFY( !state.enterL() );
+    
+    // Duplicates
+    LogClientStubsHelper::setStubAsyncCallPossible(true);
+    LogClientStubsHelper::setViewCount(3); // effective also for duplicates view
+    QVERIFY( state.enterL() );
+    QVERIFY( !state.mDeleting );
+    QCOMPARE( state.mDeleteDuplicateIds.count(), 0 );
+    
+    QVERIFY( state.continueL() );
+    QVERIFY( !state.mDeleting );
+    QCOMPARE( state.mDeleteDuplicateIds.count(), 0 );
+    QVERIFY( state.continueL() );
+    QVERIFY( !state.mDeleting );
+    QCOMPARE( state.mDeleteDuplicateIds.count(), 1 );
+    QVERIFY( state.continueL() );
+    QVERIFY( !state.mDeleting );
+    QCOMPARE( state.mDeleteDuplicateIds.count(), 2 );
+    QVERIFY( state.continueL() );
+    QVERIFY( !state.mDeleting );
+    QCOMPARE( state.mDeleteDuplicateIds.count(), 3 );
+      
+    QVERIFY( state.continueL() );
+    QVERIFY( state.mDeleting );
+    QCOMPARE( state.mDeleteDuplicateIds.count(), 2 );
+    QVERIFY( state.continueL() );
+    QVERIFY( state.mDeleting );
+    QCOMPARE( state.mDeleteDuplicateIds.count(), 1 );
+    QVERIFY( state.continueL() );
+    QVERIFY( state.mDeleting );
+    QCOMPARE( state.mDeleteDuplicateIds.count(), 0 );
+    QVERIFY( !state.continueL() );
+    
+}
+
+void UT_LogsRemoveStates::testDone()
+{
+    LogsRemoveStateDone state(*this, *this);
+    QVERIFY( !mRemoveCompleted );
+    QVERIFY( !state.enterL() );
+    QVERIFY( mRemoveCompleted );
+}
+
+// ----------------------------------------------------------------------------
+// From LogsStateBaseContext
+// ----------------------------------------------------------------------------
+//
+void UT_LogsRemoveStates::setCurrentState(const LogsStateBase& state)
+{
+    mCurrentState = &state;
+}
+
+CLogView& UT_LogsRemoveStates::logView()
+{
+    if ( mIsRecentView ){
+        return *mLogView;
+    }
+    return *mLogViewEvent;
+}
+
+CLogViewDuplicate& UT_LogsRemoveStates::duplicatesView()
+{
+    return *mDuplicatesView;
+}
+
+int& UT_LogsRemoveStates::index()
+{
+    return mIndex;
+}
+
+TRequestStatus& UT_LogsRemoveStates::reqStatus()
+{
+    return mReqStatus;
+}
+
+
+int UT_LogsRemoveStates::currentEventId()
+{
+    if ( !mRemovedEvents.isEmpty() ){
+        return mRemovedEvents.at(0);
+    }
+    return mCurrentEventId;
+}
+
+CLogClient& UT_LogsRemoveStates::logClient()
+{
+    return *mLogClient;
+}
+
+bool UT_LogsRemoveStates::isRecentView()
+{
+    return mIsRecentView;
+}
+
+
+// ----------------------------------------------------------------------------
+// From LogsRemoveStateContext
+// ----------------------------------------------------------------------------
+//
+
+LogsRemoveObserver& UT_LogsRemoveStates::observer()
+{
+    return *this;
+}
+QList<int>& UT_LogsRemoveStates::removedEvents()
+{
+    return mRemovedEvents;
+}
+int UT_LogsRemoveStates::clearType()
+{
+    return mClearType;
+}
+
+// ----------------------------------------------------------------------------
+// From LogsRemoveObserver
+// ----------------------------------------------------------------------------
+//
+void UT_LogsRemoveStates::removeCompleted()
+{
+    mRemoveCompleted = true;
+}
+void UT_LogsRemoveStates::logsRemoveErrorOccured(int err)
+{
+    mError = err;
+}