mpx/tsrc/public/basic/collectionhelpertest/src/collectionhelpertestblocks.cpp
author hgs
Tue, 21 Sep 2010 11:25:55 -0500
changeset 62 b276843a15ba
permissions -rw-r--r--
201037

/*
* Copyright (c) 2002 - 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:  Scripted STIF cases for MPXCollectionHelper
*
*/

// INCLUDE FILES
#include <e32svr.h>
#include <StifParser.h>
#include <Stiftestinterface.h>
#include "collectionhelpertest.h"
#include <mpxmessagegeneraldefs.h>
#include <mpxmediageneraldefs.h>
#include <mpxmediaaudiodefs.h>
#include <mpxmediamusicdefs.h>
#include <mpxmediadrmdefs.h>
#include <mpxmediaarray.h>
#include <mpxmediacontainerdefs.h>
#include <mpxattribute.h>


// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// CCollectionHelperTest::Delete
// Delete here all resources allocated and opened from test methods. 
// Called from destructor. 
// -----------------------------------------------------------------------------
//
void CCollectionHelperTest::Delete() 
    {
    FTRACE(FPrint(_L("CTunerUtilityTest::Delete")));
    
    iExpectedEvents.Close();
    iOcurredEvents.Close();
    
    iLog->Log(_L("Deleting test class..."));
	iLog->Log(_L(""));
	iLog->Log(_L(""));
    
    if(iUIHelper)
   		{
        //delete iUIHelper;
        iUIHelper = NULL;
 	  	}
    if(iHelper)
   		{
        //delete iHelper;
        iHelper = NULL;
   		}
    if(iCachedHelper)
   		{
        //delete iCachedHelper;
        iCachedHelper = NULL;
   		}
    }

// -----------------------------------------------------------------------------
// CCollectionHelperTest::RunMethodL
// Run specified method. Contains also table of test mothods and their names.
// -----------------------------------------------------------------------------
//
TInt CCollectionHelperTest::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( "OpenCollectionUtility", CCollectionHelperTest::OpenCollectionUtilityL ),
        ENTRY( "NewUiHelper", CCollectionHelperTest::NewUiHelperL ),
        ENTRY( "NewHelper", CCollectionHelperTest::NewHelperL ),
        ENTRY( "NewCachedHelper", CCollectionHelperTest::NewCachedHelperL ),
        ENTRY( "CloseUiHelper", CCollectionHelperTest::CloseUiHelperL ),
        ENTRY( "CloseHelper", CCollectionHelperTest::CloseHelperL ),
        ENTRY( "CloseCachedHelper", CCollectionHelperTest::CloseCachedHelperL ),        
        ENTRY( "AddFile", CCollectionHelperTest::AddFileL),
        ENTRY( "AddMedia", CCollectionHelperTest::AddMediaL ),
        ENTRY( "RemoveFile", CCollectionHelperTest::RemoveFileL ),
        ENTRY( "RemoveAll", CCollectionHelperTest::RemoveAllL ),
        ENTRY( "CleanupDeletedMedias", CCollectionHelperTest::CleanupDeletedMediasL ),
        ENTRY( "SetMedia", CCollectionHelperTest::SetMediaL ),
        ENTRY( "RenameUri", CCollectionHelperTest::RenameUriL ),
        ENTRY( "GetFile", CCollectionHelperTest::GetFileL ),
        ENTRY( "GetFile2", CCollectionHelperTest::GetFile2L ),
        ENTRY( "FindAll", CCollectionHelperTest::FindAllL ),
        //ADD NEW ENTRY HERE
        // [test cases entries] - Do not remove
        };

    const TInt count = sizeof( KFunctions ) / 
                        sizeof( TStifFunctionInfo );

    return RunInternalL( KFunctions, count, aItem );
    
    }

TInt CCollectionHelperTest::OpenCollectionUtilityL(CStifItemParser& /*aItem*/)
	{    
	FTRACE(FPrint(_L("CCollectionHelperTest::OpenCollectionUtilityL")));
	iLog->Log(_L("CCollectionHelperTest::OpenCollectionUtilityL"));
		
    TRAPD( result, iCollectionUtility->Collection().OpenL() );
    
	if( KErrNone == result )
		{		
		AddExpectedEvent( EColHandleCollectionMessage, KMediumTimeout );
		AddExpectedEvent( EColHandleOpen, KMediumTimeout );
		}
	
	return result;
    }    
	    	
	    	
TInt CCollectionHelperTest::NewUiHelperL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::NewUiHelperL")));
	iLog->Log(_L("CCollectionHelperTest::NewUiHelperL"));

	TRAPD( result, 
	       iUIHelper = CMPXCollectionHelperFactory::NewCollectionUiHelperL() ); 

	return result;
    }    

		
TInt CCollectionHelperTest::NewHelperL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::NewHelperL")));
	iLog->Log(_L("CCollectionHelperTest::NewHelperL"));

	TRAPD( result, 
	       iHelper = CMPXCollectionHelperFactory::NewCollectionHelperL() ); 

	return result;
	}

TInt CCollectionHelperTest::NewCachedHelperL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::NewCachedHelperL")));
	iLog->Log(_L("CCollectionHelperTest::NewCachedHelperL"));

	TRAPD( result, 
	       iCachedHelper = 
               CMPXCollectionHelperFactory::NewCollectionCachedHelperL() ); 

	return result;
	}

TInt CCollectionHelperTest::CloseUiHelperL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::CloseUiHelperL")));
	iLog->Log(_L("CCollectionHelperTest::CloseUiHelperL"));

	TRAPD( result, iUIHelper->Close() ); 

	return result;
	}
	
TInt CCollectionHelperTest::CloseHelperL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::CloseHelperL")));
	iLog->Log(_L("CCollectionHelperTest::CloseHelperL"));
	
	TRAPD( result, iHelper->Close() ); 

	return result;
	}
	
TInt CCollectionHelperTest::CloseCachedHelperL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::CloseCachedHelperL")));
	iLog->Log(_L("CCollectionHelperTest::CloseCachedHelperL"));

	TRAPD( result, iCachedHelper->Close() ); 

	return result;
	}
			
TInt CCollectionHelperTest::AddFileL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::AddFileL")));	
	iLog->Log(_L("CCollectionHelperTest::AddFileL"));
	
	TRAPD( result, iHelper->AddL( KTestFile, this ) );
	
	if( KErrNone == result )
		{		
		AddExpectedEvent( EColHandleAddFileComplete, KMediumTimeout );
		}
	
	return result;
	}
	
TInt CCollectionHelperTest::AddMediaL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::AddMediaL")));
	iLog->Log(_L("CCollectionHelperTest::AddMediaL"));
    	  	
    CMPXMedia* media( NULL );
	CreateTestMediaL( media );
    CleanupStack::PushL( media );

    TRAPD( result, iHelper->AddL( media ) );
		    
    CleanupStack::PopAndDestroy( media );    	
    
	return result; 
	};

TInt CCollectionHelperTest::RemoveFileL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::RemoveFileL")));
	iLog->Log(_L("CCollectionHelperTest::RemoveFileL"));
    TRAPD( result, iHelper->RemoveL( KTestFile ) );
    
	//if( KErrNone == result )
	//	{		
	//	AddExpectedEvent( EHandleRemove, KMediumTimeout );
	//	}
		
	return result;
	}

TInt CCollectionHelperTest::RemoveAllL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::RemoveAllL")));
	iLog->Log(_L("CCollectionHelperTest::RemoveAllL"));
    
    TRAPD( result, iHelper->RemoveAllL() );
    
    //if( KErrNone == result )
	//	{		
	//	AddExpectedEvent( EHandleRemove, KMediumTimeout );
	//	}
		
	return result;
	}

TInt CCollectionHelperTest::CleanupDeletedMediasL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::CleanupDeletedMediasL")));
	iLog->Log(_L("CCollectionHelperTest::CleanupDeletedMediasL"));
	
    TRAPD( result, iHelper->CleanupDeletedMediasL() );  
      
    // This method is unsupported.
    result = (result == KErrNotSupported) ? KErrNone : result;
	return result;
	}

TInt CCollectionHelperTest::SetMediaL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::SetMediaL")));
	iLog->Log(_L("CCollectionHelperTest::SetMediaL"));
    	
    CMPXMedia* media( NULL );
	CreateTestMediaL( media );
    CleanupStack::PushL( media );

    TRAPD( result, iHelper->SetL( media ) );
		    
    CleanupStack::PopAndDestroy( media );           	
		
	return result;
	}

TInt CCollectionHelperTest::RenameUriL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::RenameUriL")));
	iLog->Log(_L("CCollectionHelperTest::RenameUriL"));
    	
    TRAPD( result, iHelper->RenameL( KRenameOldUri,KRenameNewUri ) );
		
    return result;
	}

TInt CCollectionHelperTest::GetFileL(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::GetFileL")));
	iLog->Log(_L("CCollectionHelperTest::GetFileL"));
    	
    RArray<TMPXAttribute> attrs;
    CleanupClosePushL( attrs );
    
    CMPXMedia* theFile = NULL;
	TRAPD( result, theFile = iHelper->GetL( KTestFile, attrs.Array() ) );
	if(theFile)
		{
		delete theFile;
		}
	
	CleanupStack::PopAndDestroy( &attrs );   // attrs
		
    return result;
	}
	
TInt CCollectionHelperTest::GetFile2L(CStifItemParser& /*aItem*/)
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::GetFile2L")));
	iLog->Log(_L("CCollectionHelperTest::GetFile2L"));
	
	TRAPD( result, const CMPXMedia& theFile = iHelper->GetL( KTestFile ) );
		
	// This method is unsupported.
	result = (result == KErrNotSupported) ? KErrNone : result;		
    return result;
	}

TInt CCollectionHelperTest::FindAllL(CStifItemParser& /*aItem*/)
	{	
	FTRACE(FPrint(_L("CCollectionHelperTest::FindAllL")));
	iLog->Log(_L("CCollectionHelperTest::FindAllL"));
    
    RArray<TMPXAttribute> attrs;
    CleanupClosePushL( attrs );
    
    CMPXMedia* media( NULL );
	CreateTestMediaL( media );
    CleanupStack::PushL( media );
    
    CMPXMedia* allMedia = NULL;
	TRAPD( result, allMedia = iHelper->FindAllL( *media, attrs.Array() ) );
	if(allMedia)
		{
		delete allMedia;
		}
			
	CleanupStack::PopAndDestroy( media );
	CleanupStack::PopAndDestroy( &attrs );   // attrs
			
    return result;
	}

void CCollectionHelperTest::CreateTestMediaL( CMPXMedia*& aNewProperty )
    {
    RArray<TInt> contentIDs;
    contentIDs.AppendL( KMPXMediaIdGeneral );
    contentIDs.AppendL( KMPXMediaIdAudio );
    contentIDs.AppendL( KMPXMediaIdMusic );
    contentIDs.AppendL( KMPXMediaIdDrm ); 
            
    aNewProperty = NULL;
    CMPXMedia* media = CMPXMedia::NewL( contentIDs.Array() );
    CleanupStack::PushL( media );
    contentIDs.Close();
    
    // CMPXMedia default types    
    media->SetTObjectValueL<TMPXGeneralType>( KMPXMediaGeneralType, 
                                              EMPXItem );
    media->SetTObjectValueL<TMPXGeneralCategory>( KMPXMediaGeneralCategory, 
                                                  EMPXSong );
    media->SetTextValueL( KMPXMediaGeneralUri, KTestFile() );
    
    // Title, default is file name
    media->SetTextValueL( KMPXMediaGeneralTitle, KTestFile() );
    
    // Default album track
    media->SetTextValueL( KMPXMediaMusicAlbumTrack, KNullDesC );
    
    // Set the Mime Type and collection UID
    media->SetTextValueL( KMPXMediaGeneralMimeType, KTestFileMimeType() );
    //media->SetTObjectValueL( KMPXMediaGeneralCollectionId, );

    // Set the pointers now that the object is ready
    CleanupStack::Pop( media );
    aNewProperty = media;
    }  
    
// ---------------------------------------------------------------------------
// Handle collection message
// ---------------------------------------------------------------------------
//
void CCollectionHelperTest::HandleCollectionMessageL(const CMPXMessage& aMsg)
    {
	FTRACE(FPrint(_L("CCollectionHelperTest::HandleCollectionMessageL")));
	iLog->Log(_L("CCollectionHelperTest::HandleCollectionMessageL"));
	
	if( aMsg.IsSupported(KMPXMessageGeneralEvent) &&
        aMsg.IsSupported(KMPXMessageGeneralType) )         
        {
        TMPXCollectionMessage::TEvent event = 
        *aMsg.Value<TMPXCollectionMessage::TEvent>( KMPXMessageGeneralEvent );
        TInt type = *aMsg.Value<TInt>( KMPXMessageGeneralType );
        TInt data = *aMsg.Value<TInt>( KMPXMessageGeneralData );
        
        TMPXCollectionMessage message(event, type, data);
	    if(message.Event() == TMPXCollectionMessage::EPathChanged && 
	       message.Type() == EMcPathChangedByOpen)
        	{
        	iCollectionUtility->Collection().OpenL();
        	
        	this->ProcessEvent(EColHandleCollectionMessage, KErrNone);
        	}	
        }
    }

// ---------------------------------------------------------------------------
//  Handles the collection entries being opened. Typically called
//  when client has Open()'d a folder
// ---------------------------------------------------------------------------
//
void CCollectionHelperTest::HandleOpenL(const CMPXMedia& /*aEntries*/,
                                  TInt /*aIndex*/, TBool aComplete,TInt aError)
    {
	FTRACE(FPrint(_L("CCollectionHelperTest::HandleOpenL")));
	iLog->Log(_L("CCollectionHelperTest::HandleOpenL"));
	
	this->ProcessEvent(EColHandleOpen, aError);
    }
                     
// ---------------------------------------------------------------------------
// Handles the item being opened. Typically called
// when client has Open()'d an item. Client typically responds by
// 'playing' the item via the playlist
// ---------------------------------------------------------------------------
void CCollectionHelperTest::HandleOpenL(
        const CMPXCollectionPlaylist& /*aPlaylist*/, TInt /*aError*/)
    {
	FTRACE(FPrint(_L("CCollectionHelperTest::HandleOpenL")));
	iLog->Log(_L("CCollectionHelperTest::HandleOpenL"));
    }

// ---------------------------------------------------------------------------
// Handle completion of a asynchronous command
// ---------------------------------------------------------------------------
void CCollectionHelperTest::HandleCommandComplete(
        CMPXCommand* /*aCommandResult*/, TInt /*aError*/)
    {
	FTRACE(FPrint(_L("CCollectionHelperTest::HandleCommandComplete")));
	iLog->Log(_L("CCollectionHelperTest::HandleCommandComplete"));
	
	Signal();
	iTimeoutController->Cancel();
    }
    
// ---------------------------------------------------------------------------
//  Handle extended media properties
// ---------------------------------------------------------------------------
//
void CCollectionHelperTest::HandleCollectionMediaL(const CMPXMedia& /*aMedia*/, 
                                             TInt /*aError*/)
    {
	FTRACE(FPrint(_L("CCollectionHelperTest::HandleCollectionMediaL")));
	iLog->Log(_L("CCollectionHelperTest::HandleCollectionMediaL"));
	
	Signal();
	iTimeoutController->Cancel();
    }

// ---------------------------------------------------------------------------
//  Handles removing a collection path
// ---------------------------------------------------------------------------
//
void CCollectionHelperTest::HandleRemoveL(MDesCArray& /*aUriArray*/, TInt aError)
    {
	FTRACE(FPrint(_L("CCollectionHelperTest::HandleRemoveL")));
	iLog->Log(_L("CCollectionHelperTest::HandleRemoveL"));
	
	this->ProcessEvent(EColHandleRemove, aError);
    }

// ---------------------------------------------------------------------------
//  Handle callback for "find" operation
// ---------------------------------------------------------------------------
//
void CCollectionHelperTest::HandleFindAllL(const CMPXMedia& /*aResults*/, 
        TBool aComplete, TInt aError)
    {
	FTRACE(FPrint(_L("CCollectionHelperTest::HandleFindAllL")));
	iLog->Log(_L("CCollectionHelperTest::HandleFindAllL"));
	
	if(aComplete)
		{
		this->ProcessEvent(EColHandleFindAllComplete, aError);
		}
		else 
		{
		this->ProcessEvent(EColHandleFindAllComplete, KErrGeneral );
		}	
    }
   

void CCollectionHelperTest::HandleAddFileCompleteL( TInt aErr )
	{
	FTRACE(FPrint(_L("CCollectionHelperTest::HandleAddFileCompleteL")));
	iLog->Log(_L("CCollectionHelperTest::HandleAddFileCompleteL"));
	
	this->ProcessEvent(EColHandleAddFileComplete, aErr);
	}

void CCollectionHelperTest::HandleOperationCompleteL( 
		TCHelperOperation /*aOperation*/, TInt /*aErr*/, void* /*aArgument*/ )
    {
	FTRACE(FPrint(_L("CCollectionHelperTest::HandleOperationCompleteL")));
	iLog->Log(_L("CCollectionHelperTest::HandleOperationCompleteL"));
	
	Signal();
	iTimeoutController->Cancel();
	}      
	                                 
void CCollectionHelperTest::HandleEmbeddedOpenL( 
		TInt /*aErr*/, TMPXGeneralCategory /*aCategory*/ )
    {
	FTRACE(FPrint(_L("CCollectionHelperTest::HandleEmbeddedOpenL")));
	iLog->Log(_L("CCollectionHelperTest::HandleEmbeddedOpenL"));
	
	Signal();
	iTimeoutController->Cancel();
	}