mmappfw_plat/harvester_utility_api/tsrc/mpxharvestertest/src/mpxharvestertestBlocks.cpp
changeset 0 a2952bb97e68
child 40 4a1905d205a2
child 42 4aca42fa4eb1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmappfw_plat/harvester_utility_api/tsrc/mpxharvestertest/src/mpxharvestertestBlocks.cpp	Thu Dec 17 08:55:47 2009 +0200
@@ -0,0 +1,1212 @@
+/*
+* Copyright (c) 2007 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:  STIF testing for MPX Harvester
+*
+*/
+
+
+// INCLUDE FILES
+#include <e32svr.h>
+#include <badesca.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+
+#include <mpxharvesterutility.h>
+#include <mpxcollectionutility.h>
+#include <mpxattribute.h>
+#include <mpxplaylistenginedefs.h>
+#include "mpxharvestertest.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::Delete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// ---------------------------------------------------------------------------
+//
+void Cmpxharvestertest::Delete()
+    {
+
+	if ( iHarvester )
+		{
+		iHarvester->Close();
+		}
+	if ( iCollection )
+		{
+		iCollection->Close();
+		}
+	iExpectedEvents.Close();
+    }
+
+
+// -----------------------------------------------------------------------------
+// Cmpxharvestertest::AddExpectedEvent
+// Add an event to the expected event list
+// -----------------------------------------------------------------------------
+
+void Cmpxharvestertest::AddExpectedEvent( TExpectedEvents aEvent )
+	{
+	iLog->Log(_L("Cmpxharvestertest::AddExpectedEvent: %d"), aEvent);
+	iExpectedEvents.Append(aEvent);
+	}
+
+// -----------------------------------------------------------------------------
+// Cmpxharvestertest::RemoveExpectedEvent
+// Remove the event from the expected event list
+// Returns: ETrue: Event found.
+//          EFalse: Event not found.
+// -----------------------------------------------------------------------------
+TBool Cmpxharvestertest::RemoveExpectedEvent( TExpectedEvents aEvent )
+	{
+	iLog->Log(_L("Cmpxharvestertest::RemoveExpectedEvent: %d"), aEvent);
+	TBool match = EFalse;
+	TInt index = iExpectedEvents.Find(aEvent);
+	if ( index != KErrNotFound )
+		{
+		iExpectedEvents.Remove(index);
+		match = ETrue;
+		}
+	return match;
+	}
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::RunMethodL(
+    CStifItemParser& aItem )
+    {
+
+    static TStifFunctionInfo const KFunctions[] =
+        {
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function.
+        ENTRY( "Example", Cmpxharvestertest::ExampleL ),
+        //ADD NEW ENTRY HERE
+        ENTRY( "CreateUtility", Cmpxharvestertest::CreateUtility ),
+        ENTRY( "CopyTestFile", Cmpxharvestertest::CopyTestFile ),
+        ENTRY( "DeleteTestFile", Cmpxharvestertest::DeleteTestFile ),
+        ENTRY( "VerifyEvents", Cmpxharvestertest::VerifyEvents ),
+        ENTRY( "Scan", Cmpxharvestertest::Scan ),
+        ENTRY( "CancelScan", Cmpxharvestertest::CancelScan ),
+        ENTRY( "AddFileByPath", Cmpxharvestertest::AddFileByPath ),
+        //ENTRY( "AddFileByMedia", Cmpxharvestertest::AddFileByMedia ),
+        ENTRY( "RemoveFile", Cmpxharvestertest::RemoveFile ),
+        ENTRY( "RemoveFiles", Cmpxharvestertest::RemoveFiles ),
+        ENTRY( "RecreateDatabases", Cmpxharvestertest::RecreateDatabases ),
+        ENTRY( "DeleteFile", Cmpxharvestertest::DeleteFile ),
+        ENTRY( "DeleteFiles", Cmpxharvestertest::DeleteFiles ),
+        //ENTRY( "UpdateFile", Cmpxharvestertest::UpdateFile ),
+        ENTRY( "FindCollectionId", Cmpxharvestertest::FindCollectionId ),
+        //ENTRY( "RenameFileByMedia", Cmpxharvestertest::RenameFileByMedia ),
+        ENTRY( "RenameFileByPath", Cmpxharvestertest::RenameFileByPath ),
+        //ENTRY( "ExportPlaylist", Cmpxharvestertest::ExportPlaylist ),
+        ENTRY( "ImportPlaylist", Cmpxharvestertest::ImportPlaylist ),
+        ENTRY( "ImportFile", Cmpxharvestertest::ImportFile ),
+        ENTRY( "RequiredAttributes", Cmpxharvestertest::RequiredAttributes ),
+        ENTRY( "OptionalAttributes", Cmpxharvestertest::OptionalAttributes ),
+        ENTRY( "PlaylistFileExtension", Cmpxharvestertest::PlaylistFileExtension ),
+        ENTRY( "IsPlaylist", Cmpxharvestertest::IsPlaylist ),
+        ENTRY( "CheckForSystemEvents", Cmpxharvestertest::CheckForSystemEvents )
+        };
+
+    const TInt count = sizeof( KFunctions ) /
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::HandlePlaylistExportCompletedL
+// ---------------------------------------------------------------------------
+//
+void Cmpxharvestertest::HandlePlaylistExportCompletedL( CMPXMedia* /*aMedia*/, TInt aErr )
+	{
+	if ( RemoveExpectedEvent(EEventHandlePlaylistExportCompletedL) )
+		{
+		iLog->Log(_L("Cmpxharvestertest::HandlePlaylistExportCompletedL: %d [EXPECTED]"), aErr);
+		}
+	else
+		{
+		iLog->Log(_L("Cmpxharvestertest::HandlePlaylistExportCompletedL: %d"), aErr);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::HandlePlaylistImportCompletedL
+// ---------------------------------------------------------------------------
+//
+void Cmpxharvestertest::HandlePlaylistImportCompletedL( CMPXMedia* aMedia, TInt aErr )
+	{
+	if ( RemoveExpectedEvent(EEventHandlePlaylistImportCompletedL) )
+		{
+		iLog->Log(_L("Cmpxharvestertest::HandlePlaylistImportCompletedL: %d [EXPECTED]"), aErr);
+		}
+	else
+		{
+		iLog->Log(_L("Cmpxharvestertest::HandlePlaylistImportCompletedL: %d"), aErr);
+		}
+
+	if ( aErr == KErrNone )
+		{
+		iLog->Log(_L("Number of attributes: %d"), aMedia->Count() );
+		delete aMedia;
+		aMedia = NULL;
+		}
+	if ( (iResult && (aErr == KErrNone )) || (!iResult && (aErr != KErrNone)) )
+		{
+		Signal();
+		}
+	else
+		{
+		Signal(aErr);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::HandleFileAddCompletedL
+// ---------------------------------------------------------------------------
+//
+void Cmpxharvestertest::HandleFileAddCompletedL( CMPXMedia* aMedia, TInt aErr )
+	{
+	if ( RemoveExpectedEvent(EEventHandleFileAddCompletedL) )
+		{
+		iLog->Log(_L("Cmpxharvestertest::HandleFileAddCompletedL: %d [EXPECTED]"), aErr);
+		}
+	else
+		{
+		iLog->Log(_L("Cmpxharvestertest::HandleFileAddCompletedL: %d"), aErr);
+		}
+
+	if ( aErr == KErrNone )
+		{
+		iLog->Log(_L("Number of attributes: %d"), aMedia->Count() );
+		delete aMedia;
+		aMedia = NULL;
+		}
+	Signal();
+	}
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::HandleDeleteCompletedL
+// ---------------------------------------------------------------------------
+//
+void Cmpxharvestertest::HandleDeleteCompletedL( TInt aErr )
+	{
+	if ( RemoveExpectedEvent(EEventHandleDeleteCompletedL) )
+		{
+		iLog->Log(_L("Cmpxharvestertest::HandleDeleteCompletedL: %d [EXPECTED]"), aErr);
+		}
+	else
+		{
+		iLog->Log(_L("Cmpxharvestertest::HandleDeleteCompletedL: %d"), aErr);
+		}
+
+	if ( aErr == KErrNone )
+		{
+		Signal();
+		}
+	else
+		{
+		Signal(aErr);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::HandleFileImportCompletedL
+// ---------------------------------------------------------------------------
+//
+void Cmpxharvestertest::HandleFileImportCompletedL( CMPXMedia* aMedia, TInt aErr )
+	{
+	if ( RemoveExpectedEvent(EEventHandleFileImportCompletedL) )
+		{
+		iLog->Log(_L("Cmpxharvestertest::EEventHandleFileImportCompletedL: %d [EXPECTED]"), aErr);
+		}
+	else
+		{
+		iLog->Log(_L("Cmpxharvestertest::EEventHandleFileImportCompletedL: %d"), aErr);
+		}
+
+	if ( aErr == KErrNone )
+		{
+		iLog->Log(_L("Number of attributes: %d"), aMedia->Count() );
+		delete aMedia;
+		aMedia = NULL;
+		}
+	if ( (iResult && (aErr == KErrNone )) || (!iResult && (aErr != KErrNone)) )
+		{
+		Signal();
+		}
+	else
+		{
+		Signal(aErr);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::HandleFileGetMediaCompletedL
+// ---------------------------------------------------------------------------
+//
+void Cmpxharvestertest::HandleFileGetMediaCompletedL( CMPXMedia* /*aMedia*/, TInt aErr )
+	{
+	if ( RemoveExpectedEvent(EEventHandleFileGetMediaCompletedL) )
+		{
+		iLog->Log(_L("Cmpxharvestertest::HandleFileGetMediaCompletedL: %d [EXPECTED]"), aErr);
+		}
+	else
+		{
+		iLog->Log(_L("Cmpxharvestertest::HandleFileGetMediaCompletedL: %d"), aErr);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::HandleCollectionMediaL
+// ---------------------------------------------------------------------------
+//
+void Cmpxharvestertest::HandleCollectionMediaL( const CMPXMedia& /*aMedia*/, TInt aError )
+	{
+	iLog->Log(_L("Cmpxharvestertest::HandleCollectionMediaL: %d"), aError);
+	}
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::HandleCollectionMessage
+// ---------------------------------------------------------------------------
+//
+void Cmpxharvestertest::HandleCollectionMessage( CMPXMessage* /*aMsg*/, TInt aError )
+	{
+	iLog->Log(_L("Cmpxharvestertest::HandleCollectionMessage: %d"), aError);
+	}
+	
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::HandleOpenL
+// ---------------------------------------------------------------------------
+//
+void Cmpxharvestertest::HandleOpenL( const CMPXMedia& /*aEntries*/, TInt /*aIndex*/, TBool /*aComplete*/, TInt aError )
+	{
+	iLog->Log(_L("Cmpxharvestertest::HandleOpenL: %d"), aError);
+	}
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::HandleOpenL
+// ---------------------------------------------------------------------------
+//
+void Cmpxharvestertest::HandleOpenL( const CMPXCollectionPlaylist& /*aPlaylist*/, TInt aError ) 
+	{
+	iLog->Log(_L("Cmpxharvestertest::HandleOpenL: %d"), aError);
+	}
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::ExampleL
+// Example test method function.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::ExampleL( CStifItemParser& aItem )
+    {
+
+    // Print to UI
+    _LIT( Kmpxharvestertest, "mpxharvestertest" );
+    _LIT( KExample, "In Example" );
+    TestModuleIf().Printf( 0, Kmpxharvestertest, KExample );
+    // Print to log file
+    iLog->Log( KExample );
+
+    TInt i = 0;
+    TPtrC string;
+    _LIT( KParam, "Param[%i]: %S" );
+    while ( aItem.GetNextString( string ) == KErrNone )
+        {
+        TestModuleIf().Printf( i, Kmpxharvestertest,
+                                KParam, i, &string );
+        i++;
+        }
+
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::CreateUtility
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::CreateUtility( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("Cmpxharvestertest::CreateUtility"));
+    TRAPD(err, iHarvester = CMPXHarvesterFactory::NewL());
+    if ( err == KErrNone )
+    	{
+    	TRAP(err, iCollection = MMPXCollectionUtility::NewL(this));
+	    if ( err != KErrNone )
+	    	{
+	    	iLog->Log(_L("MMPXCollectionUtility::NewL returned: %d"), err);
+	    	}
+    	}
+	else
+		{
+    	iLog->Log(_L("CMPXHarvesterFactory::NewL returned: %d"), err);
+    	}
+
+    iExpectedEvents.Reset();
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::CopyTestFile
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::CopyTestFile( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::CopyTestFile"));
+    TInt err = KErrNone;
+    TPtrC string;
+    while ( aItem.GetNextString( string ) == KErrNone )
+        {
+		TBuf<120> KFrom;
+		KFrom.Append(Kmpxharvester_testPath);
+		KFrom.Append(string);
+
+		TBuf<120> KTo;
+		KTo.Append(Kmpxharvester_digitalPath);
+		KTo.Append(string);
+
+	    err = iFileMan->Copy(KFrom, KTo);
+ 		if ( err != KErrNone )
+ 			{
+			iLog->Log(_L("CopyTestFile returned: %d"), err);
+			break;
+			}
+        }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::DeleteTestFile
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::DeleteTestFile( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::DeleteTestFile"));
+    TInt err = KErrNone;
+    TPtrC string;
+    while ( aItem.GetNextString( string ) == KErrNone )
+        {
+		TBuf<120> KFrom;
+		KFrom.Append(Kmpxharvester_digitalPath);
+		KFrom.Append(string);
+
+	    err = iFileMan->Delete(KFrom);
+ 		if ( err != KErrNone )
+ 			{
+			iLog->Log(_L("DeleteTestFile returned: %d"), err);
+			break;
+			}
+        }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::VerifyEvents
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::VerifyEvents( CStifItemParser& /*aItem*/ )
+    {
+    TInt err = KErrNone;
+    TInt count = iExpectedEvents.Count();
+    if ( count > 0 )
+	    {
+	    for ( TInt i = 0; i < count; i++ )
+	    	{
+	    	iLog->Log(_L("Cmpxharvestertest::VerifyEvents - Missing: %d"), iExpectedEvents[i]);
+	    	}
+	    err = KErrGeneral;
+	    iExpectedEvents.Reset();
+	    }
+    return err;
+    }
+    
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::Scan
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::Scan( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("Cmpxharvestertest::Scan"));
+    TRAPD(err, iHarvester->ScanL());
+    if ( err != KErrNone )
+    	{
+    	iLog->Log(_L("ScanL returned: %d"), err);
+    	}
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::CancelScan
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::CancelScan( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("Cmpxharvestertest::CancelScan"));
+    TRAPD(err, iHarvester->CancelScanL());
+    if ( err != KErrNone )
+    	{
+    	iLog->Log(_L("CancelScanL returned: %d"), err);
+    	}
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::AddFileByPath
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::AddFileByPath( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::AddFileByPath"));
+    TInt err = KErrNone;
+    TPtrC string;
+	if ( KErrNone == aItem.GetNextString(string) )
+		{
+		TBuf<120> KFile;
+		KFile.Append(Kmpxharvester_digitalPath);
+		KFile.Append(string);
+
+	    TRAP(err, iHarvester->AddFileL(KFile, this))
+ 		if ( err == KErrNone )
+ 			{
+ 			AddExpectedEvent(EEventHandleFileAddCompletedL);
+ 			}
+ 		else
+ 			{
+			iLog->Log(_L("AddFileL returned: %d"), err);
+			}
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::AddFileByMedia
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+//TInt Cmpxharvestertest::AddFileByMedia( CStifItemParser& aItem )
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::RemoveFile
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::RemoveFile( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::RemoveFile"));
+    TInt err = KErrNone;
+    TPtrC string;
+	if ( KErrNone == aItem.GetNextString(string) )
+		{
+		TBuf<120> KFile;
+		KFile.Append(Kmpxharvester_digitalPath);
+		KFile.Append(string);
+
+	    TRAP(err, iHarvester->RemoveFileL(KFile))
+ 		if ( err != KErrNone )
+ 			{
+			iLog->Log(_L("RemoveFileL returned: %d"), err);
+			}
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::RemoveFiles
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::RemoveFiles( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::RemoveFiles"));
+    TInt err = KErrNone;
+    TPtrC string;
+	if ( KErrNone == aItem.GetNextString(string) )
+		{
+		if ( string == KTagAll )
+			{
+		    TRAP(err, iHarvester->RemoveAllFilesL());
+	 		if ( err != KErrNone )
+	 			{
+				iLog->Log(_L("RemoveAllFilesL returned: %d"), err);
+				}
+			}
+		else
+			{
+            CDesCArrayFlat* files = new (ELeave)CDesCArrayFlat(1);
+            CleanupStack::PushL(files);
+			TBuf<120> KFrom;
+			KFrom.Append(Kmpxharvester_digitalPath);
+			KFrom.Append(string);
+            files->AppendL(KFrom);
+
+		    while ( aItem.GetNextString( string ) == KErrNone )
+		        {
+				TBuf<120> KFrom;
+				KFrom.Append(Kmpxharvester_digitalPath);
+				KFrom.Append(string);
+	            files->AppendL(KFrom);
+		        }
+
+			TRAP(err, iHarvester->RemoveFilesL(*files));
+		 	if ( err != KErrNone )
+		 		{
+				iLog->Log(_L("RemoveFilesL returned: %d"), err);
+				}
+			CleanupStack::PopAndDestroy(files);
+			}
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::RecreateDatabases
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::RecreateDatabases( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("Cmpxharvestertest::RecreateDatabases"));
+    TRAPD(err, iHarvester->RecreateDatabasesL());
+    if ( err != KErrNone )
+    	{
+    	iLog->Log(_L("RecreateDatabasesL returned: %d"), err);
+    	}
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::DeleteFile
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::DeleteFile( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::DeleteFile"));
+    TInt err = KErrNone;
+    TPtrC string;
+	if ( KErrNone == aItem.GetNextString(string) )
+		{
+		TBuf<120> KFile;
+		KFile.Append(Kmpxharvester_digitalPath);
+		KFile.Append(string);
+
+	    TRAP(err, iHarvester->DeleteFileL(KFile, this))
+ 		if ( err != KErrNone )
+ 			{
+			iLog->Log(_L("DeleteFileL returned: %d"), err);
+			}
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::DeleteFiles
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::DeleteFiles( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::DeleteFiles"));
+    TInt err = KErrNone;
+    TPtrC mode;
+    TPtrC string;
+    TPtrC string2;
+	if ( KErrNone == aItem.GetNextString(mode) )
+		{
+        CDesCArrayFlat* files = new (ELeave)CDesCArrayFlat(1);
+        CleanupStack::PushL(files);
+		while ( aItem.GetNextString( string ) == KErrNone )
+		    {
+			TBuf<120> KFrom;
+			KFrom.Append(Kmpxharvester_digitalPath);
+			KFrom.Append(string);
+	        files->AppendL(KFrom);
+		    }
+
+		if ( mode == KTagAsync )
+			{
+		    TRAP(err, iHarvester->DeleteFilesL(*files, this));
+	 		if ( err == KErrNone )
+		 		{
+		 		AddExpectedEvent(EEventHandleDeleteCompletedL);
+		 		}
+		 	else
+	 			{
+				iLog->Log(_L("DeleteFilesL async returned: %d"), err);
+				}
+			}
+		else if ( mode == KTagSync )
+			{
+		    TRAP(err, iHarvester->DeleteFilesL(*files));
+	 		if ( err != KErrNone )
+	 			{
+				iLog->Log(_L("DeleteFilesL sync returned: %d"), err);
+				}
+			}
+		else
+			{
+			iLog->Log(_L("Bad parameter on config file"));
+			err = KErrBadTestParameter;
+			}
+		CleanupStack::PopAndDestroy(files);
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::UpdateFile
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+//TInt Cmpxharvestertest::UpdateFile( CStifItemParser& aItem )
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::FindCollectionId
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::FindCollectionId( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::FindCollectionId"));
+    TInt err = KErrNone;
+    TPtrC string;
+	if ( KErrNone == aItem.GetNextString(string) )
+		{
+		TBuf<120> KFile;
+		KFile.Append(Kmpxharvester_digitalPath);
+		KFile.Append(string);
+
+		TInt id = 0;
+	    TRAP(err, id = iHarvester->FindCollectionIdL(KFile))
+ 		if ( err != KErrNone )
+ 			{
+			iLog->Log(_L("FindCollectionIdL returned: %d"), err);
+			}
+		else
+ 			{
+			iLog->Log(_L("Collection ID: %d"), id);
+			}
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::RenameFileByMedia
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+//TInt Cmpxharvestertest::RenameFileByMedia( CStifItemParser& aItem )
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::RenameFileByPath
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::RenameFileByPath( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::RenameFileByPath"));
+    TInt err = KErrNone;
+    TPtrC oldUri;
+    TPtrC newUri;
+	TBuf<120> KOld;
+	TBuf<120> KNew;
+	if ( KErrNone == aItem.GetNextString(oldUri) )
+		{
+		KOld.Append(Kmpxharvester_digitalPath);
+		KOld.Append(oldUri);
+
+		if ( KErrNone == aItem.GetNextString(newUri) )
+			{
+			KNew.Append(Kmpxharvester_digitalPath);
+			KNew.Append(newUri);
+			}
+		else
+			{
+			iLog->Log(_L("Bad parameter on config file"));
+			err = KErrBadTestParameter;
+			}
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+	if ( err == KErrNone )
+		{
+		TInt id = 0;
+	    TRAP(err, id = iHarvester->FindCollectionIdL(KOld))
+ 		if ( err != KErrNone )
+ 			{
+			iLog->Log(_L("FindCollectionIdL returned: %d"), err);
+			}
+		else
+			{
+			TRAP(err, iHarvester->RenameFileL(KOld, KNew, id));
+		 	if ( err != KErrNone )
+		 		{
+				iLog->Log(_L("RenameFileL returned: %d"), err);
+				}
+			}
+		}
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::ExportPlaylist
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+//TInt Cmpxharvestertest::ExportPlaylist( CStifItemParser& aItem )
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::ImportPlaylist
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::ImportPlaylist( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::ImportPlaylist"));
+    TInt err = KErrNone;
+    TPtrC string;
+    TPtrC result;
+	if ( KErrNone == aItem.GetNextString(string) )
+		{
+		TBuf<120> KFile;
+		KFile.Append(Kmpxharvester_digitalPath);
+		KFile.Append(string);
+
+		if ( KErrNone == aItem.GetNextString(result) )
+			{
+			if ( result == KTagTrue )
+				{
+				iResult = ETrue;
+				}
+			else if ( result == KTagFalse )
+				{
+				iResult = EFalse;
+				}
+			else
+				{
+				iLog->Log(_L("Bad parameter on config file"));
+				err = KErrBadTestParameter;
+				}
+			
+			if ( err == KErrNone )
+				{
+				TRAP(err, iHarvester->ImportPlaylistL(KFile, this))
+				if ( err == KErrNone )
+					{
+					AddExpectedEvent(EEventHandlePlaylistImportCompletedL);
+					}
+				else
+					{
+					iLog->Log(_L("ImportPlaylist returned: %d"), err);	
+					}
+				}
+			}
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::ImportFile
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::ImportFile( CStifItemParser& aItem )
+    {
+	iLog->Log(_L("Cmpxharvestertest::ImportFile"));
+    TInt err = KErrNone;
+    TPtrC string;
+    TPtrC result;
+	if ( KErrNone == aItem.GetNextString(string) )
+		{
+		TBuf<120> KFile;
+		KFile.Append(Kmpxharvester_digitalPath);
+		KFile.Append(string);
+
+		if ( KErrNone == aItem.GetNextString(result) )
+			{
+			if ( result == KTagTrue )
+				{
+				iResult = ETrue;
+				}
+			else if ( result == KTagFalse )
+				{
+				iResult = EFalse;
+				}
+			else
+				{
+				iLog->Log(_L("Bad parameter on config file"));
+				err = KErrBadTestParameter;
+				}			
+			
+			if ( err == KErrNone )
+				{
+				TRAP(err, iHarvester->ImportFileL(KFile, this))
+				if ( err == KErrNone )
+					{
+					AddExpectedEvent(EEventHandleFileImportCompletedL);
+					}
+				else
+					{
+					iLog->Log(_L("ImportFile returned: %d"), err);
+					}
+
+				}
+			}
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::RequiredAttributes
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::RequiredAttributes( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::RequiredAttributes"));
+    TInt err = KErrNone;
+    TPtrC playlistType;
+	if ( KErrNone == aItem.GetNextString(playlistType) )
+		{
+		TMPXPlaylistType type = EMPXPlaylistTypeUnknown;
+		if ( playlistType == KTagM3U )
+			{
+			type = EMPXPlaylistTypeM3U;
+			}
+		else if ( playlistType == KTagPLA )
+			{
+			type = EMPXPlaylistTypePLA;
+			}
+		else if ( playlistType == KTagMPV )
+			{
+			type = EMPXPlaylistTypeMPV;
+			}
+		else if ( playlistType == KTagXSPF )
+			{
+			type = EMPXPlaylistTypeXSPF;
+			}
+		else if ( playlistType == KTagXML )
+			{
+			type = EMPXPlaylistTypeXML;
+			}
+		else
+			{
+			iLog->Log(_L("Bad parameter on config file"));
+			return KErrBadTestParameter;
+			}
+
+		RArray<TMPXAttribute> att;
+	    TRAP(err, iHarvester->RequiredAttributesL(type, att));
+ 		if ( err != KErrNone )
+ 			{
+			iLog->Log(_L("RequiredAttributesL returned: %d"), err);
+			}
+		else
+			{
+			TInt count = att.Count();
+			iLog->Log(_L("Number of attributes: %d"), count );
+			for ( TInt i=0; i < count; i++ )
+				{
+				TMPXAttribute attribute = att[i];
+				iLog->Log(_L("AttributeId: %d, ContentId: %d"), attribute.AttributeId(), attribute.ContentId() );
+				}
+			}
+		att.Reset();
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::OptionalAttributes
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::OptionalAttributes( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::OptionalAttributes"));
+    TInt err = KErrNone;
+    TPtrC playlistType;
+	if ( KErrNone == aItem.GetNextString(playlistType) )
+		{
+		TMPXPlaylistType type = EMPXPlaylistTypeUnknown;
+		if ( playlistType == KTagM3U )
+			{
+			type = EMPXPlaylistTypeM3U;
+			}
+		else if ( playlistType == KTagPLA )
+			{
+			type = EMPXPlaylistTypePLA;
+			}
+		else if ( playlistType == KTagMPV )
+			{
+			type = EMPXPlaylistTypeMPV;
+			}
+		else if ( playlistType == KTagXSPF )
+			{
+			type = EMPXPlaylistTypeXSPF;
+			}
+		else if ( playlistType == KTagXML )
+			{
+			type = EMPXPlaylistTypeXML;
+			}
+		else
+			{
+			iLog->Log(_L("Bad parameter on config file"));
+			return KErrBadTestParameter;
+			}
+
+		RArray<TMPXAttribute> att;
+	    TRAP(err, iHarvester->OptionalAttributesL(type, att));
+ 		if ( err != KErrNone )
+ 			{
+			iLog->Log(_L("OptionalAttributesL returned: %d"), err);
+			}
+		else
+			{
+			TInt count = att.Count();
+			iLog->Log(_L("Number of attributes: %d"), count );
+			for ( TInt i=0; i < count; i++ )
+				{
+				// AK - need to add better checking
+				TMPXAttribute attribute = att[i];
+				iLog->Log(_L("AttributeId: %d, ContentId: %d"), attribute.AttributeId(), attribute.ContentId() );
+				}
+			}
+		att.Reset();
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::PlaylistFileExtension
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::PlaylistFileExtension( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::PlaylistFileExtension"));
+    TInt err = KErrNone;
+    TPtrC playlistType;
+	if ( KErrNone == aItem.GetNextString(playlistType) )
+		{
+		TMPXPlaylistType type = EMPXPlaylistTypeUnknown;
+		if ( playlistType == KTagM3U )
+			{
+			type = EMPXPlaylistTypeM3U;
+			}
+		else if ( playlistType == KTagPLA )
+			{
+			type = EMPXPlaylistTypePLA;
+			}
+		else if ( playlistType == KTagMPV )
+			{
+			type = EMPXPlaylistTypeMPV;
+			}
+		else if ( playlistType == KTagXSPF )
+			{
+			type = EMPXPlaylistTypeXSPF;
+			}
+		else if ( playlistType == KTagXML )
+			{
+			type = EMPXPlaylistTypeXML;
+			}
+		else
+			{
+			iLog->Log(_L("Bad parameter on config file"));
+			return KErrBadTestParameter;
+			}
+
+	    HBufC* ext = iHarvester->PlaylistFileExtensionLC(type);
+		TPtr extptr = ext->Des();
+		iLog->Log(_L("Extension: %S"), &extptr );
+		err = !( (type == EMPXPlaylistTypeM3U) && (ext->Des() == _L(".m3u")) );
+		iLog->Log(_L("Correct extension error: %d"), err );
+		CleanupStack::PopAndDestroy(ext);
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+    return err;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::IsPlaylist
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::IsPlaylist( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("Cmpxharvestertest::IsPlaylist"));
+    TInt err = KErrNone;
+    TPtrC string;
+    TPtrC test;
+	if ( KErrNone == aItem.GetNextString(string) )
+		{
+		TBuf<120> KFile;
+		KFile.Append(Kmpxharvester_digitalPath);
+		KFile.Append(string);
+
+		if ( KErrNone == aItem.GetNextString(test) )
+			{
+			TBool playlist = EFalse;
+			TRAP(err, playlist = iHarvester->IsPlaylistL(KFile))
+			if ( err != KErrNone )
+				{
+				iLog->Log(_L("IsPlaylist returned: %d"), err);
+				}
+			else
+				{
+				if ( ((test == KTagTrue) && playlist ) ||
+				     ((test == KTagFalse) && !playlist ) )
+				    {
+					err = KErrNone;
+					}
+				else
+				    {
+					err = KErrGeneral;
+					}
+				}
+			}
+		}
+	else
+		{
+		iLog->Log(_L("Bad parameter on config file"));
+		err = KErrBadTestParameter;
+		}
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// Cmpxharvestertest::CheckForSystemEvents
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt Cmpxharvestertest::CheckForSystemEvents( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("Cmpxharvestertest::CheckForSystemEvents"));
+    TRAPD(err, iHarvester->CheckForSystemEventsL());
+    if ( err != KErrNone )
+    	{
+    	iLog->Log(_L("CancelScanL returned: %d"), err);
+    	}
+    return err;
+    }
+