mmappfw_plat/mpx_collection_utility_api/tsrc/collectionplaylisttest/src/mpxcollectionplaylisttestBlocks.cpp
changeset 0 a2952bb97e68
child 62 b276843a15ba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmappfw_plat/mpx_collection_utility_api/tsrc/collectionplaylisttest/src/mpxcollectionplaylisttestBlocks.cpp	Thu Dec 17 08:55:47 2009 +0200
@@ -0,0 +1,1280 @@
+/*
+* 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 Collection Playlist
+*
+*/
+
+
+// INCLUDE FILES
+#include <e32svr.h>
+#include <badesca.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+
+#include <mpxcollectionplaylist.h>
+#include <mpxcollectionpath.h>
+#include <mpxattribute.h>
+#include "mpxcollectionplaylisttest.h"
+
+#include "mpxcollectionobserver.h"//new added
+#include "mpxcollectionutility.h"//new 
+#include "mpxcollectionplaylistobserver.h"
+#include "mpxcollectionopenutility.h"
+#include "mpxmediageneraldefs.h"
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::Delete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// ---------------------------------------------------------------------------
+//
+void CMPXCollectionPlaylistTest::Delete()
+    {
+	  if ( iCollectionPlaylist )
+		    {
+		    delete iCollectionPlaylist;
+		    }
+
+      if ( iCollectionPath )
+          {
+          iCollectionPath->Reset();
+          delete iCollectionPath;
+          }
+	  iExpectedEvents.Close();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::AddExpectedEvent
+// Add an event to the expected event list
+// -----------------------------------------------------------------------------
+
+void CMPXCollectionPlaylistTest::AddExpectedEvent( TExpectedEvents aEvent )
+	  {
+	  iLog->Log(_L("CMPXCollectionPlaylistTest::AddExpectedEvent: %d"), aEvent);
+	  iExpectedEvents.Append(aEvent);
+	  }
+
+// -----------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::RemoveExpectedEvent
+// Remove the event from the expected event list
+// Returns: ETrue: Event found.
+//          EFalse: Event not found.
+// -----------------------------------------------------------------------------
+TBool CMPXCollectionPlaylistTest::RemoveExpectedEvent( TExpectedEvents aEvent )
+	  {
+	  iLog->Log(_L("CMPXCollectionPlaylistTest::RemoveExpectedEvent: %d"), aEvent);
+	  TBool match = EFalse;
+	  TInt index = iExpectedEvents.Find(aEvent);
+	  if ( index != KErrNotFound )
+		    {
+		    iExpectedEvents.Remove(index);
+		    match = ETrue;
+		    }
+	  return match;
+	  }
+
+// -----------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::BuildCollectionPath
+// Build MPX Collection Path
+// -----------------------------------------------------------------------------
+void CMPXCollectionPlaylistTest::BuildCollectionPathL()
+      {
+      iLog->Log(_L("CMPXCollectionPlaylistTest::BuildCollectionPath"));
+      
+      const TMPXItemId KMPXPathLevel1 = 33331;
+      const TMPXItemId KMPXPathLevel2 = 33332;
+      const TMPXItemId KMPXPathLevel3 = 33333;
+      const TMPXItemId KMPXPathItem1 = 44441;
+      const TMPXItemId KMPXPathItem2 = 44442;
+      const TMPXItemId KMPXPathItem3 = 44443;
+      const TMPXItemId KMPXPathItem4 = 44444;
+      const TMPXItemId KMPXPathItem5 = 44445;
+      RArray<TMPXItemId> itemIdArray;
+
+      // Start from scratch
+      if ( iCollectionPath )
+          {
+          iCollectionPath->Reset();
+          delete iCollectionPath;
+          }
+      // build collection path
+      iCollectionPath = CMPXCollectionPath::NewL();
+      iCollectionPath->AppendL(KMPXPathLevel1);
+      iCollectionPath->AppendL(KMPXPathLevel2);
+      iCollectionPath->AppendL(KMPXPathLevel3);
+      itemIdArray.Append(KMPXPathItem1);
+      itemIdArray.Append(KMPXPathItem2);
+      itemIdArray.Append(KMPXPathItem3);
+      itemIdArray.Append(KMPXPathItem4);
+      itemIdArray.Append(KMPXPathItem5);
+      iCollectionPath->AppendL(itemIdArray.Array());
+      
+      itemIdArray.Close();
+      }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::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", CMPXCollectionPlaylistTest::ExampleL ),
+        //ADD NEW ENTRY HERE
+        ENTRY( "CreateUtilityNewPlaylist", CMPXCollectionPlaylistTest::CreateUtilityNewPlaylist ),
+        ENTRY( "CreateUtilityPlaylistExist", CMPXCollectionPlaylistTest::CreateUtilityPlaylistExist ),
+        ENTRY( "CreateUtilityCollectionPath", CMPXCollectionPlaylistTest::CreateUtilityCollectionPath ),
+        ENTRY( "CreateUtilityCollectionStream", CMPXCollectionPlaylistTest::CreateUtilityCollectionStream ),
+        ENTRY( "CopyContentL", CMPXCollectionPlaylistTest::CopyContentL ),
+        ENTRY( "Next", CMPXCollectionPlaylistTest::Next ),
+        ENTRY( "Previous", CMPXCollectionPlaylistTest::Previous ),
+        ENTRY( "SetToFirst", CMPXCollectionPlaylistTest::SetToFirst ),
+        ENTRY( "SetToLast", CMPXCollectionPlaylistTest::SetToLast ),
+        ENTRY( "SetToIndex", CMPXCollectionPlaylistTest::SetToIndex ),
+        ENTRY( "Count", CMPXCollectionPlaylistTest::Count ),
+        ENTRY( "Levels", CMPXCollectionPlaylistTest::Levels ),
+        ENTRY( "Index", CMPXCollectionPlaylistTest::Index ),
+        ENTRY( "Remote", CMPXCollectionPlaylistTest::Remote ),
+        ENTRY( "RepeatMode", CMPXCollectionPlaylistTest::RepeatMode ),
+        ENTRY( "Shuffle", CMPXCollectionPlaylistTest::Shuffle ),
+        ENTRY( "Path", CMPXCollectionPlaylistTest::Path ),
+        ENTRY( "MediaL", CMPXCollectionPlaylistTest::MediaL ),
+        ENTRY( "SetRepeatMode", CMPXCollectionPlaylistTest::SetRepeatMode ),
+        ENTRY( "SetRepeatEnabled", CMPXCollectionPlaylistTest::SetRepeatEnabled ),
+        ENTRY( "SetShuffleL", CMPXCollectionPlaylistTest::SetShuffleL ),
+        ENTRY( "SetShuffleEnabledL", CMPXCollectionPlaylistTest::SetShuffleEnabledL ),
+        ENTRY( "StreamingL", CMPXCollectionPlaylistTest::StreamingL ),
+        ENTRY( "SetObserver", CMPXCollectionPlaylistTest::SetObserver ),
+        ENTRY( "EmbeddedPlaylist", CMPXCollectionPlaylistTest::EmbeddedPlaylist ),
+        ENTRY( "SetEmbeddedPlaylist", CMPXCollectionPlaylistTest::SetEmbeddedPlaylist ),
+        ENTRY( "SetL", CMPXCollectionPlaylistTest::SetL ),
+        ENTRY( "CancelRequest", CMPXCollectionPlaylistTest::CancelRequest ),
+        ENTRY( "Invalidate", CMPXCollectionPlaylistTest::Invalidate ),
+        ENTRY("NextIndex", CMPXCollectionPlaylistTest::NextIndex ),
+        ENTRY("PathIndex",CMPXCollectionPlaylistTest::PathIndex ),
+        //add function
+        ENTRY("CMPXCollectionPlaylistDestructor",CMPXCollectionPlaylistTest::CMPXCollectionPlaylistDestructor ),//Pass debug added 7,10,2008
+        ENTRY("CMPXCollectionOpenUtilityCreate",CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityCreate ), //Pass debug added 7,10,2008
+        ENTRY( "CMPXCollectionOpenUtilityStartL", CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityStartL ),//Pass added 7,10,2008
+        ENTRY( "CMPXCollectionOpenUtilityStop", CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityStop ),//Pass debug added 7,10,2008 
+        ENTRY( "CMPXCollectionOpenUtilityStartUsingPath", CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityStartUsingPath ),//Pass added 7,10,2008
+        ENTRY( "CMPXCollectionOpenUtilitySetDelay", CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilitySetDelay ),//Pass debug  added 7,10,2008
+        ENTRY( "CMPXCollectionOpenUtilitySetDirection", CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilitySetDirection ),//Pass debug added 7,10,2008
+        ENTRY( "NewLMMPXCollectionUtility", CMPXCollectionPlaylistTest::NewLMMPXCollectionUtility ),//Pass added by 7,10,2008
+        ENTRY( "CMPXCollectionOpenUtilityPathL", CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityPathL ),//Pass debug added 7,10,2008 
+        };
+
+    const TInt count = sizeof( KFunctions ) /
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::HandleCollectionMediaL
+// ---------------------------------------------------------------------------
+//
+void CMPXCollectionPlaylistTest::HandleCollectionMediaL( const CMPXMedia& /*aMedia*/, TInt aError )
+	  {
+	  iLog->Log(_L("CMPXCollectionPlaylistTest::HandleCollectionMediaL: %d"), aError);
+	  }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::HandleCollectionMessage
+// ---------------------------------------------------------------------------
+//
+void CMPXCollectionPlaylistTest::HandleCollectionMessage( CMPXMessage* /*aMsg*/, TInt aError )
+	  {
+	  iLog->Log(_L("CMPXCollectionPlaylistTest::HandleCollectionMessage: %d"), aError);
+	  }
+	
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::HandleOpenL
+// ---------------------------------------------------------------------------
+//
+void CMPXCollectionPlaylistTest::HandleOpenL( const CMPXMedia& /*aEntries*/, TInt /*aIndex*/, TBool /*aComplete*/, TInt aError )
+	  {
+	  iLog->Log(_L("CMPXCollectionPlaylistTest::HandleOpenL: %d"), aError);
+	  }
+	
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::HandleOpenL
+// ---------------------------------------------------------------------------
+//
+void CMPXCollectionPlaylistTest::HandleOpenL( const CMPXCollectionPlaylist& /*aPlaylist*/, TInt aError ) 
+	  {
+	  iLog->Log(_L("CMPXCollectionPlaylistTest::HandleOpenL: %d"), aError);
+	  }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::HandleOpenL
+// ---------------------------------------------------------------------------
+//
+void CMPXCollectionPlaylistTest::HandleCollectionPlaylistChange( TInt aError ) 
+	  {
+	  iLog->Log(_L("CMPXCollectionPlaylistTest::HandleCollectionPlaylistChange: %d"), aError);
+	  }
+	
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::ExampleL
+// Example test method function.
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::ExampleL( CStifItemParser& aItem )
+    {
+
+    // Print to UI
+    _LIT( KMPXCollectionPlaylisttest, "MPXCollectionPlaylistTest" );
+    _LIT( KExample, "In Example" );
+    TestModuleIf().Printf( 0, KMPXCollectionPlaylisttest, 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, KMPXCollectionPlaylisttest,
+                                KParam, i, &string );
+        i++;
+        }
+
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CreateUtilityNewPlaylist
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CreateUtilityNewPlaylist( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CreateUtilityNewPlaylist"));
+    TRAPD(err, iCollectionPlaylist = CMPXCollectionPlaylist::NewL());
+   	iLog->Log(_L("CMPXCollectionPlaylist::NewL returned: %d"), err);
+    iExpectedEvents.Reset();
+    return err;
+    }
+    
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CreateUtilityPlaylistExist
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CreateUtilityPlaylistExist( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CreateUtilityPlaylistExist"));
+    TInt err = KErrNone;
+    CMPXCollectionPlaylist* firstPlaylist = NULL;
+    
+    // Create brand new playlist first
+    TRAP(err, firstPlaylist = CMPXCollectionPlaylist::NewL());
+   	iLog->Log(_L("CMPXCollectionPlaylist::NewL (firstPlaylist) returned: %d"), err);
+   	
+   	if ((err == KErrNone) && firstPlaylist)
+   	    {
+   	    // Pass existing playlist to create another instance of playlist
+   	    TRAP(err, iCollectionPlaylist = CMPXCollectionPlaylist::NewL( *firstPlaylist ));
+   	    iLog->Log(_L("CMPXCollectionPlaylist::NewL returned: %d"), err);
+   	    }
+   	    
+   	if (firstPlaylist)
+   	    {   	
+   	    delete firstPlaylist;
+        }
+   	
+    iExpectedEvents.Reset();
+    return err;
+    }    
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CreateUtilityCollectionPath
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CreateUtilityCollectionPath( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CreateUtilityCollectionPath"));
+    TInt err = KErrNone;
+
+    TRAP(err, BuildCollectionPathL());
+   	if ((err == KErrNone) && iCollectionPath)
+   	    {
+   	    // Pass existing collection path to create playlist
+   	    TRAP(err, iCollectionPlaylist = CMPXCollectionPlaylist::NewL( *iCollectionPath ));
+   	    iLog->Log(_L("CMPXCollectionPlaylist::NewL returned: %d"), err);
+   	    }
+   	    
+    iExpectedEvents.Reset();
+    return err;
+    }    
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CreateUtilityCollectionStream
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CreateUtilityCollectionStream( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CreateUtilityCollectionStream"));
+    TInt err = KErrNone;
+    CMPXCollectionPlaylist* firstPlaylist = NULL;
+    
+    // Create brand new playlist first
+    TRAP(err, firstPlaylist = CMPXCollectionPlaylist::NewL());
+    iLog->Log(_L("CMPXCollectionPlaylist::NewL (firstPlaylist) returned: %d"), err);
+
+    if ((err == KErrNone) && firstPlaylist)
+        {
+        // Pass stream to create another instance of playlist
+        CBufBase* buffer;
+        TRAP(err,buffer = CBufFlat::NewL( 200 )); 
+        CleanupStack::PushL( buffer );
+        RBufWriteStream writeStream( *buffer );
+        CleanupClosePushL( writeStream );
+        TRAP( err,firstPlaylist->ExternalizeL( writeStream ));
+        TRAP( err,writeStream.CommitL());
+        buffer->Compress();
+        CleanupStack::PopAndDestroy( &writeStream );
+
+        RBufReadStream readStream( *buffer );
+        CleanupClosePushL( readStream );     
+        TRAP( err,iCollectionPlaylist = CMPXCollectionPlaylist::NewL(readStream));
+        iLog->Log(_L("CMPXCollectionPlaylist::NewL returned: %d"), err);
+        CleanupStack::PopAndDestroy( &readStream );
+        CleanupStack::PopAndDestroy( buffer );
+}
+    if (firstPlaylist)
+   	    {   	
+   	    delete firstPlaylist;
+        } 
+    iExpectedEvents.Reset();
+     
+    return err;
+    }    
+    
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CopyContentL
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CopyContentL( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CopyContentL"));
+
+    TInt err = KErrNone;
+    CMPXCollectionPlaylist* anotherPlaylist = NULL;
+    
+    // Create another playlist to copy content from
+    TRAP(err, anotherPlaylist = CMPXCollectionPlaylist::NewL());
+   	iLog->Log(_L("CMPXCollectionPlaylist::NewL (anotherPlaylist) returned: %d"), err);
+   	
+   	if ((err == KErrNone) && anotherPlaylist)
+   	    {
+   	    anotherPlaylist->CopyContentL (*iCollectionPlaylist);
+   	    if ((iCollectionPlaylist->RepeatMode() == anotherPlaylist->RepeatMode()) &&
+            (iCollectionPlaylist->Shuffle() == anotherPlaylist->Shuffle()) &&
+            (iCollectionPlaylist->Remote() == anotherPlaylist->Remote()) &&
+            (iCollectionPlaylist->Count() == anotherPlaylist->Count()) &&
+            (iCollectionPlaylist->Levels() == anotherPlaylist->Levels()) &&
+            (iCollectionPlaylist->Index() == anotherPlaylist->Index()) &&
+            (iCollectionPlaylist->EmbeddedPlaylist() == anotherPlaylist->EmbeddedPlaylist()))
+            {
+            err = KErrNone;
+            iLog->Log(_L("CMPXCollectionPlaylistTest::CopyContentL copy OK"));
+            }
+        else
+            {
+            err = KErrGeneral;
+            iLog->Log(_L("CMPXCollectionPlaylistTest::CopyContentL copy FAIL"));
+            }
+   	    }
+   	    
+   	if (anotherPlaylist)
+   	    {   	
+   	    delete anotherPlaylist;
+        }    
+    
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::Next
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::Next( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::Next"));
+    TInt err = KErrNone;
+    TInt vRepeatIgnored;
+    TBool vRetNext;
+
+	  if ((KErrNone == aItem.GetNextInt(vRepeatIgnored)) &&
+	      (vRepeatIgnored >= EFalse) && (vRepeatIgnored <= ETrue))
+		    {
+		    vRetNext = iCollectionPlaylist->Next (vRepeatIgnored);
+		    iLog->Log(_L("CMPXCollectionPlaylist::Next returned: %d"), vRetNext);
+		    }
+  	else
+		    {
+		    iLog->Log(_L("CMPXCollectionPlaylistTest::Next: Bad parameter on config file"));
+		    err = KErrBadTestParameter;
+		    }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::Previous
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::Previous( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::Previous"));
+    TInt err = KErrNone;
+    TBool vRepeatIgnored;
+    TBool vRetNext;
+
+	  if ((KErrNone == aItem.GetNextInt(vRepeatIgnored)) &&
+	      (vRepeatIgnored >= EFalse) && (vRepeatIgnored <= ETrue))
+		    {
+		    vRetNext = iCollectionPlaylist->Previous (vRepeatIgnored);
+		    iLog->Log(_L("CMPXCollectionPlaylist::Previous returned: %d"), vRetNext);
+		    }
+  	else
+		    {
+		    iLog->Log(_L("CMPXCollectionPlaylistTest::Previous: Bad parameter on config file"));
+		    err = KErrBadTestParameter;
+		    }
+    return err;
+    }
+    
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::SetToFirst
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::SetToFirst( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::SetToFirst"));
+    TInt err = KErrNone;
+    iCollectionPlaylist->SetToFirst();
+    iLog->Log(_L("CMPXCollectionPlaylist::SetToFirst OK"));
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::SetToLast
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::SetToLast( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::SetToLast"));
+    TInt err = KErrNone;
+    iCollectionPlaylist->SetToLast();
+    iLog->Log(_L("CMPXCollectionPlaylist::SetToLast OK"));
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::SetToIndex
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::SetToIndex( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::SetToIndex"));
+    TInt err = KErrNone;
+    TInt vIndex;
+	  if ( KErrNone == aItem.GetNextInt(vIndex) )
+		    {
+		    TInt vCount = iCollectionPlaylist->Count();
+		    iLog->Log(_L("CMPXCollectionPlaylist::Count returned: %d"), vCount);
+		    if ((vCount > 0) && (vIndex < vCount))
+		        {
+		        iCollectionPlaylist->SetToIndex (vIndex);
+		        iLog->Log(_L("CMPXCollectionPlaylist::SetToIndex OK"));
+		        }
+		    else
+		        {
+		        iLog->Log(_L("CMPXCollectionPlaylist::SetToIndex FAIL"));
+		        }
+		    }
+  	else
+		    {
+		    iLog->Log(_L("CMPXCollectionPlaylistTest::SetToIndex: Bad parameter on config file"));
+		    err = KErrBadTestParameter;
+		    }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::Count
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::Count( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::Count"));
+    TInt err = KErrNone;
+    TInt vCount = iCollectionPlaylist->Count();
+		iLog->Log(_L("CMPXCollectionPlaylist::Count returned: %d"), vCount);
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::Levels
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::Levels( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::Levels"));
+    TInt err = KErrNone;
+    TInt vLevels = iCollectionPlaylist->Levels();
+		iLog->Log(_L("CMPXCollectionPlaylist::Levels returned: %d"), vLevels);
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::Index
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::Index( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::Index"));
+    TInt err = KErrNone;
+    TInt vIndex = iCollectionPlaylist->Index();
+		iLog->Log(_L("CMPXCollectionPlaylist::Index returned: %d"), vIndex);
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::Remote
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::Remote( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::Remote"));
+    TInt err = KErrNone;
+    TBool vIsCollectionStoredInRemoteDevice = iCollectionPlaylist->Remote();
+		iLog->Log(_L("CMPXCollectionPlaylist::Remote returned: %d"), vIsCollectionStoredInRemoteDevice);
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::RepeatMode
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::RepeatMode( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::RepeatMode"));
+    TInt err = KErrNone;
+    TInt vRepeatMode = iCollectionPlaylist->RepeatMode();
+		iLog->Log(_L("CMPXCollectionPlaylist::RepeatMode returned: %d"), vRepeatMode);
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::Shuffle
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::Shuffle( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::Shuffle"));
+    TInt err = KErrNone;
+    TBool vIsShuffleOn = iCollectionPlaylist->Shuffle();
+		iLog->Log(_L("CMPXCollectionPlaylist::Shuffle returned: %d"), vIsShuffleOn);
+    return err;    	
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::Path
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::Path( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::Path"));
+    TInt err = KErrNone;
+//    CMPXCollectionPath& vPath = (CMPXCollectionPath&)iCollectionPlaylist->Path();
+    TRAP(err,iCollectionPlaylist->Path());
+    if ( err != KErrNone )
+            	{
+            	iLog->Log(_L("Path returned: %d"), err);
+            	}
+//    iLog->Log(_L("CMPXCoiCollectionPlaylist->Path()llectionPlaylist::Path returned: %d"), vPath);
+
+
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::MediaL
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::MediaL( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::MediaL"));
+    TInt err = KErrNone;
+//    CDesCArrayFlat* aLinkArray = new (ELeave) CDesCArrayFlat(1);
+    RArray<TMPXAttribute> attrs;
+        CleanupClosePushL( attrs );
+//        attrs.Append( KMPXMediaGeneralTitle );
+//        TArray<TMPXAttribute>& ary = attrs.Array();
+//    TArray<TMPXAttribute>& aAttrs=new (ELeave) TArray<TMPXAttribute> ;
+    TRAP(err, iCollectionPlaylist->MediaL(attrs.Array(),*this));
+    CleanupStack::PopAndDestroy( &attrs );
+    if ( err != KErrNone )
+        	{
+        	iLog->Log(_L("MediaL returned: %d"), err);
+        	}
+    return err;    	
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::SetRepeatMode
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::SetRepeatMode( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::SetRepeatMode"));
+    TInt err = KErrNone;
+    TInt vRepeatMode;
+	  if ((KErrNone == aItem.GetNextInt(vRepeatMode)) &&
+	      (vRepeatMode >= CMPXCollectionPlaylist::ERepeatOff) && (vRepeatMode <= CMPXCollectionPlaylist::ERepeatAll))
+		    {
+		    iCollectionPlaylist->SetRepeatMode ((CMPXCollectionPlaylist::TRepeatMode) vRepeatMode);
+		    iLog->Log(_L("CMPXCollectionPlaylist::SetRepeatMode OK"));
+		    }
+  	else
+		    {
+		    iLog->Log(_L("CMPXCollectionPlaylistTest::SetRepeatMode: Bad parameter on config file"));
+		    err = KErrBadTestParameter;
+		    }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::SetRepeatEnabled
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::SetRepeatEnabled( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::SetRepeatEnabled"));
+    TInt err = KErrNone;
+    TInt vRepeatEnabled;
+	  if ((KErrNone == aItem.GetNextInt(vRepeatEnabled)) &&
+	      (vRepeatEnabled >= EFalse) && (vRepeatEnabled <= ETrue))
+		    {
+		    iCollectionPlaylist->SetRepeatEnabled (vRepeatEnabled);
+		    iLog->Log(_L("CMPXCollectionPlaylist::SetRepeatEnabled OK"));
+		    }
+  	else
+		    {
+		    iLog->Log(_L("CMPXCollectionPlaylistTest::SetRepeatEnabled: Bad parameter on config file"));
+		    err = KErrBadTestParameter;
+		    }
+    return err;    	
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::SetShuffleL
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::SetShuffleL( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::SetShuffleL"));
+    TInt err = KErrNone;
+    TInt vShuffle;
+    TInt vCurrentToTop;
+	  if ((KErrNone == aItem.GetNextInt(vShuffle)) &&
+	      (vShuffle >= 0) && (vShuffle <=1))
+		    {
+		    if ((KErrNone == aItem.GetNextInt(vCurrentToTop)) &&
+		        (vCurrentToTop >= EFalse) && (vCurrentToTop <= ETrue))
+		        {
+		        TRAP (err, iCollectionPlaylist->SetShuffleL (vShuffle, vCurrentToTop));
+		        if (err != KErrNone)
+		            {
+		        	  iLog->Log(_L("CMPXCollectionPlaylist::SetShuffleL leave with error: %d"), err);
+		            }
+		        else
+		            {
+		            iLog->Log(_L("CMPXCollectionPlaylist::SetShuffleL OK"));
+		            }
+		        }
+		    else
+		        {
+		        iLog->Log(_L("CMPXCollectionPlaylistTest::SetShuffleL: Bad second parameter on config file"));
+		        err = KErrBadTestParameter;
+		        }
+		    }
+  	else
+		    {
+		    iLog->Log(_L("CMPXCollectionPlaylistTest::SetShuffleL: Bad first parameter on config file"));
+		    err = KErrBadTestParameter;
+		    }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::SetShuffleEnabledL
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::SetShuffleEnabledL( CStifItemParser& aItem )
+    {
+	  iLog->Log(_L("CMPXCollectionPlaylistTest::SetShuffleEnabledL"));
+    TInt err = KErrNone;
+    TInt vShuffleEnabled;
+	  if ((KErrNone == aItem.GetNextInt(vShuffleEnabled)) &&
+	      (vShuffleEnabled >= EFalse) && (vShuffleEnabled <= ETrue))
+		    {
+		    TRAP (err, iCollectionPlaylist->SetShuffleEnabledL (vShuffleEnabled));
+		    if (err != KErrNone)
+		        {
+		    	  iLog->Log(_L("CMPXCollectionPlaylist::SetShuffleEnabledL leave with error: %d"), err);
+		        }
+		    else
+		        {
+		        iLog->Log(_L("CMPXCollectionPlaylist::SetShuffleEnabledL OK"));
+		        }
+		    }
+  	else
+		    {
+		    iLog->Log(_L("CMPXCollectionPlaylistTest::SetShuffleEnabledL: Bad parameter on config file"));
+		    err = KErrBadTestParameter;
+		    }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::StreamingL
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::StreamingL( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::StreamingL"));
+    TInt err = KErrNone;
+
+    iLog->Log(_L("Start ExternalizeL"));
+    CBufBase* buffer = CBufFlat::NewL( 200 );
+    CleanupStack::PushL( buffer );
+    RBufWriteStream writeStream( *buffer );
+    CleanupClosePushL( writeStream );
+    iCollectionPlaylist->ExternalizeL( writeStream );
+    writeStream.CommitL();
+    buffer->Compress();
+    CleanupStack::PopAndDestroy( &writeStream );
+
+    iLog->Log(_L("Start InternalizeL"));
+    RBufReadStream readStream( *buffer );
+    CleanupClosePushL( readStream );                
+    CMPXCollectionPlaylist* collPlaylist = CMPXCollectionPlaylist::NewL();
+    CleanupStack::PushL( collPlaylist );
+    collPlaylist->InternalizeL( readStream );
+
+    CleanupStack::PopAndDestroy( collPlaylist );
+    CleanupStack::PopAndDestroy( &readStream );
+    CleanupStack::PopAndDestroy( buffer );
+return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::SetObserver
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::SetObserver( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::SetObserver"));
+    TInt err = KErrNone;
+    MMPXCollectionPlaylistObserver* aPlObs(NULL) ;
+    MMPXCollectionObserver* aCollectionObs(NULL) ;
+    TRAP(err,iCollectionPlaylist->SetObserver(*this,aPlObs,aCollectionObs));
+    if ( err != KErrNone )
+               	{
+               	iLog->Log(_L("SetObserver returned: %d"), err);
+               	}
+    return err;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::EmbeddedPlaylist
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::EmbeddedPlaylist( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::EmbeddedPlaylist"));
+    TInt err = KErrNone;
+    TBool vIsEmbeddedPlaylist = iCollectionPlaylist->EmbeddedPlaylist();
+		iLog->Log(_L("CMPXCollectionPlaylist::EmbeddedPlaylist returned: %d"), vIsEmbeddedPlaylist);
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::SetEmbeddedPlaylist
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::SetEmbeddedPlaylist( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::SetEmbeddedPlaylist"));
+    TInt err = KErrNone;
+    TInt vEmbeddedPlaylist;
+	  if ((KErrNone == aItem.GetNextInt(vEmbeddedPlaylist)) &&
+	      (vEmbeddedPlaylist >= EFalse) && (vEmbeddedPlaylist <= ETrue))
+		    {
+		    iCollectionPlaylist->SetEmbeddedPlaylist (vEmbeddedPlaylist);
+		    iLog->Log(_L("CMPXCollectionPlaylist::SetEmbeddedPlaylist OK"));
+		    }
+  	else
+		    {
+		    iLog->Log(_L("CMPXCollectionPlaylistTest::SetEmbeddedPlaylist: Bad parameter on config file"));
+		    err = KErrBadTestParameter;
+		    }
+    return err;
+    }
+    
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::SetL
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::SetL( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::SetL"));
+    TInt err = KErrNone;
+    
+    CMPXMedia* media = CMPXMedia::NewL();
+    CleanupStack::PushL( media );
+    media->SetTObjectValueL<TUid>( KMPXMediaGeneralCollectionId, TUid::Uid(0xabcdef) );
+    TRAP(err,iCollectionPlaylist->SetL( *media ));
+    CleanupStack::PopAndDestroy( media );
+
+    if ( err != KErrNone )
+            	{
+            	iLog->Log(_L("SetL returned: %d"), err);
+            	}
+    return err;
+    }
+    
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CancelRequest
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CancelRequest( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CancelRequest"));
+    TInt err = KErrNone;
+    iCollectionPlaylist->CancelRequest();
+    iLog->Log(_L("CMPXCollectionPlaylist::CancelRequest OK"));
+    return err;
+    }
+    
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::Invalidate
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::Invalidate( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::Invalidate"));
+    TInt err = KErrNone;
+    iCollectionPlaylist->Invalidate();
+    iLog->Log(_L("CMPXCollectionPlaylist::Invalidate OK"));
+    return err;
+    }
+               
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::NextIndex
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::NextIndex( CStifItemParser& aItem )
+    {
+        iLog->Log(_L("CMPXCollectionPlaylistTest::NextIndex"));
+        TInt err = KErrNone;
+        TInt vRepeatIgnored;
+        TBool vRetNext;
+        TInt aPlaylistIndex;
+    	  if ((KErrNone == aItem.GetNextInt(vRepeatIgnored)) &&
+    	      (vRepeatIgnored >= EFalse) && (vRepeatIgnored <= ETrue))
+    		    {
+    		    vRetNext = iCollectionPlaylist->NextIndex(vRepeatIgnored ,aPlaylistIndex);
+    		    iLog->Log(_L("CMPXCollectionPlaylist::NextIndex returned: %d"), vRetNext);
+    		    }
+      	else
+    		    {
+    		    iLog->Log(_L("CMPXCollectionPlaylistTest::NextIndex: Bad parameter on config file"));
+    		    err = KErrBadTestParameter;
+    		    }
+        return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::PathIndex
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::PathIndex( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::PathIndex"));
+    TInt err = KErrNone;
+    TInt err1 = KErrNone;
+    TInt vRepeatIgnored;
+    TBool vRetNext;
+    TInt aPlaylistIndex;
+	  if ((KErrNone == aItem.GetNextInt(vRepeatIgnored)) &&
+	      (vRepeatIgnored >= EFalse) && (vRepeatIgnored <= ETrue))
+		    {
+		    vRetNext = iCollectionPlaylist->NextIndex(vRepeatIgnored ,aPlaylistIndex);
+//		    vRetNext = iCollectionPlaylist->Next(vRepeatIgnored );
+		    err1 = iCollectionPlaylist->PathIndex( aPlaylistIndex );
+		    iLog->Log(_L("CMPXCollectionPlaylist::NextIndex returned: %d"), vRetNext);
+		    iLog->Log(_L("CMPXCollectionPlaylist::PathIndex returned: %d"), err1);
+		    		    
+		    }
+  	else
+		    {
+		    iLog->Log(_L("CMPXCollectionPlaylistTest::PathIndex: Bad parameter on config file"));
+		    err = KErrBadTestParameter;
+		    }
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CMPXCollectionPlaylistDestructor
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CMPXCollectionPlaylistDestructor( CStifItemParser& /*aItem*/ )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CMPXCollectionPlaylistDestructor"));
+    TInt err = KErrNone;
+    if( iCollectionPlaylist != NULL )
+        {
+		    delete	 iCollectionPlaylist;
+		    iCollectionPlaylist = NULL;
+        }
+    if( iCollectionPlaylist != NULL )
+    	{
+    	    iLog->Log(_L("CMPXCollectionPlaylist::CMPXCollectionPlaylistDestructor err="),err);
+    	}
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityCreate
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityCreate( CStifItemParser& /*aItem*/ )
+    {
+    TInt err = KErrNone;
+    
+    MMPXCollectionObserver* aObs(NULL);
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityCreate"));
+    TRAP( err , iCollectionOpenUtility=CMPXCollectionOpenUtility::NewL(aObs));
+    if( iCollectionOpenUtility != NULL )
+    	{
+	    delete iCollectionOpenUtility;
+	    iCollectionOpenUtility = NULL;
+    	}
+   	iLog->Log(_L("CMPXCollectionOpenUtility::NewL returned: %d"), err);
+    return err;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityStartL
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityStartL( CStifItemParser&  )
+    {
+       iLog->Log(_L("CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityStartL"));
+       TInt err = KErrNone;
+       RArray<TMPXAttribute> aAttrs;
+       CleanupClosePushL( aAttrs );
+       TMPXAttribute attribut = TMPXAttribute();
+       aAttrs.AppendL(attribut);
+       TInt aChunkSize=0;
+       TRAP( err , iCollectionPlaylist = CMPXCollectionPlaylist::NewL());
+       CMPXCollectionOpenUtility* utility;
+       TRAP( err , utility = CMPXCollectionOpenUtility::NewL(iCollectionPlaylist,KMcModeDefault));
+       TRAP( err , utility->StartL(aAttrs.Array(),aChunkSize));
+       delete utility;
+       utility = NULL;
+       CleanupStack::PopAndDestroy( &aAttrs );
+       iLog->Log(_L("CMPXCollectionOpenUtility::CMPXCollectionOpenUtilityStartL err: %d"),err);
+       return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityPathL
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityPathL( CStifItemParser& /*aItem*/)
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityPathL"));
+    TInt err = KErrNone;
+    TRAP( err , iCollectionPlaylist = CMPXCollectionPlaylist::NewL());
+    CMPXCollectionOpenUtility* utility;
+    TRAP( err , utility = CMPXCollectionOpenUtility::NewL(iCollectionPlaylist,KMcModeDefault));
+    
+    TRAP( err ,iCollectionPath = utility->PathL());
+    
+    if ( utility != NULL )
+    	{
+		    delete utility;
+		    utility = NULL;
+    	}
+    iLog->Log(_L("CMPXCollectionPlaylist::CMPXCollectionOpenUtilityPathL OK"));
+    return err;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityStop
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityStop( CStifItemParser& /*aItem*/)
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityStop"));
+    TInt err = KErrNone;
+    TRAP( err , iCollectionPlaylist = CMPXCollectionPlaylist::NewL());
+    CMPXCollectionOpenUtility* utility;
+    TRAP( err , utility = CMPXCollectionOpenUtility::NewL(iCollectionPlaylist,KMcModeDefault));
+    
+    TRAP( err , utility->Stop());
+    if ( utility != NULL )
+    	{
+		    delete utility;
+		    utility = NULL;
+    	}
+    iLog->Log(_L("CMPXCollectionPlaylist::CMPXCollectionOpenUtilityStop return err: %d"),err);
+    return err;
+    }
+
+
+
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilitySetDelay
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilitySetDelay( CStifItemParser& /*aItem*/)
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilitySetDelay"));
+    TInt err = KErrNone;
+    TRAP( err , iCollectionPlaylist = CMPXCollectionPlaylist::NewL());
+    CMPXCollectionOpenUtility* utility;
+    TRAP( err , utility = CMPXCollectionOpenUtility::NewL(iCollectionPlaylist,KMcModeDefault));
+
+    TInt delay = 10;
+    TRAP( err , utility->SetDelay(delay));
+    if(err != KErrNone)
+       {
+       iLog->Log(_L("CMPXCollectionPlaylist::CMPXCollectionOpenUtilitySetDelay does not work right"));
+       delete utility;
+       utility = NULL;
+       return err;
+       }
+    if ( utility != NULL )
+        	{
+    		    delete utility;
+    		    utility = NULL;
+        	}
+    iLog->Log(_L("CMPXCollectionPlaylist::CMPXCollectionOpenUtilitySetDelay OK"));
+    return err;
+    }
+
+
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityStartUsingPath
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityStartUsingPath( CStifItemParser& aItem )
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilityStartUsingPath"));
+    TInt err = KErrNone;
+
+    TUint itemId;        
+    // read in parameters
+    if ( aItem.GetNextInt(itemId) )
+       {
+       iLog->Log(_L("Missing Parameter: ItemId."));
+       return KErrBadTestParameter;
+       }
+    
+         const TMPXItemId KMPXPathItem1 = 44441;
+         RArray<TMPXItemId> itemIdArray;
+
+         // Start from scratch
+         if ( iCollectionPath )
+             {
+             iCollectionPath->Reset();
+             delete iCollectionPath;
+             }
+         // build collection path
+         TRAP( err , iCollectionPath = CMPXCollectionPath::NewL());
+         TMPXItemId item(itemId);
+         TRAP( err , iCollectionPath->AppendL(item));
+         itemIdArray.Append(KMPXPathItem1);
+         TRAP( err , iCollectionPath->AppendL(itemIdArray.Array()));
+         
+         itemIdArray.Close();
+   
+         
+    CMPXCollectionPath* path;
+    TRAP( err , path = CMPXCollectionPath::NewL(*iCollectionPath));
+    
+    RArray<TMPXAttribute> aAttrs;   
+    aAttrs.Append(KMPXMediaGeneralTitle); 
+   	TInt aChunkSize=0;
+   	
+   	TInt aOffset = 0;
+   	CMPXCollectionOpenUtility::TDirection direction = CMPXCollectionOpenUtility::EFetchNormal;
+   	TMPXAttribute aKeyAttribute = KMPXMediaNullAttribute ;
+   	
+   	TRAP( err , iCollectionPlaylist = CMPXCollectionPlaylist::NewL());
+    CMPXCollectionOpenUtility* utility;
+    TRAP( err , utility = CMPXCollectionOpenUtility::NewL(iCollectionPlaylist,KMcModeIsolated/*KMcModeDefault*/));
+    TRAP( err , utility->StartL(*path,aAttrs.Array(),aChunkSize,aOffset,direction,aKeyAttribute));
+    delete utility;
+    utility = NULL;
+    delete path;
+    aAttrs.Close();
+    iLog->Log(_L("CMPXCollectionOpenUtility::CMPXCollectionOpenUtilityStartUsingPath err: %d"),err);
+    return err;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilitySetDirection
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilitySetDirection( CStifItemParser& /*aItem*/)
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::CMPXCollectionOpenUtilitySetDirection"));
+    TInt err = KErrNone;
+    TRAP( err , iCollectionPlaylist = CMPXCollectionPlaylist::NewL());
+    CMPXCollectionOpenUtility* utility;
+    TRAP( err ,  utility = CMPXCollectionOpenUtility::NewL(iCollectionPlaylist,KMcModeDefault));    
+    CMPXCollectionOpenUtility::TDirection direction = CMPXCollectionOpenUtility::EFetchNormal;
+    TRAP( err , utility->SetDirection(direction));
+    if( err != KErrNone )
+       {
+       iLog->Log(_L("CMPXCollectionPlaylist::CMPXCollectionOpenUtilitySetDirection does not work right"));
+       delete utility;
+       utility = NULL;
+       return err;
+       }
+    delete utility;
+    utility = NULL;
+    iLog->Log(_L("CMPXCollectionPlaylist::CMPXCollectionOpenUtilitySetDirection return err: %d"),err);
+    return err;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMPXCollectionPlaylistTest::NewLMMPXCollectionUtility
+// ?implementation_description
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TInt CMPXCollectionPlaylistTest::NewLMMPXCollectionUtility( CStifItemParser& /*aItem*/)
+    {
+    iLog->Log(_L("CMPXCollectionPlaylistTest::NewLMMPXCollectionUtility"));
+    TInt err = KErrNone;
+    TRAP( err,iCollectionPlaylist = CMPXCollectionPlaylist::NewL());
+    MMPXCollectionUtility* collectionUtility;
+    TRAP( err ,  collectionUtility = MMPXCollectionUtility::NewL(iCollectionPlaylist,KMcModeDefault));
+    collectionUtility->Close();
+    iLog->Log(_L("CMPXCollectionPlaylist::NewLMMPXCollectionUtility OK"));
+    return err;
+    }
+