logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsreader.cpp
changeset 0 4a5361db8937
child 9 68f3171a5819
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsreader.cpp	Tue May 04 12:39:37 2010 +0300
@@ -0,0 +1,314 @@
+/*
+* 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_logsreader.h"
+#include "logsreader.h"
+#include "logsevent.h"
+#include <logcli.h>
+
+#include <QtTest/QtTest>
+
+void UT_LogsReader::initTestCase()
+{
+    QT_TRAP_THROWING( mLogClient = CLogClient::NewL(mFs); )
+}
+
+void UT_LogsReader::cleanupTestCase()
+{
+    delete mLogClient;
+}
+
+
+void UT_LogsReader::init()
+{
+    mErrorOccurred = false;
+    mError = 0;
+    mReader = new LogsReader(mFs, *mLogClient, mStrings, mEvents, *this );
+}
+
+void UT_LogsReader::cleanup()
+{
+    delete mReader;
+    while (!mEvents.isEmpty()){
+        delete mEvents.takeFirst();
+    }
+    
+}
+
+void UT_LogsReader::testConstructor()
+{
+    QVERIFY( mReader );
+    QVERIFY( mReader->mReadStates.count() > 0 );
+    QVERIFY( mReader->mModifyingStates.count() == 0 );
+    QVERIFY( mReader->mCurrentStateMachine == &mReader->mReadStates );
+}
+
+
+void UT_LogsReader::testStart()
+{
+    QVERIFY( !mReader->mLogViewRecent );
+    QVERIFY( !mReader->mDuplicatesView );
+    QVERIFY( mReader->start() == 0 );
+    QVERIFY( mReader->IsActive() );
+    QVERIFY( mReader->mLogViewRecent );
+    QVERIFY( mReader->mDuplicatesView );
+    QVERIFY( mReader->mCurrentStateMachine == &mReader->mReadStates );
+    QVERIFY( mReader->isRecentView() );
+    
+    // Starting second time should go ok
+    QVERIFY( mReader->start() == 0 );
+    QVERIFY( mReader->IsActive() );
+    QVERIFY( mReader->mLogViewRecent );
+    
+    // Starting when deleting is in progress should fail
+    mReader->mCurrentStateMachine = &mReader->mModifyingStates;
+    QVERIFY( mReader->start() == KErrInUse ); 
+}
+
+void UT_LogsReader::testStart2()
+{
+    qDeleteAll( mReader->mReadStates );
+    mReader->mReadStates.clear();
+    mReader->mReadAllEvents = true;
+    
+    QVERIFY( !mReader->mLogViewEvent );
+    QVERIFY( !mReader->mDuplicatesView );
+    QVERIFY( mReader->start() == 0 );
+    QVERIFY( mReader->IsActive() );
+    QVERIFY( mReader->mLogViewEvent );
+    QVERIFY( mReader->mDuplicatesView );
+    QVERIFY( mReader->mCurrentStateMachine == &mReader->mReadStates );
+    QVERIFY( !mReader->isRecentView() );
+    
+    // Starting second time should go ok
+    QVERIFY( mReader->start() == 0 );
+    QVERIFY( mReader->IsActive() );
+    QVERIFY( mReader->mLogViewEvent );
+}
+
+void UT_LogsReader::testStop()
+{
+    mReader->stop();
+    QVERIFY( mReader->start() == 0 );
+    QVERIFY( mReader->IsActive() );
+    mReader->stop();
+    QVERIFY( !mReader->IsActive() );
+    QVERIFY( !mReader->mLogViewEvent );
+    QVERIFY( !mReader->mDuplicatesView );
+}
+
+void UT_LogsReader::testMarkEventSeen()
+{
+    QVERIFY( !mReader->mLogViewRecent );
+    QVERIFY( !mReader->mDuplicatesView );
+    QVERIFY( mReader->markEventSeen(1) == 0 );
+    QVERIFY( mReader->IsActive() );
+    QVERIFY( mReader->mLogViewRecent );
+    QVERIFY( mReader->mDuplicatesView );
+    QVERIFY( mReader->mCurrentStateMachine == &mReader->mModifyingStates );
+    QVERIFY( mReader->mModifyingStates.count() > 0 );
+    
+    //starting second time should fail
+    QVERIFY( mReader->markEventSeen(1) == KErrInUse );
+    
+    //starting when reading is in progress should be ok
+    mReader->mCurrentStateMachine = &mReader->mReadStates;
+    QVERIFY( mReader->markEventSeen(1) == 0 );
+}
+
+void UT_LogsReader::testReadDuplicates()
+{
+    QVERIFY( !mReader->mLogViewRecent );
+    QVERIFY( !mReader->mDuplicatesView );
+    QVERIFY( mReader->readDuplicates(1) == 0 );
+    QVERIFY( mReader->IsActive() );
+    QVERIFY( mReader->mLogViewRecent );
+    QVERIFY( mReader->mDuplicatesView );
+    QVERIFY( mReader->mCurrentStateMachine == &mReader->mDuplicateReadingStates );
+    QVERIFY( mReader->mDuplicateReadingStates.count() > 0 );
+    
+    //starting second time is ok
+    QVERIFY( mReader->readDuplicates(1) == 0 );
+    
+    //starting when reading is in progress is not allowed
+    mReader->mCurrentStateMachine = &mReader->mReadStates;
+    QVERIFY( mReader->readDuplicates(1) != 0 );
+}
+
+void UT_LogsReader::testRunL()
+{
+    mReader->start();
+    
+    // Test ok scenario
+    mReader->Cancel();
+    mReader->iStatus = KErrNone;
+    mReader->RunL();
+    QVERIFY( !mErrorOccurred );
+    QVERIFY( mError == 0 );
+    QVERIFY( mReader->IsActive() );
+
+    // Test failure
+    mReader->Cancel();
+    mReader->iStatus = KErrNotFound;
+    TRAPD( err, mReader->RunL() );
+    QVERIFY( err == KErrNotFound );
+    
+}
+
+void UT_LogsReader::testRunError()
+{
+    // No fatal callback for access denied or in use errors
+    TInt err = KErrAccessDenied;
+    QVERIFY( mReader->RunError(err) == KErrNone );
+    QVERIFY( !mErrorOccurred );
+    QVERIFY( mError == KErrAccessDenied );
+    
+    err = KErrInUse;
+    QVERIFY( mReader->RunError(err) == KErrNone );
+    QVERIFY( !mErrorOccurred );
+    QVERIFY( mError == KErrInUse );
+    
+    err = KErrNotFound;
+    QVERIFY( mReader->RunError(err) == KErrNone );
+    QVERIFY( mErrorOccurred );
+    QVERIFY( mError == KErrNotFound );
+}
+
+void UT_LogsReader::testStateContext()
+{
+    mReader->mCurrentStateIndex = 0;
+    QVERIFY( mReader->mCurrentStateMachine == &mReader->mReadStates );
+    mReader->setCurrentState(*mReader->mReadStates[1]);
+    QVERIFY( mReader->mCurrentStateIndex == 1 );
+    
+    //wrong state machine is set as current, state isn't changed
+    LogsReaderStateBase* unknownState = new LogsReaderStateBase( *mReader );
+    mReader->mModifyingStates.append(unknownState);
+    QVERIFY( mReader->mCurrentStateMachine == &mReader->mReadStates );
+    mReader->setCurrentState(*mReader->mModifyingStates[0]);
+    QVERIFY( mReader->mCurrentStateIndex == 1 );
+
+    //once again with the correct state machine, state changed
+    mReader->mCurrentStateMachine = &mReader->mModifyingStates;
+    mReader->setCurrentState(*mReader->mModifyingStates[0]);
+    QVERIFY( mReader->mCurrentStateIndex == 0 );
+    
+    mReader->mIndex = 1;
+    int& index = mReader->index();
+    QVERIFY( index == 1 );
+    index++;
+    QVERIFY( mReader->index() = index );
+    
+    QVERIFY( &mReader->events() == &mEvents );
+    QVERIFY( &mReader->strings() == &mStrings );
+    QVERIFY( &mReader->reqStatus() == &mReader->iStatus );
+
+}
+
+void UT_LogsReader::testViewChange()
+{
+    mReader->Cancel();
+    mReader->HandleLogClientChangeEventL(KLogClientChangeEventLogCleared, 0, 0, 0);
+    QVERIFY( mReader->IsActive() );
+    
+    mReader->Cancel();
+    mReader->HandleLogClientChangeEventL(KNullUid, 0, 0, 0);
+    QVERIFY( !mReader->IsActive() );
+    
+    mReader->Cancel();
+    mReader->HandleLogViewChangeEventAddedL(0, 0, 0, 2);
+    QVERIFY( mReader->IsActive() );
+    
+    mReader->Cancel();
+    mReader->HandleLogViewChangeEventChangedL(0, 0, 0, 1);
+    QVERIFY( mReader->IsActive() );
+    
+    // Deletion has optimization to reduce multiple actions for same deletion
+    // patch
+    mReader->Cancel();
+    mReader->HandleLogViewChangeEventDeletedL(0, 0, 1, 2);
+    QVERIFY( mReader->IsActive() );
+    
+    mReader->Cancel();
+    mReader->HandleLogViewChangeEventDeletedL(0, 0, 0, 2);
+    QVERIFY( !mReader->IsActive() );
+    
+    mReader->Cancel();
+    mReader->HandleLogViewChangeEventDeletedL(0, 0, 0, 1);
+    QVERIFY( mReader->IsActive() );
+    
+}
+
+void UT_LogsReader::testUpdateDetails()
+{
+    QVERIFY( !mReader->IsActive() );
+    ContactCacheEntry contactEntry("name", 1);
+    mReader->mContactCache.insert("12345", contactEntry);
+    mReader->updateDetails(false);
+    QVERIFY( !mReader->IsActive() );
+    QVERIFY( mReader->mContactCache.count() == 1 );
+    
+    mReader->updateDetails(true);
+    QVERIFY( !mReader->IsActive() );
+    QVERIFY( mReader->mContactCache.count() == 0 );    
+}
+
+
+// ----------------------------------------------------------------------------
+// From LogsReaderObserver
+// ----------------------------------------------------------------------------
+//
+void UT_LogsReader::readCompleted(int /*readCount*/)
+{
+
+}
+
+// ----------------------------------------------------------------------------
+// From LogsReaderObserver
+// ----------------------------------------------------------------------------
+//
+void UT_LogsReader::errorOccurred(int err)
+{
+    mErrorOccurred = true;
+    mError = err;
+}
+
+// ----------------------------------------------------------------------------
+// From LogsReaderObserver
+// ----------------------------------------------------------------------------
+//
+void UT_LogsReader::temporaryErrorOccurred(int err)
+{
+    mError = err;
+}
+
+// ----------------------------------------------------------------------------
+// From LogsReaderObserver
+// ----------------------------------------------------------------------------
+//
+void UT_LogsReader::eventModifyingCompleted()
+{
+
+}
+
+// ----------------------------------------------------------------------------
+// From LogsReaderObserver
+// ----------------------------------------------------------------------------
+//
+void UT_LogsReader::duplicatesReadingCompleted(QList<LogsEvent*> duplicates)
+{
+    qDeleteAll(duplicates);
+}