harvesterplugins/tsrc/harvesterplugintester/src/harvesterplugintesterblocks.cpp
changeset 12 993ab30e92fc
parent 11 773be20e0a25
child 17 7d8c8d8f5eab
--- a/harvesterplugins/tsrc/harvesterplugintester/src/harvesterplugintesterblocks.cpp	Wed Jun 23 18:13:49 2010 +0300
+++ b/harvesterplugins/tsrc/harvesterplugintester/src/harvesterplugintesterblocks.cpp	Tue Jul 06 14:17:22 2010 +0300
@@ -29,8 +29,11 @@
 #include <favouritesdb.h>
 #include <msvapi.h>
 #include <bautils.h>
+#include <csearchdocument.h>
 #include "harvesterobserver.h"
 #include "cmessageplugin.h"
+#include "cmessagemonitor.h"
+#include "cmessageharvester.h"
 #include "cmessagesessionobserver.h" //For CMsvSession
 #include "ccpixsearcher.h"
 #include "bookmarksplugin.h"
@@ -43,11 +46,12 @@
 #include "mdsitementity.h"
 #include "cpixmdedbmanager.h"
 #include "cfolderrenamedharvester.h"
-//#include "CBlacklistMgr.h"
 #include "videoplugin.h"
 #include "imageplugin.h"
-
+#include "cemailplugin.h"
+#include "cmessagedatahandler.h"
 _LIT(KAppBasePath,"@c:root file content");
+_LIT(KEmailAppBasePath,"@c:root msg email");
 _LIT(KAppBaseFolderFilePath,"@c:root file folder");
 const TInt KMsgPluginBaseAppClassMaxLen = 64;
 
@@ -56,10 +60,8 @@
 #include <utf.h>
 #include "notesplugin.h"
 
-//Test Uid for testing Blacklist manager
-
-//const TUid KTestUid = { 0x101D6348 };
-
+_LIT( KemailId, "1" );
+_LIT(KMsgBaseAppClassGeneric, "root msg email");
 #define MEDIA_QBASEAPPCLASS   "@c:root media audio"
 #define LMEDIA_QBASEAPPCLASS  L"@c:root media audio"
 #define VIDEO_QBASEAPPCLASS   "@c:root media video"
@@ -100,6 +102,19 @@
         ENTRY( "TestMessaging", CHarvesterPluginTester::TestMessageHarvesterL ),
         ENTRY( "TestMessageHarvesting", CHarvesterPluginTester::TestMessageHarvesterWithMessageL ),
         ENTRY( "TestMessageDriveChange", CHarvesterPluginTester::TestMessageHarvesterChangeDriveL ),
+        ENTRY( "TestMessageRunErrorL", CHarvesterPluginTester::TestMessageRunErrorL ),
+        ENTRY( "TestMessageIsMediaRemovableL", CHarvesterPluginTester::TestMessageIsMediaRemovableL ),
+        ENTRY( "TestMessageMountNoIndexerL", CHarvesterPluginTester::TestMessageMountNoIndexerL ),        
+        ENTRY( "TestQualifiedBaseAppClass", CHarvesterPluginTester::TestQualifiedBaseAppClassL ),
+        ENTRY( "TestHandleMsgMoved", CHarvesterPluginTester::TestHandleMsgMovedL ),
+        ENTRY( "TestMessageDataHandler", CHarvesterPluginTester::TestMessageDataHandlerL ),
+        ENTRY( "TestMsgUnMount", CHarvesterPluginTester::TestMsgUnMountL ),
+        ENTRY( "TestFormBaseAppClass", CHarvesterPluginTester::TestFormFormBaseAppClassL ),
+        ENTRY( "TestMsgDelete", CHarvesterPluginTester::TestMsgDeleteL ),
+        ENTRY( "TestMsgHandlesession", CHarvesterPluginTester::TestMsgHandlesessionL ),
+        ENTRY( "TestMsgHandlesessionPanic", CHarvesterPluginTester::TestMsgHandlesessionPanicL ),
+        ENTRY( "TestMsgOverwriteOrAddToQuere", CHarvesterPluginTester::TestMsgOverwriteOrAddToQuereL ),
+        ENTRY( "TestMsgMessageHarvester", CHarvesterPluginTester::TestMsgMessageHarvesterL ),
         ENTRY( "TestStartBookmarksHarvesterL", CHarvesterPluginTester::TestStartBookmarksHarvesterL ),
         ENTRY( "TestAddBookmarkL", CHarvesterPluginTester::TestAddBookmarkL ),
         ENTRY( "TestAddGetDomainL", CHarvesterPluginTester::TestAddGetDomainL ),
@@ -116,6 +131,12 @@
         ENTRY( "TestCreateAllContactFields", CHarvesterPluginTester::TestCreateAllContactFieldsL ),
         ENTRY( "TestCreateContactIndexItemL_Edit", CHarvesterPluginTester::TestCreateContactIndexItemL ),
         ENTRY( "TestCreateContactIndexItemL_Delete", CHarvesterPluginTester::TestCreateContactIndexItemL ),
+        ENTRY( "TestCreateContactIndexItemL_NoIndexer", CHarvesterPluginTester::TestCreateContactIndexItemNoIndexerL ),
+        ENTRY( "TestContactGetDateL", CHarvesterPluginTester::TestContactGetDateL ),
+        ENTRY( "TestContactDelayedErrorL", CHarvesterPluginTester::TestContactDelayedErrorL ),
+        ENTRY( "TestContactDelayedCallbackNoIContactsL", CHarvesterPluginTester::TestContactDelayedCallbackNoIContactsL ),        
+        ENTRY( "TestContactDelayedCallbackNoIObserverL", CHarvesterPluginTester::TestContactDelayedCallbackNoIObserverL ),        
+        ENTRY( "TestContactDelayedCallbackWrongCountL", CHarvesterPluginTester::TestContactDelayedCallbackWrongCountL ),        
         ENTRY( "TestCreateContactGroup", CHarvesterPluginTester::TestCreateContactGroupL ),
         ENTRY( "TestCalenderHarvesting", CHarvesterPluginTester::TestStartCalenderHarvesterL ),
         ENTRY( "TestCalenderEntry",CHarvesterPluginTester::TestCalenderEntryL ),
@@ -136,6 +157,8 @@
 		ENTRY( "TestAudioMMCEventL",CHarvesterPluginTester::TestAudioMMCEventL ),
 		ENTRY( "TestVideoMMCEventL",CHarvesterPluginTester::TestVideoMMCEventL ),
 		ENTRY( "TestImageMMCEventL",CHarvesterPluginTester::TestImageMMCEventL ),
+		ENTRY( "TestStartEmailPlugin",CHarvesterPluginTester::TestStartEmailPluginL ),
+		ENTRY( "TestHandleEmailDoc",CHarvesterPluginTester::TestHandleEmailDocL ),
         //ADD NEW ENTRY HERE
         // [test cases entries] - Do not remove
         };
@@ -156,6 +179,12 @@
     else logger->Log( errorString );
     }
 
+CSearchDocument* CHarvesterPluginTester::prepareemaildocument()
+    {    
+    CSearchDocument* doc = CSearchDocument::NewL( KemailId, 
+            KMsgBaseAppClassGeneric ); 
+    return doc;
+    }
 // Example test method function.
 // -----------------------------------------------------------------------------
 TInt CHarvesterPluginTester::TestStartHarvesterL( CStifItemParser& /*aItem*/ )
@@ -576,6 +605,224 @@
     return error;
     }
 
+//Only for coverage.
+TInt CHarvesterPluginTester::TestMessageRunErrorL( CStifItemParser& /*aItem */)
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    plugin->iMessageMonitor->RunError( KErrNone );
+    delete plugin;
+    return KErrNone;
+    }
+TInt CHarvesterPluginTester::TestQualifiedBaseAppClassL( CStifItemParser& )
+    {
+    //For coverage
+    TDriveNumber drive ( EDriveA ); 
+    _LIT( appcls1 ,"@c:root media image" );
+    _LIT( appcls2 ,"@*:root media image" );
+    _LIT( appcls3 ,"d:root media image" );    
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );    
+    plugin->MountL( EDriveC );
+    TRAPD(err, plugin->StartHarvestingL(appcls1));
+    delete plugin->iIndexer[EDriveC];
+    plugin->iIndexer[EDriveC] = NULL;
+    TRAP(err, plugin->StartHarvestingL(appcls1));
+    TRAP(err, plugin->StartHarvestingL(appcls2));
+    TRAP(err, plugin->StartHarvestingL(appcls3));
+    delete plugin;
+    delete iPluginTester;
+    return err;
+    }
+TInt CHarvesterPluginTester::TestMsgUnMountL( CStifItemParser& )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+    plugin->MountL(EDriveC);
+    plugin->UnMount( EDriveC );
+    plugin->MountL(EDriveC);
+    plugin->UnMount( EDriveC , EFalse);
+    delete plugin;
+    delete iPluginTester;
+    return KErrNone;
+    }
+
+TAny CHarvesterPluginTester::TestHandleMsgMovedL( CStifItemParser& )
+    {
+    const TMsvId id1 = 1;
+    CMsvEntrySelection* selection = new( ELeave ) CMsvEntrySelection;
+    // Current entry will be the one to send
+    selection->AppendL( id1 );
+//    CMsvEntrySelection entry;
+    const long int ref = 2;
+    
+    const TMsvId id2 = 2;
+//    entry.AppendL(id1);
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    plugin->iMessageMonitor->HandleMsgMovedL(id1, id2, *selection);
+    selection->Reset();
+    delete plugin;
+    }
+
+TAny CHarvesterPluginTester::TestMessageDataHandlerL( CStifItemParser& )
+    {
+    CMessagePlugin* plugin3 = CMessagePlugin::NewL();
+    _LIT8(Des1, "0xFFFFF");
+    _LIT8(Des2, "0xF");
+    _LIT8(Des3, "FFx0");
+    _LIT8(Des4, "F");
+    _LIT8(Des5, "0xFEFF");
+    _LIT8(Des6, "0xFFFE");
+    const TMsvId id1 = 1;
+    const TMsvId id2 = 2;
+    CMessageDataHandler* idatahandler = CMessageDataHandler::NewL( *plugin3, *(plugin3->iMsvSession) );
+    idatahandler->CreateMessageIndexItemL(id1,ECPixAddAction,id1);
+    idatahandler->IsTextUcs2(Des1);
+    idatahandler->IsTextUcs2(Des2);
+    idatahandler->IsTextUcs2(Des3);
+    idatahandler->IsTextUcs2(Des4);
+    idatahandler->IsTextUcs2(Des5);
+    idatahandler->IsTextUcs2(Des6);
+    const TInt KUtf8BomLength = 3;
+    const TUint8 KUtf8Bom[KUtf8BomLength] = {0xEF, 0xBB, 0xBF};
+    const TUint8 KUtf8Bom1[KUtf8BomLength+1] = {0xEF, 0x5, 0xF, 0xE};
+    TPtrC8 ptr(KUtf8Bom, KUtf8BomLength);
+    TPtrC8 ptr1(KUtf8Bom1, KUtf8BomLength+1); 
+    idatahandler->TextContainsUtf8Bom(ptr);
+    idatahandler->TextContainsUtf8Bom(ptr1);
+    idatahandler->DoCancel();
+    idatahandler->RunError(0);
+    delete plugin3;
+
+    }
+TInt CHarvesterPluginTester::TestMessageMountNoIndexerL( CStifItemParser& )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    RSearchServerSession session;
+    User::LeaveIfError( session.Connect() );
+    plugin->iIndexer[EDriveA] = CCPixIndexer::NewL( session );
+    TRAPD( err, plugin->MountL( EDriveA, EFalse ) );
+    TRAP( err, plugin->MountL( EDriveA, EFalse ) ); //For coverage
+    delete plugin->iIndexer[EDriveA];
+    plugin->iIndexer[EDriveA] = NULL;
+    delete plugin;      
+    return err;
+    }
+
+TInt CHarvesterPluginTester::TestMessageIsMediaRemovableL( CStifItemParser& aItem )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    TInt error;
+    TInt driveNumber = 0;
+    //TODO add a while loop.
+    while( aItem.GetNextInt( driveNumber ) == KErrNone )
+        {
+        error = 0;
+        TDriveNumber number(static_cast<TDriveNumber>(driveNumber) );
+        TRAP( error, plugin->IsMediaRemovableL( number ) );
+        if( error ) break;
+        }
+    delete plugin;
+    return error;
+    }
+
+TInt CHarvesterPluginTester::TestFormFormBaseAppClassL( CStifItemParser& /*aItem*/ )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    TBuf<20> appclass;
+    //To test proper case
+    plugin->FormBaseAppClass( EDriveA , appclass);
+    //To test failure case
+    plugin->FormBaseAppClass( (TDriveNumber)29 , appclass);
+    //cleanup
+    delete plugin;
+    return KErrNone;
+    }
+
+TInt CHarvesterPluginTester::TestMsgDeleteL( CStifItemParser& /*aItem*/ )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    CMessageDataHandler* idatahandler = CMessageDataHandler::NewL( *plugin, *(plugin->iMsvSession) );
+    const TMsvId id1 = 1;
+    RSearchServerSession session;
+    User::LeaveIfError( session.Connect() );
+    plugin->iIndexer[plugin->iCurrentDrive] = CCPixIndexer::NewL( session );       
+    idatahandler->CreateMessageIndexItemL( id1, ECPixRemoveAction, id1 );
+    delete idatahandler;
+    delete plugin;
+    session.Close();
+    return KErrNone;
+    }
+
+TInt CHarvesterPluginTester::TestMsgHandlesessionL( CStifItemParser& /*aItem*/ )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+    plugin->StartPluginL();
+    TMsvId id = 1;
+    TDriveNumber drive1 = EDriveB;
+    TDriveNumber drive2 = EDriveC;
+    CMsvEntrySelection* selection = new( ELeave ) CMsvEntrySelection;
+    // Current entry will be the one to send
+    selection->AppendL( id );    
+    TRAPD(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvEntriesDeleted , (TAny*)selection ,NULL , NULL));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvEntriesMoved , (TAny*)selection ,NULL , NULL));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvEntriesMoved , (TAny*)selection ,(TAny*)selection , NULL));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvEntriesMoved , (TAny*)selection ,(TAny*)selection , (TAny*)selection));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvEntriesMoved , NULL ,(TAny*)selection , (TAny*)selection));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvMediaChanged , (TAny*)&drive1 ,(TAny*)&drive2 , NULL));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvMediaUnavailable , (TAny*)&drive2 ,NULL , NULL));
+    TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvMediaAvailable , (TAny*)&drive1 ,NULL , NULL));
+    selection->Reset();
+    delete plugin;
+    delete iPluginTester;
+    return err;
+    }
+
+TInt CHarvesterPluginTester::TestMsgHandlesessionPanicL( CStifItemParser& aItem )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( plugin );
+    plugin->StartPluginL();
+    TInt num = 0;
+    TInt err = KErrNone;
+    aItem.GetNextInt( num );
+    if ( num == 0)
+        {
+        TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvServerFailedToStart , NULL ,NULL , NULL));
+        }
+    else if ( num ==1 )
+        {
+        TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvCloseSession , NULL ,NULL , NULL));
+        }
+    else
+        TRAP(err , plugin->HandleSessionEventL(MMsvSessionObserver::EMsvServerTerminated , NULL ,NULL , NULL));
+    
+    delete plugin;
+    delete iPluginTester;
+    return err;
+    }
+
+TInt CHarvesterPluginTester::TestMsgOverwriteOrAddToQuereL( CStifItemParser& /*aItem*/ )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    plugin->iMessageMonitor->OverwriteOrAddToQuereL( 1 , ECPixAddAction , 1 );
+    plugin->iMessageMonitor->OverwriteOrAddToQuereL( 1 , ECPixAddAction , 1 );
+    plugin->iMessageMonitor->RunL();
+    delete plugin;
+    return KErrNone;
+    }
+
+TInt CHarvesterPluginTester::TestMsgMessageHarvesterL( CStifItemParser& /*aItem*/ )
+    {
+    CMessagePlugin* plugin = CMessagePlugin::NewL();
+    CMessageHarvester* messageHarvester = CMessageHarvester::NewL( *plugin, *(plugin->iMsvSession) );
+    messageHarvester->RunError(KErrNone);
+    messageHarvester->HandleNextRequest();
+    delete messageHarvester;
+    delete plugin;
+    return KErrNone;
+    }
+
 TInt CHarvesterPluginTester::SearchForTextL(const TDesC& aQueryString, const TDesC& aBaseAppclass,const TDesC& aDefaultField)
     {
     TInt DocumentCount(KErrNotFound);
@@ -916,6 +1163,70 @@
     return contactId;
     }
 
+TInt CHarvesterPluginTester::TestContactDelayedCallbackNoIContactsL( CStifItemParser& /*aItem*/ )
+    {
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    //for coverage
+    delete plugin->iContacts;
+    plugin->iContacts = NULL;
+    TRAPD( err, plugin->DelayedCallbackL( KErrNone ) );
+    delete plugin;
+    return err;
+    }
+
+TInt CHarvesterPluginTester::TestContactDelayedCallbackNoIObserverL( CStifItemParser& /*aItem*/ )
+    {
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    //for coverage
+    delete plugin->iObserver;
+    plugin->iObserver = NULL;
+    TRAPD( err, plugin->DelayedCallbackL( KErrNone ) );
+    delete plugin;
+    return err;
+    }
+
+TInt CHarvesterPluginTester::TestContactDelayedCallbackWrongCountL( CStifItemParser& /*aItem*/ )
+    {
+    //This case can happen if a contact was deleted while harvesting is going on.
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    plugin->iCurrentIndex = plugin->iContacts->Count()+1;
+    TRAPD( err, plugin->DelayedCallbackL( KErrNone ) );
+    delete plugin;
+    return err;
+    }
+
+TInt CHarvesterPluginTester::TestContactDelayedErrorL(CStifItemParser& /*aItem*/)
+    {
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    plugin->DelayedError( KErrGeneral );
+    delete plugin;
+    return KErrNone;
+    }
+
+TInt CHarvesterPluginTester::TestContactGetDateL( CStifItemParser& aItem )
+    {
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    
+    TPtrC dateString;
+    TInt error = 0;
+    if( aItem.GetNextString ( dateString ) == KErrNone )
+        {
+        TBuf<30> date; //Picked up 30 from contactsplugin.cpp file.
+        TRAP(error, plugin->GetDateL(dateString, date) );
+        }
+    delete plugin;
+    return error;
+    }
+
+TInt CHarvesterPluginTester::TestCreateContactIndexItemNoIndexerL( CStifItemParser& /*aItem*/ )
+    {
+    //Create contact plugin, call CreateContactIndexItemL without creating indexer.
+    CContactsPlugin* plugin = CContactsPlugin::NewL();
+    TRAPD(err, plugin->CreateContactIndexItemL(0, ECPixUpdateAction) );
+    delete plugin;
+    return err;
+    }
+
 TInt CHarvesterPluginTester::TestCreateContactIndexItemL( CStifItemParser& aItem )
     {
     TInt error = KErrNone;
@@ -1856,4 +2167,41 @@
     return err;
     }
 
+TInt CHarvesterPluginTester::TestStartEmailPluginL( CStifItemParser& /*aItem*/ )
+    {
+    _LIT( KHarvesterPluginTester, "HarvesterPluginTester: %S" );
+    _LIT( KExample, "In TestStartEmailPluginL" );
+    TestModuleIf().Printf( 0, KHarvesterPluginTester, KExample );
+
+    // Print to log file
+    iLog->Log( KExample );
+    CEmailPlugin* emailPlugin = CEmailPlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( emailPlugin );    
+    emailPlugin->StartPluginL(); //Calls Add
+    emailPlugin->StartHarvestingL( KEmailAppBasePath );
+    delete emailPlugin;
+    delete iPluginTester;
+    doLog( iLog, KErrNone, KNoErrorString );
+    return KErrNone;
+    }
+
+TInt CHarvesterPluginTester::TestHandleEmailDocL( CStifItemParser& /*aItem*/ )
+    {
+    _LIT( KHarvesterPluginTester, "HarvesterPluginTester: %S" );
+    _LIT( KExample, "In TestHandleEmailDocL" );
+    TestModuleIf().Printf( 0, KHarvesterPluginTester, KExample );
+
+    // Print to log file
+    iLog->Log( KExample );
+    CEmailPlugin* emailPlugin = CEmailPlugin::NewL();
+    CHarvesterObserver* iPluginTester = CHarvesterObserver::NewL( emailPlugin );   
+    CSearchDocument* doc = prepareemaildocument();
+    TRAPD(err , emailPlugin->HandleDocumentL( doc , ECPixAddAction));
+    iPluginTester->iWaitForHarvester->Start();//Wait here till Harvesting is complete.
+    delete emailPlugin;
+    delete iPluginTester;
+    doLog( iLog, err, KNoErrorString );
+    return err;
+    }
+
 //  [End of File] - Do not remove