videocollection/mpxmyvideoscollection/tsrc/ut_vcxmyvideoscollectionutiltest/src/VcxMyVideosCollectionUtilTestBlocks.cpp
branchRCL_3
changeset 16 67eb01668b0e
parent 15 8f0df5c82986
--- a/videocollection/mpxmyvideoscollection/tsrc/ut_vcxmyvideoscollectionutiltest/src/VcxMyVideosCollectionUtilTestBlocks.cpp	Tue May 25 12:44:54 2010 +0300
+++ b/videocollection/mpxmyvideoscollection/tsrc/ut_vcxmyvideoscollectionutiltest/src/VcxMyVideosCollectionUtilTestBlocks.cpp	Wed Jun 09 09:44:23 2010 +0300
@@ -22,6 +22,8 @@
 #include <vcxmyvideosdefs.h>
 #include <mpxmedia.h>
 #include <mpxattribute.h>
+#include <mpxmediaarray.h>
+#include <mpxmediacontainerdefs.h>
 #include <mpxmediageneraldefs.h>
 #include <mpxmediavideodefs.h>
 #include "VcxMyVideosCollectionUtilTest.h"
@@ -53,28 +55,7 @@
 // FORWARD DECLARATIONS
 //class ?FORWARD_CLASSNAME;
 
-// ============================= LOCAL FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// ?function_name ?description.
-// ?description
-// Returns: ?value_1: ?description
-//          ?value_n: ?description_line1
-//                    ?description_line2
-// -----------------------------------------------------------------------------
-//
-/*
-?type ?function_name(
-    ?arg_type arg,  // ?description
-    ?arg_type arg)  // ?description
-    {
-
-    ?code  // ?comment
-
-    // ?comment
-    ?code
-    }
-*/
+const TMPXAttributeData KMPXMediaFail={0xC0FFEE,0xBADBEEF};
 
 // ============================ MEMBER FUNCTIONS ===============================
 
@@ -106,6 +87,7 @@
         ENTRY( "CreateEmptyMediaList", CVcxMyVideosCollectionUtilTest::CreateEmptyMediaListL ),
         ENTRY( "CreateEmptyMessageList", CVcxMyVideosCollectionUtilTest::CreateEmptyMessageListL ),
         ENTRY( "CopyFromListToList", CVcxMyVideosCollectionUtilTest::CopyFromListToListL ),
+        ENTRY( "CopyFromListToList2", CVcxMyVideosCollectionUtilTest::CopyFromListToListL2 ),
         ENTRY( "DriveLetter2DriveNumber", CVcxMyVideosCollectionUtilTest::DriveLetter2DriveNumberL ),
         ENTRY( "MakeUniqueFileName", CVcxMyVideosCollectionUtilTest::MakeUniqueFileNameL ),
         ENTRY( "Origin", CVcxMyVideosCollectionUtilTest::OriginL ),
@@ -142,6 +124,9 @@
     {
     CMPXMedia* media = TVcxMyVideosCollectionUtil::CreateEmptyMediaListL();
     delete media;
+    
+    // Only thing that can fail here is method call leaves. If we reach the end
+    // everyting has worked fine and we can return ok.
     return KErrNone;
     }
 
@@ -153,6 +138,9 @@
     {
     CMPXMedia* media = TVcxMyVideosCollectionUtil::CreateEmptyMessageListL();
     delete media;
+    
+    // Only thing that can fail here is method call leaves. If we reach the end
+    // everyting has worked fine and we can return ok.    
     return KErrNone;
     }
 
@@ -164,7 +152,13 @@
     {
     CMPXMedia* from = TVcxMyVideosCollectionUtil::CreateEmptyMediaListL();
     CMPXMedia* to = TVcxMyVideosCollectionUtil::CreateEmptyMediaListL();
+    CMPXMedia* failList = CMPXMedia::NewL();
+    CMPXMedia* media( NULL );
+    TInt itemsToCopy( 0 );
+    TInt itemsCopied( 0 );
     RArray<TUint32> ids;
+    TMPXItemId idGet;
+    TInt retVal( KErrGeneral );
     
     TInt numberOfMedia;
     TInt wantedId;
@@ -175,26 +169,198 @@
     ids.Append( wantedId );
     
     // add stuff to be copied to "from" -list
+    CleanupStack::PushL( from );
+    CleanupStack::PushL( to );
+    CMPXMediaArray* fromMessageArray = from->Value<CMPXMediaArray>(
+            KMPXMediaArrayContents );
+    CleanupStack::PushL( fromMessageArray );
     
+    TVcxMyVideosCollectionUtil::CopyFromListToListL( *from, *to, ids );
+    
+    for(TInt i = 0; i < numberOfMedia; i++ )
+        {
+        media = CMPXMedia::NewL();
+        CleanupStack::PushL( media );
+        media->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId,
+                TMPXItemId( i, i) );
+        media->SetTObjectValueL<TInt32>( KVcxMediaMyVideosInt32Value,
+                42 );        
+        fromMessageArray->AppendL( media );
+        if( i == wantedId )
+            {
+            itemsToCopy++;
+            }
+        CleanupStack::Pop( media );
+        }
+    
+    TRAPD( err, TVcxMyVideosCollectionUtil::CopyFromListToListL( *from, *failList, ids ) );    
+    if( err != KErrArgument )    
+        {
+        CleanupStack::Pop( fromMessageArray );
+        CleanupStack::Pop( to );
+        CleanupStack::Pop( from );        
+        fromMessageArray->Reset();
+        delete failList;
+        delete from;
+        delete to; 
+        return retVal;
+        }
     
     TVcxMyVideosCollectionUtil::CopyFromListToListL( *from, *to, ids );
     
     // check that the "to" -list have the items it should have
+    CMPXMediaArray* toMessageArray = to->Value<CMPXMediaArray>(
+                KMPXMediaArrayContents );
+    CleanupStack::PushL( toMessageArray );
     
+    for( TInt i = 0; i < toMessageArray->Count(); i++ )
+        {        
+        idGet = TVcxMyVideosCollectionUtil::IdL( *(toMessageArray->operator[](i)) );
+        if( idGet.iId1 == wantedId )
+            {
+            itemsCopied++;
+            }
+        }    
+    
+    if( itemsCopied == itemsToCopy )
+        {
+        retVal = KErrNone;  
+        }
+    
+    CleanupStack::Pop( toMessageArray );
+    CleanupStack::Pop( fromMessageArray );
+    CleanupStack::Pop( to );
+    CleanupStack::Pop( from );
+    
+    toMessageArray->Reset();
+    fromMessageArray->Reset();
+    
+    delete failList;
     delete from;
-    delete to;
+    delete to;    
+    return retVal;
+    }
+
+// ---------------------------------------------------------------------------
+// CVcxMyVideosCollectionUtilTest::CopyFromListToListL2
+// ---------------------------------------------------------------------------
+//
+TInt CVcxMyVideosCollectionUtilTest::CopyFromListToListL2( CStifItemParser& aItem )
+    {
+    RArray<CMPXMedia*> fromArray;
+    CMPXMedia* to = TVcxMyVideosCollectionUtil::CreateEmptyMediaListL();
+    CMPXMedia* failList = CMPXMedia::NewL();
+    CMPXMedia* media( NULL );        
+    TInt itemsToCopy( 0 );
+    TInt itemsCopied( 0 );
+    RArray<TUint32> ids;
+    TMPXItemId idGet;
+    TInt retVal( KErrGeneral );
+    
+    TInt numberOfMedia;
+    TInt wantedId;
+    
+    aItem.GetNextInt( numberOfMedia );
+    aItem.GetNextInt( wantedId );
+    
+    ids.Append( wantedId );
+    
+    // add stuff to be copied to "from" -list    
+    CleanupStack::PushL( to );    
+    
+    TVcxMyVideosCollectionUtil::CopyFromListToListL( fromArray, *to, ids );
     
-    return KErrNone;
+    for(TInt i = 0; i < numberOfMedia; i++ )
+        {
+        media = CMPXMedia::NewL();
+        CleanupStack::PushL( media );
+        media->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId,
+                TMPXItemId( i, i) );
+        media->SetTObjectValueL<TInt32>( KVcxMediaMyVideosInt32Value,
+                42 );        
+        fromArray.AppendL( media );
+        if( i == wantedId )
+            {
+            itemsToCopy++;
+            }
+        CleanupStack::Pop( media );
+        }    
+    
+    TRAPD(err, TVcxMyVideosCollectionUtil::CopyFromListToListL( fromArray, *failList, ids ));
+    if( err != KErrArgument )    
+        {        
+        CleanupStack::Pop( to );
+        fromArray.Reset();
+        delete failList;
+        delete to; 
+        return retVal;
+        }
+    
+    TVcxMyVideosCollectionUtil::CopyFromListToListL( fromArray, *to, ids );
+    
+    // check that the "to" -list have the items it should have
+    CMPXMediaArray* toMessageArray = to->Value<CMPXMediaArray>(
+                KMPXMediaArrayContents );
+    CleanupStack::PushL( toMessageArray );
+    
+    for( TInt i = 0; i < toMessageArray->Count(); i++ )
+        {        
+        idGet = TVcxMyVideosCollectionUtil::IdL( *(toMessageArray->operator[](i)) );
+        if( idGet.iId1 == wantedId )
+            {
+            itemsCopied++;
+            }
+        }    
+    
+    if( itemsCopied == itemsToCopy )
+        {
+        retVal = KErrNone;  
+        }
+    
+    CleanupStack::Pop( toMessageArray );    
+    CleanupStack::Pop( to );
+        
+    toMessageArray->Reset();
+    
+    for( TInt i = 0; i < fromArray.Count(); i++ )
+        {
+        CMPXMedia* arrayMedia = fromArray[i];
+        delete arrayMedia;        
+        }
+    fromArray.Reset();    
+    delete failList;
+    delete to;    
+    return retVal;
     }
     
 // ---------------------------------------------------------------------------
 // This helper function converts drive letter to drive number
 // ---------------------------------------------------------------------------
 //
-TInt CVcxMyVideosCollectionUtilTest::DriveLetter2DriveNumberL( CStifItemParser& /*aItem*/ )
+TInt CVcxMyVideosCollectionUtilTest::DriveLetter2DriveNumberL( CStifItemParser& aItem )
     {
-    TVcxMyVideosCollectionUtil::DriveLetter2DriveNumber( _L("E:") );
-    return KErrNone;
+    TInt retVal( KErrNone ); 
+    TPtrC string;
+    TInt expectedValue( -1 );
+    
+    aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing );
+    
+    User::LeaveIfError( aItem.GetNextString( string ) );
+    User::LeaveIfError( aItem.GetNextInt( expectedValue ) );
+    
+    _LIT( KNullDescString, "KNullDesC" );
+    if ( string.Compare( KNullDescString ) == 0 )
+        {
+        string.Set( KNullDesC );
+        }
+  
+    TInt driveNumber = TVcxMyVideosCollectionUtil::DriveLetter2DriveNumber( string );
+    if (  driveNumber != expectedValue )
+        {
+        retVal = KErrGeneral;
+        }
+
+    return retVal;
     }
 
 // ---------------------------------------------------------------------------
@@ -203,12 +369,41 @@
 //
 TInt CVcxMyVideosCollectionUtilTest::MakeUniqueFileNameL( CStifItemParser& /*aItem*/ )
     {
+    TInt retVal( KErrNone );
     RFs fs;
     fs.Connect();
     TBuf<KMaxPath> path;
-    TVcxMyVideosCollectionUtil::MakeUniqueFileNameL( fs, _L("c://testframework//testframework.ini"), path );
+    _LIT( KFileName1,   "c:\\data\\vcxmyvideoscollectionutiltest_file.txt" );
+    _LIT( KFileName2,   "c:\\data\\vcxmyvideoscollectionutiltest_file2" );
+    _LIT( KInvalidFile, "c:\\data\\vcxmyvideoscollectionutiltest_DoesNotExist" );
+    
+    // File with filename extension 
+    TVcxMyVideosCollectionUtil::MakeUniqueFileNameL( fs, KFileName1, path );
+    if ( path.Length() <= KFileName1().Length() )
+        {
+        retVal = KErrGeneral;
+        }    
+    
+    // File without filename extension
+    TVcxMyVideosCollectionUtil::MakeUniqueFileNameL( fs, KFileName2, path );
+    if ( ( path.Find( KFileName2 ) == KErrNotFound ) ||
+         ( path.Length() <= KFileName2().Length() ) ) 
+        {
+        retVal = KErrGeneral;
+        }  
+    
+    // Non-existent file
+    TVcxMyVideosCollectionUtil::MakeUniqueFileNameL( fs, KInvalidFile, path );
+    if ( path.Compare( KInvalidFile ) != 0 )
+        {
+        retVal = KErrGeneral;
+        }
+
+    // Null descriptor
+    TVcxMyVideosCollectionUtil::MakeUniqueFileNameL( fs, KNullDesC, path );
+    
     fs.Close();
-    return KErrNone;
+    return retVal;
     }
 
 // ----------------------------------------------------------------------------
@@ -219,9 +414,17 @@
     {
     CMPXMedia* media = CMPXMedia::NewL();
     TInt retVal( KErrNone );
+    TUint8 valueGet = TVcxMyVideosCollectionUtil::OriginL( *media );
+    valueGet = TVcxMyVideosCollectionUtil::OriginL( *media );
+    if( EVcxMyVideosOriginOther != valueGet )
+        {
+        retVal = KErrGeneral;
+        delete media;
+        return retVal;
+        }
     TUint8 valueSet = EVcxMyVideosOriginCapturedWithCamera;
     media->SetTObjectValueL<TUint8>( KVcxMediaMyVideosOrigin, valueSet );
-    TUint8 valueGet = TVcxMyVideosCollectionUtil::OriginL( *media );
+    valueGet = TVcxMyVideosCollectionUtil::OriginL( *media );
     if( valueSet != valueGet )
         {
         retVal = KErrGeneral;
@@ -246,10 +449,17 @@
 TInt CVcxMyVideosCollectionUtilTest::FlagsL( CStifItemParser& /*aItem*/ )
     {
     CMPXMedia* media = CMPXMedia::NewL();
-    TInt retVal( KErrNone );
+    TInt retVal( KErrNone );    
     TUint32 flagsSet( 0xBEEF );
+    TUint32 flagsGet( TVcxMyVideosCollectionUtil::FlagsL( *media ) );
+    if( flagsGet != 0 )
+        {
+        delete media;
+        retVal = KErrGeneral;
+        return retVal;
+        }
     media->SetTObjectValueL<TUint32>( KMPXMediaGeneralFlags, flagsSet );
-    TUint32 flagsGet( TVcxMyVideosCollectionUtil::FlagsL( *media ) );
+    flagsGet= TVcxMyVideosCollectionUtil::FlagsL( *media );
     if( flagsSet != flagsGet )
         {
         retVal = KErrGeneral;
@@ -267,8 +477,15 @@
     CMPXMedia* media = CMPXMedia::NewL();
     TInt retVal( KErrNone );
     TUint32 idSet( 0xBEEF );
+    TUint32 idGet( TVcxMyVideosCollectionUtil::DownloadIdL( *media ) );
+    if( 0 != idGet )
+        {
+        delete media;
+        retVal = KErrGeneral;
+        return retVal;
+        }
     media->SetTObjectValueL<TUint32>( KVcxMediaMyVideosDownloadId, idSet );
-    TUint32 idGet( TVcxMyVideosCollectionUtil::DownloadIdL( *media ) );
+    idGet = TVcxMyVideosCollectionUtil::DownloadIdL( *media );
     if( idSet != idGet )
         {
         retVal = KErrGeneral;
@@ -286,8 +503,15 @@
     CMPXMedia* media = CMPXMedia::NewL();    
     TInt retVal( KErrNone );
     TVcxMyVideosDownloadState stateSet = EVcxMyVideosDlStateFailed;
+    TVcxMyVideosDownloadState stateGet = TVcxMyVideosCollectionUtil::DownloadStateL( *media );    
+    if( EVcxMyVideosDlStateNone != stateGet )
+        {
+        delete media;
+        retVal = KErrGeneral;
+        return retVal;
+        }
     media->SetTObjectValueL<TUint32>( KVcxMediaMyVideosDownloadState, stateSet );
-    TVcxMyVideosDownloadState stateGet = TVcxMyVideosCollectionUtil::DownloadStateL( *media );    
+    stateGet = TVcxMyVideosCollectionUtil::DownloadStateL( *media );    
     if( stateSet != stateGet )
         {
         retVal = KErrGeneral;
@@ -305,8 +529,15 @@
     CMPXMedia* media = CMPXMedia::NewL();
     TInt retVal( KErrNone );
     TMPXItemId idSet( 2, 7 );
+    TMPXItemId idGet = TVcxMyVideosCollectionUtil::IdL( *media );
+    if( (idGet.iId1 != 0) || (idGet.iId2 != 0) )
+        {
+        delete media;
+        retVal = KErrGeneral;
+        return retVal;
+        }
     media->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, idSet );
-    TMPXItemId idGet = TVcxMyVideosCollectionUtil::IdL( *media );;
+    idGet = TVcxMyVideosCollectionUtil::IdL( *media );
     if( idSet != idGet )
         {
         retVal = KErrGeneral;
@@ -324,8 +555,15 @@
     CMPXMedia* media = CMPXMedia::NewL();
     TInt retVal( KErrNone );
     TReal32 durationSet( 150 );
+    TReal32 durationGet = TVcxMyVideosCollectionUtil::DurationL( *media );
+    if( -1 != durationGet )
+        {
+        delete media;
+        retVal = KErrGeneral;
+        return retVal;
+        }
     media->SetTObjectValueL<TReal32>( KVcxMediaMyVideosDuration, durationSet );
-    TReal32 durationGet = TVcxMyVideosCollectionUtil::DurationL( *media );;
+    durationGet = TVcxMyVideosCollectionUtil::DurationL( *media );
     if( durationSet != durationGet )
         {
         retVal = KErrGeneral;
@@ -343,8 +581,17 @@
     CMPXMedia* media = CMPXMedia::NewL();
     TInt retVal( KErrNone );
     _LIT( valueSet, "TeamNinja" );
+    HBufC* valueGet = TVcxMyVideosCollectionUtil::Title( *media ).AllocL();
+    if( valueGet->Size() != 0  )
+        {
+        delete media;
+        delete valueGet;
+        retVal = KErrGeneral;
+        return retVal;
+        }
+    delete valueGet;
     media->SetTextValueL( KMPXMediaGeneralTitle, valueSet );
-    HBufC* valueGet = TVcxMyVideosCollectionUtil::Title( *media ).AllocL();
+    valueGet = TVcxMyVideosCollectionUtil::Title( *media ).AllocL();
     if( valueGet->CompareF( valueSet ) )
         {
         retVal = KErrGeneral;
@@ -363,8 +610,15 @@
     CMPXMedia* media = CMPXMedia::NewL();
     TInt retVal( KErrNone );
     TUint8 valueSet( 21 );
+    TUint8 valueGet = TVcxMyVideosCollectionUtil::RatingL( *media );;
+    if( 0 != valueGet )
+        {
+        delete media;
+        retVal = KErrGeneral;
+        return retVal;
+        }
     media->SetTObjectValueL<TUint8>( KVcxMediaMyVideosRating, valueSet );
-    TUint8 valueGet = TVcxMyVideosCollectionUtil::RatingL( *media );;
+    valueGet = TVcxMyVideosCollectionUtil::RatingL( *media );;
     if( valueSet != valueGet )
         {
         retVal = KErrGeneral;
@@ -382,8 +636,15 @@
     CMPXMedia* media = CMPXMedia::NewL();
     TInt retVal( KErrNone );
     TUint32 valueSet( 21 );
+    TUint32 valueGet = TVcxMyVideosCollectionUtil::AudioFourCcL( *media );;
+    if( 0 != valueGet )
+        {
+        delete media;
+        retVal = KErrGeneral;
+        return retVal;
+        }
     media->SetTObjectValueL<TUint32>( KVcxMediaMyVideosAudioFourCc, valueSet );
-    TUint32 valueGet = TVcxMyVideosCollectionUtil::AudioFourCcL( *media );;
+    valueGet = TVcxMyVideosCollectionUtil::AudioFourCcL( *media );;
     if( valueSet != valueGet )
         {
         retVal = KErrGeneral;
@@ -401,8 +662,14 @@
     TInt retVal( KErrNone );
     CMPXMedia* media = CMPXMedia::NewL();
     RArray<TMPXAttribute> attrs;
-    attrs.Append( KMPXMediaGeneralMimeType );
     TBool inMds( EFalse );
+    TVcxMyVideosCollectionUtil::AreSupported( *media, attrs.Array(), inMds );        
+    attrs.Append( KMPXMediaFail );
+    TVcxMyVideosCollectionUtil::AreSupported( *media, attrs.Array(), inMds );
+    attrs.Append( KMPXMediaVideoBitRate );
+    inMds = ETrue;    
+    TVcxMyVideosCollectionUtil::AreSupported( *media, attrs.Array(), inMds );
+    media->SetTObjectValueL<TUint16>( KMPXMediaVideoBitRate, 47 );
     TVcxMyVideosCollectionUtil::AreSupported( *media, attrs.Array(), inMds );
     delete media;
     return retVal;
@@ -415,8 +682,7 @@
 TInt CVcxMyVideosCollectionUtilTest::AttrBelongsToFullSetL( CStifItemParser& /*aItem*/ )
     {
     TInt retVal( KErrNone );
-    // TMPXAttribute attr;
-    // attr = KMPXMediaGeneralMimeType;
+
     if ( !( TVcxMyVideosCollectionUtil::AttrBelongsToFullSet( KMPXMediaGeneralComment ) &&
          TVcxMyVideosCollectionUtil::AttrBelongsToFullSet( KMPXMediaGeneralCopyright ) &&
          TVcxMyVideosCollectionUtil::AttrBelongsToFullSet( KMPXMediaGeneralMimeType ) &&
@@ -430,6 +696,12 @@
          TVcxMyVideosCollectionUtil::AttrBelongsToFullSet( KMPXMediaVideoArtist ) ) )
         {
         retVal = KErrGeneral;
+        return retVal;
+        }
+    
+    if( TVcxMyVideosCollectionUtil::AttrBelongsToFullSet( KMPXMediaFail ) )
+        {
+        retVal = KErrGeneral;
         }
         
     return retVal;
@@ -455,6 +727,12 @@
             != KErrNotFound ) )
         {
         retVal = KErrGeneral;
+        return retVal;
+        }
+    
+    if( TVcxMyVideosCollectionUtil::Origin( KCategoryIdExtraItem3 ) != KErrNotFound )
+        {
+        retVal = KErrGeneral;
         }
     
     return retVal;
@@ -513,22 +791,6 @@
     return retVal;
     }
 
-// -----------------------------------------------------------------------------
-// CVcxMyVideosCollectionUtilTest::?member_function
-// ?implementation_description
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-/*
-TInt CVcxMyVideosCollectionUtilTest::?member_function(
-   CItemParser& aItem )
-   {
-
-   ?code
-
-   }
-*/
-
 // ========================== OTHER EXPORTED FUNCTIONS =========================
 // None