mds_pub/content_listing_framework_api/tsrc/src/T_CLFApiModuleTests.cpp
branchRCL_3
changeset 8 50de4d668bb6
parent 7 3cebc1a84278
child 9 82c0024438c8
--- a/mds_pub/content_listing_framework_api/tsrc/src/T_CLFApiModuleTests.cpp	Mon Mar 15 12:42:24 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2513 +0,0 @@
-/*
-* 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:  Implementation of CLF API test 
-*
-*/
-
-
-// INCLUDES
-#include "T_CLFApiModuleTests.h"
-#include <s32mem.h> 
-#include <eunitmacros.h>
-
-// the header for the tested class
-#include <ContentListingFactory.h>
-#include <MCLFChangedItemObserver.h>
-#include <MCLFContentListingEngine.h>
-#include <MCLFCustomGrouper.h>
-#include <MCLFCustomSorter.h>
-#include <MCLFItem.h>
-#include <MCLFItemListModel.h>
-#include <MCLFModifiableItem.h>
-#include <MCLFOperationObserver.h>
-#include <MCLFPostFilter.h>
-#include <MCLFSortingStyle.h>
-#include <T_ContentListingFramework.rsg>
-#include <collate.h>
-#include <pathInfo.h>
-#include <MCLFProcessObserver.h>
-#include <CLFContentListingExtended.hrh>
-
-//CONSTS
-#ifdef __WINSCW__
-_LIT( KTestResourceFile, "z:\\resource\\T_ContentListingFramework.rsc" );
-#else
-_LIT( KTestResourceFile, "c:\\sys\\bin\\T_ContentListingFramework.rsc" );
-#endif
-_LIT( KTestFileNameBase, "CLFTestFiles\\TestFile" );
-_LIT( KTestFileExt, ".txt" );
-
-const TCLFFieldId KMultibleSortingTestField1 = 0x80000001;
-const TCLFFieldId KMultibleSortingTestField2 = 0x80000002;
-const TCLFFieldId KMultibleSortingTestField3 = 0x80000003;
-const TCLFFieldId KMultibleSortingTestField4 = 0x80000004;
-const TCLFFieldId KMultibleSortingTestField5 = 0x80000005;
-const TCLFFieldId KMultibleSortingTestField6 = 0x80000006;
-
-const TInt KCLFUpdateFoldersSemanticId = 0x1000;
-
-// ---------------------------------------------------------------------------
-// class CMGXAsyncCallback
-// ---------------------------------------------------------------------------
-//
-class CCLFAsyncCallback : public CBase
-    {
-    public:
-        ~CCLFAsyncCallback()
-            {
-            if ( iActiveWait.IsStarted() )
-                {
-                iActiveWait.AsyncStop();
-                }
-            }
-    public:
-        static void AfterL( TTimeIntervalMicroSeconds32 aInterval )
-            {
-            CCLFAsyncCallback* self = new( ELeave ) CCLFAsyncCallback();
-            CleanupStack::PushL( self );
-            CPeriodic* periodic = CPeriodic::NewL( CActive::EPriorityIdle );
-            CleanupStack::PushL( periodic );
-            TCallBack callBack( CallBackL, self );
-            TTimeIntervalMicroSeconds32 interval( 1000000 );
-            periodic->Start( aInterval, aInterval, callBack );
-            self->iActiveWait.Start();
-            periodic->Cancel();
-            CleanupStack::PopAndDestroy( 2 ); // periodic, self
-            }
-
-        static TInt CallBackL( TAny* aObject )
-            {
-            CCLFAsyncCallback* self = reinterpret_cast< CCLFAsyncCallback* >( aObject );
-            if ( self->iActiveWait.IsStarted() )
-                {
-                self->iActiveWait.AsyncStop();
-                }
-            return EFalse;
-            }
-            
-    private:
-        CActiveSchedulerWait iActiveWait;
-    };
-
-// ---------------------------------------------------------------------------
-// class TTestOperationObserver
-// ---------------------------------------------------------------------------
-//
-class TTestOperationObserver : public MCLFOperationObserver
-    {
-    public:
-        TTestOperationObserver()
-            // set invalid values
-            : iOperationEvent( TCLFOperationEvent( -1 ) ), iError( 1 ), iWait( NULL )
-            {}
-        void HandleOperationEventL( TCLFOperationEvent aOperationEvent,
-                                    TInt aError )
-            {
-            iError = aError;
-            iOperationEvent = aOperationEvent;
-            if( iWait &&
-                iWait->IsStarted() )
-                {
-                iWait->AsyncStop();
-                }
-            }
-        TCLFOperationEvent iOperationEvent;
-        TInt iError;
-        CActiveSchedulerWait* iWait;
-
-    };
-
-// ---------------------------------------------------------------------------
-// class TTestCustomSorter
-// ---------------------------------------------------------------------------
-//
-class TTestCustomSorter : public MCLFCustomSorter
-    {
-    public:
-        TTestCustomSorter() : iSortItems( EFalse )
-            {
-            }
-        void SortItemsL( RPointerArray<MCLFItem>& /*aItemArray*/ )
-            {
-            //aItemArray;
-            iSortItems = ETrue;
-            }
-        TBool iSortItems;
-
-    };
-
-// ---------------------------------------------------------------------------
-// class TTestCustomGrouper
-// ---------------------------------------------------------------------------
-//
-class TTestCustomGrouper : public MCLFCustomGrouper
-    {
-    public:
-        TTestCustomGrouper() : iGroupCount( 2 ), iCopyItems( EFalse ), iModifiableItems( NULL )
-            {
-            }
-        void GroupItemsL( const TArray<MCLFItem*>& /*aSourceList*/,
-                          RPointerArray<MCLFItem>& aGroupedList )
-            {
-            //aSourceList;
-            if( iCopyItems )
-                {
-                TInt count( iModifiableItems->Count() );
-                for( TInt i = 0 ; i < count ; ++i )
-                    {
-                    aGroupedList.AppendL( (*iModifiableItems)[i] );
-                    }
-                }
-            else if( iModifiableItems )
-                {
-                iModifiableItems->ResetAndDestroy();
-                for( TInt i = 0 ; i < iGroupCount ; ++i )
-                    {
-                    MCLFModifiableItem* item = ContentListingFactory::NewModifiableItemLC();
-                    iModifiableItems->AppendL( item );
-                    CleanupStack::Pop(); // item
-                    aGroupedList.AppendL( item );
-                    }
-                }
-            }
-        TInt iGroupCount;
-        TBool iCopyItems;
-        RPointerArray<MCLFModifiableItem>* iModifiableItems;
-    };
-
-// ---------------------------------------------------------------------------
-// class TTestPostFilter
-// ---------------------------------------------------------------------------
-//
-class TTestPostFilter : public MCLFPostFilter
-    {
-    public:
-        TTestPostFilter() : iShouldFilterCount( 5 ), iAllFilter( EFalse )
-            {
-            }
-
-        void FilterItemsL( const TArray<MCLFItem*>& aItemList,
-                           RPointerArray<MCLFItem>& aFilteredItemList )
-            {
-            iFilteredCount = 0;
-            if( iAllFilter )
-                {
-                iFilteredCount = aItemList.Count();
-                return;
-                }
-            for( TInt i = 0 ; i < aItemList.Count() ; ++i )
-                {
-                if( i < iShouldFilterCount  )
-                    {
-                    iFilteredCount++;
-                    }
-                else
-                    {
-                    aFilteredItemList.AppendL( aItemList[i] );
-                    }
-                }
-            }
-        TInt iShouldFilterCount;
-        TBool iAllFilter;
-        TInt iFilteredCount;
-
-    };
-
-// ---------------------------------------------------------------------------
-// class TTestChangedItemObserver
-// ---------------------------------------------------------------------------
-//
-class TTestChangedItemObserver : public MCLFChangedItemObserver
-    {
-    public:
-        TTestChangedItemObserver()
-            : iHandleItemChange( EFalse ),
-              iLastError( KErrNone ),
-              iChangedArray( NULL ),
-              iWait( NULL )      
-            {
-            }
-        void HandleItemChangeL( const TArray<TCLFItemId>& aItemIDArray )
-            {
-            iHandleItemChange = ETrue;
-            if( iChangedArray )
-                {
-                iChangedArray->Reset();
-                for( TInt i = 0 ; i < aItemIDArray.Count() ; ++i )
-                    {
-                    iChangedArray->AppendL( aItemIDArray[i] );
-                    }
-                }
-            if( iWait && iWait->IsStarted() )
-                {
-                iWait->AsyncStop();
-                }
-
-            }
-        void HandleError( TInt aError )
-            {
-            iLastError = aError;
-            if( iWait && iWait->IsStarted() )
-                {
-                iWait->AsyncStop();
-                }
-            }
-        TInt iHandleItemChange;
-        TInt iLastError;
-        RArray<TCLFItemId>* iChangedArray;
-        CActiveSchedulerWait* iWait;
-    };
-
-// ---------------------------------------------------------------------------
-// class TTestCLFProcessObserver
-// ---------------------------------------------------------------------------
-//
-class TTestCLFProcessObserver : public MCLFProcessObserver
-    {
-    public:
-        TTestCLFProcessObserver()
-            : iStartEvent( EFalse ), iEndEvent( EFalse )
-            {}
-        void HandleCLFProcessEventL( TCLFProcessEvent aProcessEvent )
-            {
-            switch ( aProcessEvent )
-                {
-                case ECLFUpdateStart:
-                    {
-                    iStartEvent = ETrue;
-                    break;
-                    }
-                case ECLFUpdateStop:
-                    {
-                    iEndEvent = ETrue;
-                    break;
-                    }
-                default:
-                    {
-                    User::Panic( _L("CLF module test"), 1 );
-                    }
-                }
-            }
-        void Reset()
-            {
-            iStartEvent = EFalse;
-            iEndEvent = EFalse;
-            }
-        TBool iStartEvent;
-        TBool iEndEvent;
-    };
-
-void SerializeL( const MDesCArray& aDataArray, CBufBase& aBuffer )
-    {
-    const TInt count( aDataArray.MdcaCount() );
-    RBufWriteStream writeStream( aBuffer );
-    CleanupClosePushL( writeStream );
-    writeStream.WriteInt32L( count );
-    for( TInt i = 0 ; i < count ; ++i )
-        {
-        const TDesC& des = aDataArray.MdcaPoint( i );
-        TInt length( des.Length() );
-        writeStream.WriteInt32L( length );
-        writeStream.WriteL( des, length );
-        }
-    CleanupStack::PopAndDestroy( &writeStream );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::NewLC()
-// Create the testing class
-// ---------------------------------------------------------------------------
-//
-T_CLFApiModuleTests* T_CLFApiModuleTests::NewLC()
-    {
-    T_CLFApiModuleTests* self = new(ELeave) T_CLFApiModuleTests;
-
-    CleanupStack::PushL( self );
-    // need to generate the table, so call base classes
-    // second phase constructor
-    self->ConstructL();
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::ConstructL()
-    {
-    CEUnitTestSuiteClass::ConstructL();
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::~T_CLFApiModuleTests()
-// ---------------------------------------------------------------------------
-//
-T_CLFApiModuleTests::~T_CLFApiModuleTests()
-    {
-    Teardown();
-    }
-
-/**
- * Assistance methods
- */
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::ResourceL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::ResourceL( TInt aResourceId )
-    {
-    delete iDataBuffer;
-    iDataBuffer = NULL;
-    iDataBuffer = iResourceFile.AllocReadL( aResourceId );
-    iResourceReader.SetBuffer( iDataBuffer );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SortingStyleResourceL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::SortingStyleResourceL()
-    {
-    ResourceL( R_SORTING_STYLE );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::ListModelResourceL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::ListModelResourceL()
-    {
-    ResourceL( R_LIST_MODEL );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CreateNewFileL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::CreateNewFileL( TInt aNumber, TDes& aFileName )
-    {
-    aFileName.Copy( PathInfo::PhoneMemoryRootPath() );
-    aFileName.Append( KTestFileNameBase );
-    TBuf<125> buf;
-    buf.Num( aNumber );
-    aFileName.Append( buf );
-    aFileName.Append( KTestFileExt );
-
-    RFile file;
-    BaflUtils::EnsurePathExistsL( iFs, aFileName );
-    TInt error( file.Replace( iFs, aFileName, EFileShareAny | EFileWrite ) );
-    if( error == KErrNone )
-        {
-        error = file.Write( _L8("Test data") );
-        }
-    file.Close();
-    User::LeaveIfError( error );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::FindTestFileIdL
-// ---------------------------------------------------------------------------
-//
-TCLFItemId T_CLFApiModuleTests::FindTestFileIdL( TInt aNumber )
-    {
-    TCLFItemId id( 0 );
-    MCLFItemListModel* model = iEngine->CreateListModelLC( *iTestObserver );
-    iMimeTypeArray->AppendL( _L("*") );
-
-    iTestObserver->iWait = &iWait;
-    model->SetWantedMimeTypesL( *iMimeTypeArray );
-    model->RefreshL();
-    iWait.Start();
-
-    TFileName testFileName( PathInfo::PhoneMemoryRootPath() );
-    testFileName.Append( KTestFileNameBase );
-    TBuf<125> buf;
-    buf.Num( aNumber );
-    testFileName.Append( buf );
-    testFileName.Append( KTestFileExt );
-    for( TInt i = 0 ; i < model->ItemCount() ; ++i )
-        {
-        const MCLFItem& item = model->Item( i );
-        TPtrC fileName;
-        if( item.GetField( ECLFFieldIdFileNameAndPath, fileName ) != KErrNone )
-            {
-            continue;
-            }
-        if( fileName.CompareF( testFileName ) == 0 )
-            {
-            id = item.ItemId();
-            break;
-            }
-        }
-    CleanupStack::PopAndDestroy(); // model
-    return id;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CheckFileNameShortingL
-// ---------------------------------------------------------------------------
-//
-TBool T_CLFApiModuleTests::CheckFileNameShortingL()
-    {
-    TCollationMethod m = *Mem::CollationMethodByIndex( 0 );
-    m.iFlags |= TCollationMethod::EIgnoreNone | TCollationMethod::EFoldCase;
-
-    for( TInt i = 0 ; i < iListModel->ItemCount() -1 ; ++i )
-        {
-        const MCLFItem& item = iListModel->Item( i );
-        const MCLFItem& item1 = iListModel->Item( i + 1 );
-        TPtrC name;
-        TPtrC name1;
-
-        if( item.GetField( ECLFFieldIdFileName, name ) != KErrNone ||
-            item1.GetField( ECLFFieldIdFileName, name1 ) != KErrNone )
-            {
-            return EFalse;
-            }
-        if( name.CompareC( name1, 3, &m ) > 0 )
-            {
-            return EFalse;
-            }
-        }
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CheckFileSizeShortingL
-// ---------------------------------------------------------------------------
-//
-TBool T_CLFApiModuleTests::CheckFileSizeShortingL()
-    {
-    for( TInt i = 0 ; i < iListModel->ItemCount() -1 ; ++i )
-        {
-        const MCLFItem& item = iListModel->Item( i );
-        const MCLFItem& item1 = iListModel->Item( i + 1 );
-        TInt32 size;
-        TInt32 size1;
-        if( item.GetField( ECLFFieldIdFileSize, size ) != KErrNone ||
-            item1.GetField( ECLFFieldIdFileSize, size1 ) != KErrNone )
-            {
-            return EFalse;
-            }
-        if( size < size1 )
-            {
-            return EFalse;
-            }
-        }
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CheckMultibleSortingShortingL
-// ---------------------------------------------------------------------------
-//
-TBool T_CLFApiModuleTests::CheckMultibleSortingShortingL()
-    {
-    const MCLFItem* item = &( iListModel->Item( 0 ) );
-    TInt32 data( 0 );
-    if( item->GetField( KMultibleSortingTestField2, data ) != KErrNone ||
-        data != 5 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 1 ) );
-    if( item->GetField( KMultibleSortingTestField2, data ) != KErrNone ||
-        data != 4 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 2 ) );
-    if( item->GetField( KMultibleSortingTestField2, data ) != KErrNone ||
-        data != 3 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 3 ) );
-    if( item->GetField( KMultibleSortingTestField3, data ) != KErrNone ||
-        data != 6 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 4 ) );
-    if( item->GetField( KMultibleSortingTestField3, data ) != KErrNone ||
-        data != 7 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 5 ) );
-    if( item->GetField( KMultibleSortingTestField3, data ) != KErrNone ||
-        data != 8 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 6 ) );
-    if( item->GetField( KMultibleSortingTestField4, data ) != KErrNone ||
-        data != 9 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 7 ) );
-    if( item->GetField( KMultibleSortingTestField4, data ) != KErrNone ||
-        data != 10 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 8 ) );
-    if( item->GetField( KMultibleSortingTestField4, data ) != KErrNone ||
-        data != 11 )
-        {
-        return EFalse;
-        }
-// unsorted start
-    item = &( iListModel->Item( 9 ) );
-    if( item->GetField( KMultibleSortingTestField6, data ) != KErrNone ||
-        ( data < 15 || data > 17 ) )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 10 ) );
-    if( item->GetField( KMultibleSortingTestField6, data ) != KErrNone ||
-        ( data < 15 || data > 17 ) )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 11 ) );
-    if( item->GetField( KMultibleSortingTestField6, data ) != KErrNone ||
-        ( data < 15 || data > 17 ) )
-        {
-        return EFalse;
-        }
-// unsorted end
-    item = &( iListModel->Item( 12 ) );
-    if( item->GetField( KMultibleSortingTestField5, data ) != KErrNone ||
-        data != 12 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 13 ) );
-    if( item->GetField( KMultibleSortingTestField5, data ) != KErrNone ||
-        data != 13 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 14 ) );
-    if( item->GetField( KMultibleSortingTestField5, data ) != KErrNone ||
-        data != 14 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 15 ) );
-    if( item->GetField( KMultibleSortingTestField1, data ) != KErrNone ||
-        data != 0 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 16 ) );
-    if( item->GetField( KMultibleSortingTestField1, data ) != KErrNone ||
-        data != 1 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 17 ) );
-    if( item->GetField( KMultibleSortingTestField1, data ) != KErrNone ||
-        data != 2 )
-        {
-        return EFalse;
-        }
-
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CheckMultibleSortingShorting2L
-// ---------------------------------------------------------------------------
-//
-TBool T_CLFApiModuleTests::CheckMultibleSortingShorting2L()
-    {
-// check sorted
-    const MCLFItem* item = &( iListModel->Item( 0 ) );
-    TInt32 data( 0 );
-    if( item->GetField( KMultibleSortingTestField5, data ) != KErrNone ||
-        data != 12 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 1 ) );
-    if( item->GetField( KMultibleSortingTestField5, data ) != KErrNone ||
-        data != 13 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 2 ) );
-    if( item->GetField( KMultibleSortingTestField5, data ) != KErrNone ||
-        data != 14 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 3 ) );
-    if( item->GetField( KMultibleSortingTestField6, data ) != KErrNone ||
-        data != 15 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 4 ) );
-    if( item->GetField( KMultibleSortingTestField6, data ) != KErrNone ||
-        data != 16 )
-        {
-        return EFalse;
-        }
-    item = &( iListModel->Item( 5 ) );
-    if( item->GetField( KMultibleSortingTestField6, data ) != KErrNone ||
-        data != 17 )
-        {
-        return EFalse;
-        }
-// check unsorted
-    for( TInt i = 6 ; i < 18 ; ++i )
-        {
-        item = &( iListModel->Item( i ) );
-        if( item->GetField( KMultibleSortingTestField1, data ) != KErrNone )
-            {
-            if( item->GetField( KMultibleSortingTestField2, data ) != KErrNone )
-                {
-                if( item->GetField( KMultibleSortingTestField3, data ) != KErrNone )
-                    {
-                    if( item->GetField( KMultibleSortingTestField4, data ) != KErrNone )
-                        {
-                        return EFalse;
-                        }
-                    }
-                }
-            }
-        if( data < 0 || data > 11 )
-            {
-            return EFalse;
-            }
-        }
-
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CheckFileDateShortingL
-// ---------------------------------------------------------------------------
-//
-TBool T_CLFApiModuleTests::CheckFileDateShortingL()
-    {
-    for( TInt i = 0 ; i < iListModel->ItemCount() -1 ; ++i )
-        {
-        const MCLFItem& item = iListModel->Item( i );
-        const MCLFItem& item1 = iListModel->Item( i + 1 );
-        TTime date;
-        TTime date1;
-        if( item.GetField( ECLFFieldIdFileDate, date ) != KErrNone ||
-            item1.GetField( ECLFFieldIdFileDate, date1 ) != KErrNone )
-            {
-            return EFalse;
-            }
-        if( date > date1 )
-            {
-            return EFalse;
-            }
-        }
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CheckFileTypesL
-// ---------------------------------------------------------------------------
-//
-TBool T_CLFApiModuleTests::CheckFileTypesL( const MDesCArray& aMimeTypeArray,
-                                            const TArray<TInt>& aMediaTypes )
-    {
-    for( TInt i = 0 ; i < iListModel->ItemCount() ; ++i )
-        {
-        TPtrC mimeType;
-        TInt32 mediaType;
-        TInt error = iListModel->Item( i ).GetField( ECLFFieldIdMimeType, mimeType );
-        if( iListModel->Item( i ).GetField( ECLFFieldIdMediaType, mediaType ) != KErrNone )
-            {
-            return EFalse;
-            }
-        TBool mimeTypeVal( EFalse );
-        TBool mediaTypeVal( EFalse );
-        if( error == KErrNone )
-            {
-            mimeTypeVal = CheckMimeTypesL( aMimeTypeArray, mimeType );
-            }
-        mediaTypeVal = CheckMediaTypesL( aMediaTypes, TCLFMediaType( mediaType ) );
-        if( !( mimeTypeVal || mediaTypeVal ) )
-            {
-            return EFalse;
-            }
-        }
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CheckMimeTypesL
-// ---------------------------------------------------------------------------
-//
-TBool T_CLFApiModuleTests::CheckMimeTypesL( const MDesCArray& aMimeTypeArray,
-                                            const TDesC& aMimeType )
-    {
-    for( TInt j = 0 ; j < aMimeTypeArray.MdcaCount() ; ++j )
-        {
-        if( aMimeTypeArray.MdcaPoint( j ).Match( aMimeType ) == KErrNotFound )
-            {
-            return ETrue;
-            }
-        }
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CheckMediaTypesL
-// ---------------------------------------------------------------------------
-//
-TBool T_CLFApiModuleTests::CheckMediaTypesL( const TArray<TInt>& aMediaTypes,
-                                             TCLFMediaType aMediaType )
-    {
-    for( TInt j = 0 ; j < aMediaTypes.Count() ; ++j )
-        {
-        if( aMediaTypes[j] == aMediaType )
-            {
-            return ETrue;
-            }
-        }
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::MakeOpaqueDataL
-// ---------------------------------------------------------------------------
-//
-HBufC8* T_CLFApiModuleTests::MakeOpaqueDataL( const MDesCArray& aFiles )
-    {
-    CDesCArray* folderArray = new ( ELeave ) CDesCArraySeg( 8 );
-    CleanupStack::PushL( folderArray );
-    TInt count( aFiles.MdcaCount() );
-    for( TInt i = 0 ; i < count ; ++i )
-        {
-        TPtrC folderPath( TParsePtrC(
-                            aFiles.MdcaPoint( i ) ).DriveAndPath() );
-        TInt tmp( 0 );
-        if( folderArray->Find( folderPath, tmp, ECmpFolded ) != 0 )
-            {
-            folderArray->AppendL( folderPath );
-            }
-        }
-
-    CBufBase* dynBuffer = CBufFlat::NewL( 64 );
-    CleanupStack::PushL( dynBuffer );
-    SerializeL( *folderArray, *dynBuffer );
-    HBufC8* ret = dynBuffer->Ptr( 0 ).AllocL();
-    CleanupStack::PopAndDestroy( 2, folderArray );
-    return ret;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::MakeMultibleSortingItemsL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::MakeMultibleSortingItemsL(
-                        RPointerArray<MCLFModifiableItem>& aItemArray )
-    {
-    for( TInt i = 0 ; i < 18 ; ++i )
-        {
-        MCLFModifiableItem* item = ContentListingFactory::NewModifiableItemLC();
-        aItemArray.AppendL( item );
-        CleanupStack::Pop();
-
-        if( i < 3 )
-            {
-            item->AddFieldL( KMultibleSortingTestField1, i );
-            }
-        else if( i < 6 )
-            {
-            item->AddFieldL( KMultibleSortingTestField2, i );
-            }
-        else if( i < 9 )
-            {
-            item->AddFieldL( KMultibleSortingTestField3, i );
-            }
-        else if( i < 12 )
-            {
-            item->AddFieldL( KMultibleSortingTestField4, i );
-            }
-        else if( i < 15 )
-            {
-            item->AddFieldL( KMultibleSortingTestField5, i );
-            }
-        else
-            {
-            item->AddFieldL( KMultibleSortingTestField6, i );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::FindItem
-// ---------------------------------------------------------------------------
-//
-const MCLFItem* T_CLFApiModuleTests::FindItem( MCLFItemListModel& aModel, TCLFItemId aItemId )
-    {
-    for( TInt i = 0 ; i < aModel.ItemCount() ; ++i )
-        {
-        const MCLFItem& item = aModel.Item( i );
-        if( item.ItemId() == aItemId )
-            {
-            return &item;
-            }
-        }
-    return NULL;
-    }
-
-/**
- * Setup
- */
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::BaseSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::BaseSetupL()
-    {
-    iFs.Close();
-    iResourceFile.Close();
-    
-    User::LeaveIfError( iFs.Connect() );
-    TFileName fileName( KTestResourceFile );
-    BaflUtils::NearestLanguageFile( iFs, fileName );
-    iResourceFile.OpenL( iFs, KTestResourceFile );
-    iResourceFile.ConfirmSignatureL( 0 );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SortingStyleResourceSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::SortingStyleResourceSetupL()
-    {
-    BaseSetupL();
-    SortingStyleResourceL();
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CreateModelSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::CreateModelSetupL()
-    {
-    iEngine = ContentListingFactory::NewContentListingEngineLC();
-    CleanupStack::Pop();
-    iTestObserver  = new (ELeave) TTestOperationObserver;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CreateModelFromResourceSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::CreateModelFromResourceSetupL()
-    {
-    BaseSetupL();
-    CreateModelSetupL();
-    ListModelResourceL();
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::ListModelSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::ListModelSetupL()
-    {
-    BaseSetupL();
-    CreateModelSetupL();
-    iListModel = iEngine->CreateListModelLC( *iTestObserver );
-    CleanupStack::Pop();
-
-    iSortingStyle = ContentListingFactory::NewSortingStyleLC();
-    CleanupStack::Pop();
-    iSortingStyle1 = ContentListingFactory::NewSortingStyleLC();
-    CleanupStack::Pop();
-    iSortingStyle2 = ContentListingFactory::NewSortingStyleLC();
-    CleanupStack::Pop();
-    iSortingStyle3 = ContentListingFactory::NewSortingStyleLC();
-    CleanupStack::Pop();
-
-    iTestSorter = new (ELeave) TTestCustomSorter;
-    iTestSorter1 = new (ELeave) TTestCustomSorter;
-    iTestGrouper = new (ELeave) TTestCustomGrouper;
-    iTestGrouper1 = new (ELeave) TTestCustomGrouper;
-    iTestFilter = new (ELeave) TTestPostFilter;
-    iTestFilter1 = new (ELeave) TTestPostFilter;
-    iMimeTypeArray = new (ELeave) CDesCArrayFlat( 8 );
-    iMimeTypeArray1 = new (ELeave) CDesCArrayFlat( 8 );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::MultibleSortingSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::MultibleSortingSetupL()
-    {
-    ListModelSetupL();
-    MakeMultibleSortingItemsL( iModifiableItems );
-
-// use custom grouper to make own items
-    iTestGrouper->iModifiableItems = &iModifiableItems;
-    iTestGrouper->iCopyItems = ETrue;
-    iListModel->SetCustomGrouper( iTestGrouper );
-
-// set sorters
-    iSortingStyle->ResetL();
-    iSortingStyle->SetSortingDataType( ECLFItemDataTypeTInt32 );
-    iSortingStyle->AddFieldL( KMultibleSortingTestField1 );
-    iSortingStyle->SetUndefinedItemPosition( ECLFSortingStyleUndefinedFirst );
-
-    iSortingStyle1->ResetL();
-    iSortingStyle1->SetSortingDataType( ECLFItemDataTypeTInt32 );
-    iSortingStyle1->AddFieldL( KMultibleSortingTestField2 );
-    iSortingStyle1->SetUndefinedItemPosition( ECLFSortingStyleUndefinedEnd );
-    iSortingStyle1->SetOrdering( ECLFOrderingDescending );
-
-    iSortingStyle2->ResetL();
-    iSortingStyle2->SetSortingDataType( ECLFItemDataTypeTInt32 );
-    iSortingStyle2->AddFieldL( KMultibleSortingTestField3 );
-    iSortingStyle2->AddFieldL( KMultibleSortingTestField4 );
-    iSortingStyle2->SetUndefinedItemPosition( ECLFSortingStyleUndefinedEnd );
-
-    iSortingStyle3->ResetL();
-    iSortingStyle3->SetSortingDataType( ECLFItemDataTypeTInt32 );
-    iSortingStyle3->AddFieldL( KMultibleSortingTestField5 );
-    iSortingStyle3->SetUndefinedItemPosition( ECLFSortingStyleUndefinedFirst );
-
-    iListModel->SetSortingStyle( iSortingStyle );
-    iListModel->AppendSecondarySortingStyleL( *iSortingStyle1 );
-    iListModel->AppendSecondarySortingStyleL( *iSortingStyle2 );
-    iListModel->AppendSecondarySortingStyleL( *iSortingStyle3 );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::MultibleSortingResourceSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::MultibleSortingResourceSetupL()
-    {
-    ListModelSetupL();
-    delete iListModel;
-    iListModel = NULL;
-    ResourceL( R_LIST_MODEL_MULTIBLE );
-    iListModel = iEngine->CreateListModelLC( *iTestObserver, iResourceReader );
-    CleanupStack::Pop();
-
-// use custom grouper to make own items
-    MakeMultibleSortingItemsL( iModifiableItems );
-    iTestGrouper->iModifiableItems = &iModifiableItems;
-    iTestGrouper->iCopyItems = ETrue;
-    iListModel->SetCustomGrouper( iTestGrouper );
-
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::ListModelAllFileItemsSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::ListModelAllFileItemsSetupL()
-    {
-    ListModelSetupL();
-    iMediaTypeArray.AppendL( ECLFMediaTypeVideo );
-    iMediaTypeArray.AppendL( ECLFMediaTypeImage );
-    iMediaTypeArray.AppendL( ECLFMediaTypeSound );
-    iMediaTypeArray.AppendL( ECLFMediaTypeMusic );
-    iMediaTypeArray.AppendL( ECLFMediaTypeStreamingURL );
-    iMediaTypeArray.AppendL( ECLFMediaTypePlaylist );
-    iListModel->SetWantedMediaTypesL( iMediaTypeArray.Array() );
-    iTestObserver->iWait = &iWait;
-    iListModel->RefreshL();
-    iWait.Start();
-    iItemCount = iListModel->ItemCount();
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::ListModelSetupFromResourceL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::ListModelSetupFromResourceL()
-    {
-    BaseSetupL();
-    CreateModelSetupL();
-    ListModelResourceL();
-    iListModel = iEngine->CreateListModelLC( *iTestObserver, iResourceReader );
-    CleanupStack::Pop();
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::EngineTestSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::EngineTestSetupL()
-    {
-    User::LeaveIfError( iFs.Connect() );
-    iTestObserver  = new (ELeave) TTestOperationObserver;
-    iMimeTypeArray = new (ELeave) CDesCArrayFlat( 8 );
-    iEngine = ContentListingFactory::NewContentListingEngineLC();
-    CleanupStack::Pop();
-    iChangedItemObserver = new (ELeave) TTestChangedItemObserver;
-    iChangedItemObserver1 = new (ELeave) TTestChangedItemObserver;
-    iTestCLFProcessObserver = new (ELeave) TTestCLFProcessObserver;
-    iTestCLFProcessObserver1 = new (ELeave) TTestCLFProcessObserver;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SortingStyleTestSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::SortingStyleTestSetupL()
-    {
-    iSortingStyle = ContentListingFactory::NewSortingStyleLC();
-    CleanupStack::Pop();
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SortingStyleResourceTestSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::SortingStyleResourceTestSetupL()
-    {
-    SortingStyleResourceSetupL();
-    iSortingStyle1 = ContentListingFactory::NewSortingStyleLC( iResourceReader );
-    CleanupStack::Pop();
-
-    ResourceL( R_SORTING_STYLE_EMPTY );
-    iSortingStyle = ContentListingFactory::NewSortingStyleLC( iResourceReader );
-    CleanupStack::Pop();
-
-    ResourceL( R_SORTING_STYLE_UNDEFINEDITEM );
-    iSortingStyle2 = ContentListingFactory::NewSortingStyleLC( iResourceReader );
-    CleanupStack::Pop();
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::ModifiableItemTestSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::ModifiableItemTestSetupL()
-    {
-    iModifiableItem = ContentListingFactory::NewModifiableItemLC();
-    CleanupStack::Pop();
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::ItemTestSetupL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::ItemTestSetupL()
-    {
-    ListModelSetupL();
-    CreateNewFileL( 12, iFileName );
-    iEngine->UpdateItemsL();
-    iMimeTypeArray->Reset();
-    iMimeTypeArray->AppendL( _L("*") );
-    iListModel->SetWantedMimeTypesL( *iMimeTypeArray );
-
-    iTestObserver->iWait = &iWait;
-    iListModel->RefreshL();
-    iWait.Start();
-
-    for( TInt i = 0 ; i < iListModel->ItemCount() ; ++i )
-        {
-        const MCLFItem& item = iListModel->Item( i );
-        TPtrC fn;
-        item.GetField( ECLFFieldIdFileNameAndPath, fn );
-        if( iFileName.CompareF( fn ) == 0 )
-            {
-            iItem = &item;
-            }
-        }
-
-    EUNIT_ASSERT( iItem ); // Item should be in model
-
-    }
-
-/**
- * Teardown
- */
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::Teardown
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::Teardown()
-    {
-    iResourceFile.Close();
-    iFs.Close();
-    iMediaTypeArray.Reset();
-    iMediaTypeArray.Close();
-    iMediaTypeArray1.Reset();
-    iMediaTypeArray1.Close();
-    iUpdateItemIdArray.Reset();
-    iUpdateItemIdArray.Close();
-    iChangedArray.Reset();
-    iChangedArray.Close();
-    iModifiableItems.ResetAndDestroy();
-    iModifiableItems.Close();
-    
-    delete iListModel;
-    iListModel = NULL;
-    delete iEngine;
-    iEngine = NULL;
-    delete iSortingStyle;
-    iSortingStyle = NULL;
-    delete iSortingStyle1;
-    iSortingStyle1 = NULL;
-    delete iSortingStyle2;
-    iSortingStyle2 = NULL;
-    delete iSortingStyle3;
-    iSortingStyle3 = NULL;
-    delete iDataBuffer;
-    iDataBuffer = NULL;    
-    delete iTestObserver;
-    iTestObserver = NULL;
-    delete iTestSorter;
-    iTestSorter = NULL;
-    delete iTestSorter1;
-    iTestSorter1 = NULL;
-    delete iTestGrouper;
-    iTestGrouper = NULL;
-    delete iTestGrouper1;
-    iTestGrouper1 = NULL;
-    delete iTestFilter;
-    iTestFilter = NULL;
-    delete iTestFilter1;
-    iTestFilter1 = NULL;
-    delete iMimeTypeArray;
-    iMimeTypeArray = NULL;
-    delete iMimeTypeArray1;
-    iMimeTypeArray1 = NULL;
-    delete iChangedItemObserver;
-    iChangedItemObserver = NULL;
-    delete iChangedItemObserver1;
-    iChangedItemObserver1 = NULL;
-    delete iOpaqueData;
-    iOpaqueData = NULL;
-    delete iModifiableItem;
-    iModifiableItem = NULL;
-    delete iTestCLFProcessObserver1;
-    iTestCLFProcessObserver1 = NULL;
-    delete iTestCLFProcessObserver;
-    iTestCLFProcessObserver = NULL;
-    
-    TTimeIntervalMicroSeconds32 time = 1000000;
-    TRAP_IGNORE( CCLFAsyncCallback::AfterL( time ) );
-    }
-
-/**
- * Tests, construction
- */
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CreateEngineTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::CreateEngineTestL()
-    {
-    MCLFContentListingEngine* engine = NULL;
-    engine = ContentListingFactory::NewContentListingEngineLC();
-    EUNIT_ASSERT( engine );
-    CleanupStack::PopAndDestroy();
-    engine = NULL;
-    engine = ContentListingFactory::NewContentListingEngineLC();
-    CleanupStack::Pop();
-    EUNIT_ASSERT( engine );
-    delete engine;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CreateModifiableItemTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::CreateModifiableItemTestL()
-    {
-    MCLFModifiableItem* item = NULL;
-    item = ContentListingFactory::NewModifiableItemLC();
-    EUNIT_ASSERT( item );
-    CleanupStack::PopAndDestroy();
-    item = NULL;
-    item = ContentListingFactory::NewModifiableItemLC();
-    CleanupStack::Pop();
-    EUNIT_ASSERT( item );
-    delete item;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CreateSortignStyleTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::CreateSortignStyleTestL()
-    {
-    MCLFSortingStyle* sortingStyle = NULL;
-    sortingStyle = ContentListingFactory::NewSortingStyleLC();
-    EUNIT_ASSERT( sortingStyle );
-    CleanupStack::PopAndDestroy();
-    sortingStyle = NULL;
-    sortingStyle = ContentListingFactory::NewSortingStyleLC();
-    CleanupStack::Pop();
-    EUNIT_ASSERT( sortingStyle );
-    delete sortingStyle;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CreateSortignStyleFromResourceTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::CreateSortignStyleFromResourceTestL()
-    {
-    MCLFSortingStyle* sortingStyle = NULL;
-    sortingStyle = ContentListingFactory::NewSortingStyleLC( iResourceReader );
-    EUNIT_ASSERT( sortingStyle );
-    CleanupStack::PopAndDestroy();
-    sortingStyle = NULL;
-
-    SortingStyleResourceL(); // refresh resource reader
-    sortingStyle = ContentListingFactory::NewSortingStyleLC( iResourceReader );
-    CleanupStack::Pop();
-    EUNIT_ASSERT( sortingStyle );
-    delete sortingStyle;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CreateListModelTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::CreateListModelTestL()
-    {
-    MCLFItemListModel* model = NULL;
-    model = iEngine->CreateListModelLC( *iTestObserver );
-    EUNIT_ASSERT( model );
-    CleanupStack::PopAndDestroy();
-    model = NULL;
-
-    model = iEngine->CreateListModelLC( *iTestObserver );
-    CleanupStack::Pop();
-    EUNIT_ASSERT( model );
-    delete model;
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::CreateListModelFromResourceTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::CreateListModelFromResourceTestL()
-    {
-    MCLFItemListModel* model = NULL;
-    model = iEngine->CreateListModelLC( *iTestObserver, iResourceReader );
-    EUNIT_ASSERT( model );
-    CleanupStack::PopAndDestroy();
-    model = NULL;
-
-    ListModelResourceL();
-    model = iEngine->CreateListModelLC( *iTestObserver, iResourceReader );
-    CleanupStack::Pop();
-    EUNIT_ASSERT( model );
-    delete model;
-
-
-    ResourceL( R_LIST_MODEL_INCORRECT_VERSION );
-    EUNIT_ASSERT_SPECIFIC_LEAVE( iEngine->CreateListModelLC( *iTestObserver, iResourceReader ), KErrNotSupported );
-   }
-
-/**
- * Tests, engine
- */
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::UpdateItemsTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::UpdateItemsTestL()
-    {
-    // MDS will do the updating automatically in the background,
-    // thus only checking that the methods return correctly
-    iChangedItemObserver->iWait = &iWait;
-    iChangedItemObserver->iChangedArray = &iChangedArray;
-    iEngine->AddChangedItemObserverL( *iChangedItemObserver );
-    iEngine->AddCLFProcessObserverL( *iTestCLFProcessObserver );
-    iEngine->AddCLFProcessObserverL( *iTestCLFProcessObserver1 );
-
-    CreateNewFileL( 0, iFileName );
-    CreateNewFileL( 1, iFileName );
-    CreateNewFileL( 2, iFileName );
-    CreateNewFileL( 3, iFileName );
-    CreateNewFileL( 4, iFileName );
-    CreateNewFileL( 5, iFileName );
-
-// update server
-// to avoid incorrect test result
-    CreateNewFileL( 0, iFileName );
-    iEngine->UpdateItemsL();
-
-    EUNIT_ASSERT( iChangedItemObserver->iLastError == KErrNone );
-
-    iChangedArray.Reset();
-    iEngine->RemoveCLFProcessObserver( *iTestCLFProcessObserver1 );
-    iChangedItemObserver->iHandleItemChange = EFalse;
-    iChangedItemObserver1->iHandleItemChange = EFalse;
-    iTestCLFProcessObserver->Reset();
-    iTestCLFProcessObserver1->Reset();
-    iEngine->UpdateItemsL();
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::UpdateItemsWithIdTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::UpdateItemsWithIdTestL()
-    {
-    // MDS will do the updating automatically in the background,
-    // thus only checking that the methods return correctly
-    iChangedItemObserver->iWait = &iWait;
-    iChangedItemObserver->iChangedArray = &iChangedArray;
-    iEngine->AddChangedItemObserverL( *iChangedItemObserver );
-    iEngine->AddChangedItemObserverL( *iChangedItemObserver1 );
-    iEngine->AddCLFProcessObserverL( *iTestCLFProcessObserver );
-
-    CreateNewFileL( 0, iFileName );
-    CreateNewFileL( 1, iFileName );
-    CreateNewFileL( 2, iFileName );
-
-// update server
-// to avoid incorrect test result
-    CreateNewFileL( 0, iFileName );
-    iEngine->UpdateItemsL();
-    
-    EUNIT_ASSERT( iChangedItemObserver->iLastError == KErrNone );
-
-// start testing
-// update by id
-    TUint id1 = FindTestFileIdL( 1 );
-    TUint id0 = FindTestFileIdL( 0 );
-    TUint id2 = FindTestFileIdL( 2 );
-    iUpdateItemIdArray.AppendL( id1 );
-    iChangedItemObserver->iHandleItemChange = EFalse;
-    iChangedItemObserver1->iHandleItemChange = EFalse;
-    iTestCLFProcessObserver->Reset();
-    iTestCLFProcessObserver1->Reset();
-    CreateNewFileL( 0, iFileName );
-    CreateNewFileL( 1, iFileName );
-    iEngine->UpdateItemsL( iUpdateItemIdArray.Array() );
-    
-    EUNIT_ASSERT( iChangedItemObserver->iLastError == KErrNone );
-
-    iEngine->RemoveChangedItemObserver( *iChangedItemObserver1 );
-    iEngine->AddCLFProcessObserverL( *iTestCLFProcessObserver1 );
-
-    iChangedItemObserver->iHandleItemChange = EFalse;
-    iChangedItemObserver1->iHandleItemChange = EFalse;
-    iTestCLFProcessObserver->Reset();
-    iTestCLFProcessObserver1->Reset();
-    iUpdateItemIdArray.AppendL( id0 );
-    iUpdateItemIdArray.AppendL( id2 );
-    
-// update server
-// to avoid incorrect test result
-    iEngine->UpdateItemsL();
-    
-    EUNIT_ASSERT( iChangedItemObserver->iLastError == KErrNone );
-    
-    CreateNewFileL( 0, iFileName );
-    CreateNewFileL( 1, iFileName );
-    CreateNewFileL( 2, iFileName );
-    iChangedArray.Reset();
-    
-    iEngine->UpdateItemsL( iUpdateItemIdArray.Array() );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::UpdateItemsWithOpaqueDataFolderTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::UpdateItemsWithOpaqueDataFolderTestL()
-    {
-    // update server
-    // to avoid incorrect test result
-    iEngine->UpdateItemsL();
-    iWait.Start();
-
-    // start testing
-    // update by opaque data
-    // folders data
-    iSemanticId = KCLFUpdateFoldersSemanticId;
-    delete iOpaqueData;
-    iOpaqueData = NULL;
-
-    CDesCArray* fileArray = new (ELeave) CDesCArraySeg( 8 );
-    iOpaqueData = MakeOpaqueDataL( *fileArray );
-    // Calls internally same MDS method as when updating all data
-    // thus only interested if this call leaves
-    iEngine->UpdateItemsL( iSemanticId, *iOpaqueData );
-    }
-
-/**
- * Tests, list model
- */
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::RefreshTestL
-// ---------------------------------------------------------------------------
-//  
-void T_CLFApiModuleTests::RefreshTestL()
-    {
-    iMimeTypeArray->Reset();
-    iMimeTypeArray->AppendL( _L("*") );
-    iListModel->SetWantedMimeTypesL( *iMimeTypeArray );
-
-    iTestObserver->iWait = &iWait;
-    iTestObserver->iError = 100;
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( iTestObserver->iOperationEvent == ECLFRefreshComplete );
-    EUNIT_ASSERT( iTestObserver->iError == KErrNone );
-    EUNIT_ASSERT( iListModel->ItemCount() > 0 );
-
-// cancel refresh
-    iListModel->RefreshL();
-    iListModel->CancelRefresh();
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SetSortingStyleTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::SetSortingStyleTestL()
-    {
-    iListModel->SetSortingStyle( NULL );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( !CheckFileNameShortingL() );
-
-// file name sorting
-    iSortingStyle->ResetL();
-    iSortingStyle->SetSortingDataType( ECLFItemDataTypeDesC );
-    iSortingStyle->AddFieldL( ECLFFieldIdFileName );
-    iListModel->SetSortingStyle( iSortingStyle );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( CheckFileNameShortingL() );
-
-// file size sorting
-    iSortingStyle1->ResetL();
-    iSortingStyle1->SetOrdering( ECLFOrderingDescending );
-    iSortingStyle1->SetSortingDataType( ECLFItemDataTypeTInt32 );
-    iSortingStyle1->AddFieldL( ECLFFieldIdFileSize );
-    iListModel->SetSortingStyle( iSortingStyle1 );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( CheckFileSizeShortingL() );
-
-    iListModel->SetSortingStyle( NULL );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( !CheckFileNameShortingL() );
-    EUNIT_ASSERT( !CheckFileSizeShortingL() );
-    EUNIT_ASSERT( !CheckFileDateShortingL() );
-
-// time sorting
-    iSortingStyle->ResetL();
-    iSortingStyle->SetSortingDataType( ECLFItemDataTypeTTime );
-    iSortingStyle->AddFieldL( ECLFFieldIdFileDate );
-    iListModel->SetSortingStyle( iSortingStyle );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( CheckFileDateShortingL() );
-
-// parameter test (time)
-    iListModel->SetSortingStyle( NULL );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( !CheckFileNameShortingL() );
-    EUNIT_ASSERT( !CheckFileSizeShortingL() );
-    EUNIT_ASSERT( !CheckFileDateShortingL() );
-
-    iListModel->SetSortingStyle( iSortingStyle );
-    iListModel->RefreshL( ECLFRefreshPostFilter );
-    EUNIT_ASSERT( !CheckFileNameShortingL() );
-    EUNIT_ASSERT( !CheckFileSizeShortingL() );
-    EUNIT_ASSERT( !CheckFileDateShortingL() );
-
-    iListModel->RefreshL( ECLFRefreshGrouping );
-    EUNIT_ASSERT( !CheckFileNameShortingL() );
-    EUNIT_ASSERT( !CheckFileSizeShortingL() );
-    EUNIT_ASSERT( !CheckFileDateShortingL() );
-
-    iListModel->RefreshL( ECLFRefreshSorting );
-    EUNIT_ASSERT( !CheckFileNameShortingL() );
-    EUNIT_ASSERT( !CheckFileSizeShortingL() );
-    EUNIT_ASSERT( CheckFileDateShortingL() );
-
-// custom sorter (overwrite sorting style)
-    iTestSorter->iSortItems = EFalse;
-
-    iListModel->SetCustomSorter( iTestSorter );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( iTestSorter->iSortItems );
-    EUNIT_ASSERT( !CheckFileNameShortingL() );
-    EUNIT_ASSERT( !CheckFileSizeShortingL() );
-    EUNIT_ASSERT( !CheckFileDateShortingL() );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SetCustomSorterTestL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::SetCustomSorterTestL()
-    {
-    iTestSorter->iSortItems = EFalse;
-    iTestSorter1->iSortItems = EFalse;
-
-    iListModel->SetCustomSorter( NULL );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( !iTestSorter->iSortItems );
-    EUNIT_ASSERT( !iTestSorter1->iSortItems );
-
-    iTestSorter->iSortItems = EFalse;
-    iTestSorter1->iSortItems = EFalse;
-
-    iListModel->SetCustomSorter( iTestSorter );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( iTestSorter->iSortItems );
-    EUNIT_ASSERT( !iTestSorter1->iSortItems );
-
-    iTestSorter->iSortItems = EFalse;
-    iTestSorter1->iSortItems = EFalse;
-
-    iListModel->SetCustomSorter( iTestSorter1 );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( !iTestSorter->iSortItems );
-    EUNIT_ASSERT( iTestSorter1->iSortItems );
-
-    iTestSorter->iSortItems = EFalse;
-    iTestSorter1->iSortItems = EFalse;
-
-    iListModel->SetCustomSorter( NULL );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( !iTestSorter->iSortItems );
-    EUNIT_ASSERT( !iTestSorter1->iSortItems );
-
-    iTestSorter->iSortItems = EFalse;
-    iTestSorter1->iSortItems = EFalse;
-
-    iListModel->SetCustomSorter( iTestSorter );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( iTestSorter->iSortItems );
-    EUNIT_ASSERT( !iTestSorter1->iSortItems );
-
-    iTestSorter->iSortItems = EFalse;
-    iTestSorter1->iSortItems = EFalse;
-
-    iListModel->SetCustomSorter( iTestSorter1 );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( !iTestSorter->iSortItems );
-    EUNIT_ASSERT( iTestSorter1->iSortItems );
-
-// parameter test
-    iTestSorter->iSortItems = EFalse;
-    iTestSorter1->iSortItems = EFalse;
-
-    iListModel->SetCustomSorter( NULL );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( !iTestSorter->iSortItems );
-    EUNIT_ASSERT( !iTestSorter1->iSortItems );
-
-
-    iTestSorter->iSortItems = EFalse;
-    iTestSorter1->iSortItems = EFalse;
-
-    iListModel->SetCustomSorter( iTestSorter );
-    iListModel->RefreshL( ECLFRefreshPostFilter );
-    EUNIT_ASSERT( !iTestSorter->iSortItems );
-    EUNIT_ASSERT( !iTestSorter1->iSortItems );
-
-    iListModel->RefreshL( ECLFRefreshGrouping );
-    EUNIT_ASSERT( !iTestSorter->iSortItems );
-    EUNIT_ASSERT( !iTestSorter1->iSortItems );
-
-    iListModel->RefreshL( ECLFRefreshSorting );
-    EUNIT_ASSERT( iTestSorter->iSortItems );
-    EUNIT_ASSERT( !iTestSorter1->iSortItems );
-
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::GroupingTestL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::GroupingTestL()
-    {
-    iTestGrouper->iModifiableItems = &iModifiableItems;
-    iTestGrouper1->iModifiableItems = &iModifiableItems;
-
-// No grouping
-    iListModel->SetCustomGrouper( NULL );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( iListModel->ItemCount() == iItemCount );
-
-// couple groups
-    iListModel->SetCustomGrouper( iTestGrouper );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( iListModel->ItemCount() == iModifiableItems.Count() );
-
-// 0 groups
-    iTestGrouper1->iGroupCount = 0;
-    iListModel->SetCustomGrouper( iTestGrouper1 );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( iListModel->ItemCount() == iModifiableItems.Count() );
-
-// No grouping
-    iListModel->SetCustomGrouper( NULL );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( iListModel->ItemCount() == iItemCount );
-// Music album grouping
-    iListModel->SetGroupingStyle( ECLFMusicAlbumGrouping );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( iListModel->ItemCount() != iItemCount );
-// No grouping
-    iListModel->SetGroupingStyle( ECLFNoGrouping );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( iListModel->ItemCount() == iItemCount );
-
-// test parameters
-    iTestGrouper->iGroupCount = 1000;
-    iListModel->SetCustomGrouper( iTestGrouper );
-    iListModel->RefreshL( ECLFRefreshPostFilter );
-    EUNIT_ASSERT( iListModel->ItemCount() == iItemCount );
-    iListModel->RefreshL( ECLFRefreshSorting );
-    EUNIT_ASSERT( iListModel->ItemCount() == iItemCount );
-    iListModel->RefreshL( ECLFRefreshGrouping );
-    EUNIT_ASSERT( iListModel->ItemCount() == iModifiableItems.Count() );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SetPostFilterTestL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::SetPostFilterTestL()
-    {
-// no filter
-    iListModel->SetPostFilter( NULL );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( iListModel->ItemCount() == iItemCount );
-
-// filter couple items
-    iListModel->SetPostFilter( iTestFilter );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( ( iListModel->ItemCount() + iTestFilter->iFilteredCount ) == iItemCount );
-
-// filter all items
-    iListModel->SetPostFilter( iTestFilter1 );
-    iTestFilter1->iAllFilter = ETrue;
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( ( iListModel->ItemCount() + iTestFilter1->iFilteredCount ) == iItemCount );
-
-// no filter
-    iListModel->SetPostFilter( NULL );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( iListModel->ItemCount() == iItemCount );
-
-// filter one item
-    iListModel->SetPostFilter( iTestFilter );
-    iTestFilter->iShouldFilterCount = 1;
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( ( iListModel->ItemCount() + iTestFilter->iFilteredCount ) == iItemCount );
-
-// filter couple items
-    iListModel->SetPostFilter( iTestFilter1 );
-    iTestFilter1->iAllFilter = EFalse;
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( ( iListModel->ItemCount() + iTestFilter1->iFilteredCount ) == iItemCount );
-
-// test parameters
-    iListModel->SetPostFilter( NULL );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( iListModel->ItemCount() == iItemCount );
-    iListModel->SetPostFilter( iTestFilter1 );
-    iTestFilter1->iAllFilter = ETrue;
-    iListModel->RefreshL( ECLFRefreshSorting );
-    EUNIT_ASSERT( iListModel->ItemCount() == iItemCount );
-    iListModel->RefreshL( ECLFRefreshGrouping );
-    EUNIT_ASSERT( iListModel->ItemCount() == iItemCount );
-    iListModel->RefreshL( ECLFRefreshPostFilter );
-    EUNIT_ASSERT( ( iListModel->ItemCount() + iTestFilter1->iFilteredCount ) == iItemCount );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SetWantedMimeTypesTestL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::SetWantedMimeTypesTestL()
-    {
-    iTestObserver->iWait = &iWait;
-
-// list not defined (mimetype)
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( iListModel->ItemCount() == 0 );
-
-// couple mime types
-    iMimeTypeArray->Reset();
-    iMimeTypeArray->AppendL( _L( "audio/mpeg" ) );
-    iMimeTypeArray->AppendL( _L( "audio/aac" ) );
-    iMimeTypeArray->AppendL( _L( "audio/mp3" ) );
-    iMimeTypeArray->AppendL( _L( "audio/x-mp3" ) );
-    iMimeTypeArray->AppendL( _L( "audio/mp4" ) );
-    iMimeTypeArray->AppendL( _L( "audio/3gpp" ) );
-    iMimeTypeArray->AppendL( _L( "audio/m4a" ) );
-    iMimeTypeArray->AppendL( _L( "audio/3gpp2" ) );
-    iMimeTypeArray->AppendL( _L( "audio/mpeg4") );
-    iListModel->SetWantedMimeTypesL( *iMimeTypeArray );
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( CheckFileTypesL( *iMimeTypeArray, iMediaTypeArray.Array() ) );
-
-// unsupported mimetype
-    iMimeTypeArray1->Reset();
-    iMimeTypeArray1->AppendL( _L("ei tämmöstä ees pitäis olla")  );
-    iListModel->SetWantedMimeTypesL( *iMimeTypeArray1 );
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( iListModel->ItemCount() == 0 );
-
-// empty mimetype list
-    iMimeTypeArray1->Reset();
-    iListModel->SetWantedMimeTypesL( *iMimeTypeArray1 );
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( iListModel->ItemCount() == 0 );
-
-// from resource (mimetype)
-    iMimeTypeArray->Reset();
-    iMimeTypeArray->AppendL( _L("image/*")  );
-    iMimeTypeArray->AppendL( _L("audio/*")  );
-
-    ResourceL( R_MIME_TYPE_ARRAY );
-    iListModel->SetWantedMimeTypesL( iResourceReader );
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( CheckFileTypesL( *iMimeTypeArray, iMediaTypeArray.Array() ) );
-
-    ResourceL( R_MIME_TYPE_ARRAY_EMPTY );
-    iListModel->SetWantedMimeTypesL( iResourceReader );
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( iListModel->ItemCount() == 0 );
-
-// incorrect resource version
-    ResourceL( R_MIME_TYPE_ARRAY_INCORRECT_VERSION );
-    EUNIT_ASSERT_SPECIFIC_LEAVE( iListModel->SetWantedMimeTypesL( iResourceReader ), KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SetWantedMediaTypesTestL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::SetWantedMediaTypesTestL()
-    {
-    iTestObserver->iWait = &iWait;
-
-// list not defined (mediatype)
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( iListModel->ItemCount() == 0 );
-
-// couple media types
-    iMediaTypeArray.AppendL( ECLFMediaTypeVideo );
-    iMediaTypeArray.AppendL( ECLFMediaTypeImage );
-    iMediaTypeArray.AppendL( ECLFMediaTypeSound );
-    iMediaTypeArray.AppendL( ECLFMediaTypeMusic );
-    iMediaTypeArray.AppendL( ECLFMediaTypeStreamingURL );
-    iMediaTypeArray.AppendL( ECLFMediaTypePlaylist );
-    iMediaTypeArray.AppendL( TCLFMediaType( ECLFMediaTypeCollection ) );
-
-    iListModel->SetWantedMediaTypesL( iMediaTypeArray.Array() );
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( CheckFileTypesL( *iMimeTypeArray, iMediaTypeArray.Array() ) );
-
-// empty media type list list
-    iListModel->SetWantedMediaTypesL( iMediaTypeArray1.Array() );
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( iListModel->ItemCount() == 0 );
-
-// media type list from resource
-    iMediaTypeArray.Reset();
-    iMediaTypeArray.AppendL( ECLFMediaTypeImage );
-    iMediaTypeArray.AppendL( TCLFMediaType( ECLFMediaTypeCollection ) );
-    ResourceL( R_MEDIA_TYPE_ARRAY );
-    iListModel->SetWantedMediaTypesL( iResourceReader );
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( CheckFileTypesL( *iMimeTypeArray, iMediaTypeArray.Array() ) );
-
-// empty media type list from resource
-    ResourceL( R_MEDIA_TYPE_ARRAY_EMPTY );
-    iListModel->SetWantedMediaTypesL( iResourceReader );
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( iListModel->ItemCount() == 0 );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SetWantedMediaAndMimeTypesTestL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::SetWantedMediaAndMimeTypesTestL()
-    {
-    iTestObserver->iWait = &iWait;
-
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( iListModel->ItemCount() == 0 );
-
-// couple types
-    iMimeTypeArray->AppendL( _L( "audio/mpeg" ) );
-    iMimeTypeArray->AppendL( _L( "audio/aac" ) );
-    iMimeTypeArray->AppendL( _L( "audio/mp3" ) );
-    iMimeTypeArray->AppendL( _L( "audio/x-mp3" ) );
-    iMimeTypeArray->AppendL( _L( "audio/mp4" ) );
-    iMimeTypeArray->AppendL( _L( "audio/3gpp" ) );
-    iMimeTypeArray->AppendL( _L( "audio/m4a" ) );
-    iMimeTypeArray->AppendL( _L( "audio/3gpp2" ) );
-    iMimeTypeArray->AppendL( _L( "audio/mpeg4") );
-    iListModel->SetWantedMimeTypesL( *iMimeTypeArray );
-
-    iMediaTypeArray.AppendL( ECLFMediaTypeVideo );
-    iListModel->SetWantedMediaTypesL( iMediaTypeArray.Array() );
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( CheckFileTypesL( *iMimeTypeArray, iMediaTypeArray.Array() ) );
-
-// refresh again
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( CheckFileTypesL( *iMimeTypeArray, iMediaTypeArray.Array() ) );
-
-// empty lists
-    iMediaTypeArray.Reset();
-    iMimeTypeArray->Reset();
-    iListModel->SetWantedMediaTypesL( iMediaTypeArray.Array() );
-    iListModel->SetWantedMimeTypesL( *iMimeTypeArray );
-    iListModel->RefreshL();
-    iWait.Start();
-    EUNIT_ASSERT( iListModel->ItemCount() == 0 );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::MultibleSortingTestL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::MultibleSortingTestL()
-    {
-
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( CheckMultibleSortingShortingL() );
-
-// resort
-
-    iSortingStyle->ResetL();
-    iSortingStyle->SetSortingDataType( ECLFItemDataTypeTInt32 );
-    iSortingStyle->AddFieldL( KMultibleSortingTestField6 );
-    iSortingStyle->AddFieldL( KMultibleSortingTestField5 );
-    iSortingStyle->SetUndefinedItemPosition( ECLFSortingStyleUndefinedEnd );
-    iListModel->SetSortingStyle( iSortingStyle );
-    iListModel->RefreshL( ECLFRefreshAll );
-    EUNIT_ASSERT( CheckMultibleSortingShorting2L() );
-
-    }
-
-/*
-* Test model item(s) obsolate functionality
-*/
-
-// ---------------------------------------------------------------------------
-// ModelItemsChangedTestL
-// ---------------------------------------------------------------------------
-//
-void T_CLFApiModuleTests::ModelItemsChangedTestL()
-    {
-    const TInt newFileNumber( 10 );
-
-// create test files
-    CreateNewFileL( 0, iFileName );
-    CreateNewFileL( 1, iFileName );
-    CreateNewFileL( 2, iFileName );
-    CreateNewFileL( newFileNumber, iFileName );
-    User::LeaveIfError( iFs.Delete( iFileName ) );
-
-// update server
-// to avoid incorrect test result
-    CreateNewFileL( 0, iFileName );
-    iEngine->UpdateItemsL();
-
-// create list model with all files
-    iMimeTypeArray->Reset();
-    iMimeTypeArray->AppendL( _L("*") );
-    iListModel->SetWantedMimeTypesL( *iMimeTypeArray );
-
-    iTestObserver->iWait = &iWait;
-    iTestObserver->iError = 100;
-    iListModel->RefreshL();
-    iWait.Start();  // wait until model is refreshed
-    EUNIT_ASSERT( iTestObserver->iOperationEvent == ECLFRefreshComplete );
-    EUNIT_ASSERT( iTestObserver->iError == KErrNone );
-    EUNIT_ASSERT( iListModel->ItemCount() > 0 );
-
-    const TInt listModelItemCount( iListModel->ItemCount() );
-    const TCLFItemId testId( FindTestFileIdL( 0 ) );
-
-// test with modified item
-    CreateNewFileL( 0, iFileName );
-    iEngine->UpdateItemsL();
-    iWait.Start(); // wait until model outdated event is received
-
-    EUNIT_ASSERT( iTestObserver->iOperationEvent == ECLFModelOutdated );
-    EUNIT_ASSERT( iTestObserver->iError == KErrNone );
-    EUNIT_ASSERT( iListModel->ItemCount() == listModelItemCount );
-    EUNIT_ASSERT( NULL != FindItem( *iListModel, testId ) );
-
-    iTestObserver->iError = 100;
-    iListModel->RefreshL();
-    iWait.Start();  // wait until model is refreshed
-    EUNIT_ASSERT( iTestObserver->iOperationEvent == ECLFRefreshComplete );
-    EUNIT_ASSERT( iTestObserver->iError == KErrNone );
-    EUNIT_ASSERT( iListModel->ItemCount() == listModelItemCount );
-    EUNIT_ASSERT( NULL != FindItem( *iListModel, testId ) );
-
-// test with new item
-    CreateNewFileL( newFileNumber, iFileName );
-    iEngine->UpdateItemsL();
-    iWait.Start(); // wait until model outdated event is received
-
-    EUNIT_ASSERT( iTestObserver->iOperationEvent == ECLFModelOutdated );
-    EUNIT_ASSERT( iTestObserver->iError == KErrNone );
-    EUNIT_ASSERT( iListModel->ItemCount() == listModelItemCount );
-
-    iTestObserver->iError = 100;
-    iListModel->RefreshL();
-    iWait.Start();  // wait until model is refreshed
-    EUNIT_ASSERT( iTestObserver->iOperationEvent == ECLFRefreshComplete );
-    EUNIT_ASSERT( iTestObserver->iError == KErrNone );
-    EUNIT_ASSERT( iListModel->ItemCount() == listModelItemCount + 1 );
-
-// delete file
-    User::LeaveIfError( iFs.Delete( iFileName ) );
-    iEngine->UpdateItemsL();
-    iWait.Start(); // wait until model outdated event is received
-
-    EUNIT_ASSERT( iTestObserver->iOperationEvent == ECLFModelOutdated );
-    EUNIT_ASSERT( iTestObserver->iError == KErrNone );
-    EUNIT_ASSERT( iListModel->ItemCount() == listModelItemCount + 1 );
-
-    iTestObserver->iError = 100;
-    iListModel->RefreshL();
-    iWait.Start();  // wait until model is refreshed
-    EUNIT_ASSERT( iTestObserver->iOperationEvent == ECLFRefreshComplete );
-    EUNIT_ASSERT( iTestObserver->iError == KErrNone );
-    EUNIT_ASSERT( iListModel->ItemCount() == listModelItemCount );
-    }
-
-/**
- * Tests, Modifiable item
- */
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::MIFieldTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::MIFieldTestL()
-    {
-    const TUint KTestField1 = 1;
-    const TUint KTestField2 = 112312312;
-    const TUint KTestField3 = 13333;
-    const TUint KTestFieldIncorrect = 2;
-
-    TTime time( 100 );
-    TInt32 integer( 12 );
-    TBuf<30> data( _L("data") );
-    iModifiableItem->AddFieldL( KTestField1, time );
-    iModifiableItem->AddFieldL( KTestField2, integer );
-    iModifiableItem->AddFieldL( KTestField3, data );
-
-// data type test
-    EUNIT_ASSERT( iModifiableItem->DataType(
-                                KTestField1 ) == ECLFItemDataTypeTTime );
-    EUNIT_ASSERT( iModifiableItem->DataType(
-                                KTestField2 ) == ECLFItemDataTypeTInt32 );
-    EUNIT_ASSERT( iModifiableItem->DataType(
-                                KTestField3 ) == ECLFItemDataTypeDesC );
-    EUNIT_ASSERT( iModifiableItem->DataType(
-                                KTestFieldIncorrect ) == ECLFItemDataTypeNull );
-    EUNIT_ASSERT( iModifiableItem->DataType(
-                                ECLFFieldIdNull ) == ECLFItemDataTypeNull );
-
-// get field
-    TTime time1( 0 );
-    TInt32 integer1( 0 );
-    TPtrC ptr;
-    EUNIT_ASSERT( KErrNone == iModifiableItem->GetField(
-                                                KTestField1, time1 ) );
-    EUNIT_ASSERT( time == time1 );
-    EUNIT_ASSERT( KErrNone == iModifiableItem->GetField(
-                                                KTestField2, integer1 ) );
-    EUNIT_ASSERT( integer == integer1 );
-    EUNIT_ASSERT( KErrNone == iModifiableItem->GetField(
-                                                KTestField3, ptr ) );
-    EUNIT_ASSERT( data == ptr );
-
-// incorrect field id
-    EUNIT_ASSERT( KErrNotFound == iModifiableItem->GetField(
-                                                KTestFieldIncorrect, ptr ) );
-    EUNIT_ASSERT( KErrNotFound == iModifiableItem->GetField(
-                                                KTestFieldIncorrect, integer1 ) );
-    EUNIT_ASSERT( KErrNotFound == iModifiableItem->GetField(
-                                                KTestFieldIncorrect, time1 ) );
-
-// incorrect field type
-    EUNIT_ASSERT( KErrNotSupported == iModifiableItem->GetField(
-                                                KTestField1, ptr ) );
-    EUNIT_ASSERT( KErrNotSupported == iModifiableItem->GetField(
-                                                KTestField3, integer1 ) );
-    EUNIT_ASSERT( KErrNotSupported == iModifiableItem->GetField(
-                                                KTestField2, time1 ) );
-
-
-    EUNIT_ASSERT( iModifiableItem->ItemId() == 0 );
-    }
-
-/**
- * Tests, item
- */
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::ItemFieldTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::ItemFieldTestL()
-    {
-// data type test
-    EUNIT_ASSERT( iItem->DataType(
-                                ECLFFieldIdFileDate ) == ECLFItemDataTypeTTime );
-    EUNIT_ASSERT( iItem->DataType(
-                                ECLFFieldIdFileSize ) == ECLFItemDataTypeTInt32 );
-    EUNIT_ASSERT( iItem->DataType(
-                                ECLFFieldIdFileNameAndPath ) == ECLFItemDataTypeDesC );
-    EUNIT_ASSERT( iItem->DataType(
-                                ECLFFieldIdNull ) == ECLFItemDataTypeNull );
-
-// get field
-    TTime time1( 0 );
-    TInt32 integer1( 0 );
-    TPtrC ptr;
-    TEntry entry;
-    User::LeaveIfError( iFs.Entry( iFileName, entry ) );
-
-    EUNIT_ASSERT( KErrNone == iItem->GetField( ECLFFieldIdFileDate, time1 ) );
-    EUNIT_ASSERT( entry.iModified == time1 );
-    EUNIT_ASSERT( KErrNone == iItem->GetField( ECLFFieldIdFileSize, integer1 ) );
-    EUNIT_ASSERT( entry.iSize == integer1 );
-    EUNIT_ASSERT( KErrNone == iItem->GetField( ECLFFieldIdFileNameAndPath, ptr ) );
-    EUNIT_ASSERT( iFileName == ptr );
-
-    TParsePtrC parse( iFileName );
-
-    EUNIT_ASSERT( KErrNone == iItem->GetField( ECLFFieldIdFileExtension, ptr ) );
-    EUNIT_ASSERT( parse.Ext() == ptr );
-
-    EUNIT_ASSERT( KErrNone == iItem->GetField( ECLFFieldIdFileName, ptr ) );
-    EUNIT_ASSERT( parse.Name() == ptr );
-
-    EUNIT_ASSERT( KErrNone == iItem->GetField( ECLFFieldIdPath, ptr ) );
-    EUNIT_ASSERT( parse.Path() == ptr );
-
-    EUNIT_ASSERT( KErrNone == iItem->GetField( ECLFFieldIdDrive, ptr ) );
-    EUNIT_ASSERT( parse.Drive() == ptr );
-
-
-// incorrect field id
-    EUNIT_ASSERT( KErrNotFound == iItem->GetField(
-                                                ECLFFieldIdNull, ptr ) );
-    EUNIT_ASSERT( KErrNotFound == iItem->GetField(
-                                                ECLFFieldIdNull, integer1 ) );
-    EUNIT_ASSERT( KErrNotFound == iItem->GetField(
-                                                ECLFFieldIdNull, time1 ) );
-
-// incorrect field type
-    EUNIT_ASSERT( KErrNotSupported == iItem->GetField(
-                                                ECLFFieldIdFileSize, ptr ) );
-    EUNIT_ASSERT( KErrNotSupported == iItem->GetField(
-                                                ECLFFieldIdFileDate, integer1 ) );
-    EUNIT_ASSERT( KErrNotSupported == iItem->GetField(
-                                                ECLFFieldIdFileNameAndPath, time1 ) );
-
-
-    EUNIT_ASSERT( iItem->ItemId() != 0 );
-    }
-
-/**
- * Tests, Sorting style
- */
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SortingStyleResourceTestL
-// ---------------------------------------------------------------------------
-//  
-void T_CLFApiModuleTests::SortingStyleResourceTestL()
-    {
-    const TInt KArray1IdCount( 4 );
-    const TInt KArray2IdCount( 1 );
-
-
-    RArray<TCLFItemId> itemIdArray;
-    CleanupClosePushL( itemIdArray );
-
-    EUNIT_ASSERT( iSortingStyle->Ordering() == ECLFOrderingAscending );
-    EUNIT_ASSERT( iSortingStyle1->Ordering() == ECLFOrderingDescending );
-    EUNIT_ASSERT( iSortingStyle2->Ordering() == ECLFOrderingDescending );
-    EUNIT_ASSERT( iSortingStyle->SortingDataType() == ECLFItemDataTypeTInt32 );
-    EUNIT_ASSERT( iSortingStyle1->SortingDataType() == ECLFItemDataTypeDesC );
-    EUNIT_ASSERT( iSortingStyle2->SortingDataType() == ECLFItemDataTypeDesC );
-
-    iSortingStyle->GetFieldsL( itemIdArray );
-
-    EUNIT_ASSERT( itemIdArray.Count() == 0 );
-
-    itemIdArray.Reset();
-    iSortingStyle1->GetFieldsL( itemIdArray );
-
-    EUNIT_ASSERT( itemIdArray.Count() == KArray1IdCount );
-
-    itemIdArray.Reset();
-    iSortingStyle2->GetFieldsL( itemIdArray );
-
-    EUNIT_ASSERT( itemIdArray.Count() == KArray2IdCount );
-
-    CleanupStack::PopAndDestroy( &itemIdArray ); // itemIdArray.Close
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SortingStyleOrderingTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::SortingStyleOrderingTestL()
-    {
-    iSortingStyle->SetOrdering( ECLFOrderingAscending );
-    EUNIT_ASSERT( iSortingStyle->Ordering() == ECLFOrderingAscending );
-    iSortingStyle->SetOrdering( ECLFOrderingDescending );
-    EUNIT_ASSERT( iSortingStyle->Ordering() == ECLFOrderingDescending );
-    iSortingStyle->SetOrdering( ECLFOrderingAscending );
-    EUNIT_ASSERT( iSortingStyle->Ordering() == ECLFOrderingAscending );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SortingStyleDataTypeTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::SortingStyleDataTypeTestL()
-    {
-    iSortingStyle->SetSortingDataType( ECLFItemDataTypeTInt32 );
-    EUNIT_ASSERT( iSortingStyle->SortingDataType() == ECLFItemDataTypeTInt32 );
-    iSortingStyle->SetSortingDataType( ECLFItemDataTypeDesC );
-    EUNIT_ASSERT( iSortingStyle->SortingDataType() == ECLFItemDataTypeDesC );
-    iSortingStyle->SetSortingDataType( ECLFItemDataTypeTTime );
-    EUNIT_ASSERT( iSortingStyle->SortingDataType() == ECLFItemDataTypeTTime );
-    iSortingStyle->SetSortingDataType( ECLFItemDataTypeNull );
-    EUNIT_ASSERT( iSortingStyle->SortingDataType() == ECLFItemDataTypeNull );
-    iSortingStyle->SetSortingDataType( ECLFItemDataTypeTInt32 );
-    EUNIT_ASSERT( iSortingStyle->SortingDataType() == ECLFItemDataTypeTInt32 );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SortingStyleUndefinedItemPositionTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::SortingStyleUndefinedItemPositionTestL()
-    {
-    iSortingStyle->SetUndefinedItemPosition( ECLFSortingStyleUndefinedEnd );
-    EUNIT_ASSERT( iSortingStyle->UndefinedItemPosition() == ECLFSortingStyleUndefinedEnd );
-    iSortingStyle->SetUndefinedItemPosition( ECLFSortingStyleUndefinedFirst );
-    EUNIT_ASSERT( iSortingStyle->UndefinedItemPosition() == ECLFSortingStyleUndefinedFirst );
-    iSortingStyle->SetUndefinedItemPosition( ECLFSortingStyleUndefinedEnd );
-    EUNIT_ASSERT( iSortingStyle->UndefinedItemPosition() == ECLFSortingStyleUndefinedEnd );
-    }
-
-// ---------------------------------------------------------------------------
-// T_CLFApiModuleTests::SortingStyleFieldTestL
-// ---------------------------------------------------------------------------
-// 
-void T_CLFApiModuleTests::SortingStyleFieldTestL()
-    {
-    RArray<TCLFItemId> itemIdArray;
-    CleanupClosePushL( itemIdArray );
-
-    iSortingStyle->GetFieldsL( itemIdArray );
-    EUNIT_ASSERT( itemIdArray.Count() == 0 );
-
-    iSortingStyle->AddFieldL( ECLFFieldIdFileName );
-    iSortingStyle->AddFieldL( ECLFFieldIdCollectionId );
-    iSortingStyle->AddFieldL( ECLFFieldIdCollectionName );
-    iSortingStyle->AddFieldL( ECLFFieldIdArtist );
-
-    iSortingStyle->GetFieldsL( itemIdArray );
-
-    EUNIT_ASSERT( itemIdArray.Count() == 4 );
-
-    itemIdArray.Reset();
-    iSortingStyle->ResetL();
-    iSortingStyle->GetFieldsL( itemIdArray );
-    EUNIT_ASSERT( itemIdArray.Count() == 0 );
-
-    CleanupStack::PopAndDestroy( &itemIdArray ); // itemIdArray.Close
-    }
-
-// ---------------------------------------------------------------------------
-// Test case table for this test suite class
-// ---------------------------------------------------------------------------
-// 
-
-EUNIT_BEGIN_TEST_TABLE( T_CLFApiModuleTests, "T_CLFApiModuleTests", "MODULE" )
-
-// Constructor tests
-    EUNIT_TEST( "Create engine",
-                "",
-                "",
-                "FUNCTIONALITY",
-                BaseSetupL,
-                CreateEngineTestL,
-                Teardown )
-
-    EUNIT_TEST( "Create modifiable item",
-                "",
-                "",
-                "FUNCTIONALITY",
-                BaseSetupL,
-                CreateModifiableItemTestL,
-                Teardown )
-
-    EUNIT_TEST( "Create sorting style",
-                "",
-                "",
-                "FUNCTIONALITY",
-                BaseSetupL,
-                CreateSortignStyleTestL,
-                Teardown )
-
-    EUNIT_TEST( "Create sorting style from resource",
-                "",
-                "",
-                "FUNCTIONALITY",
-                SortingStyleResourceSetupL,
-                CreateSortignStyleFromResourceTestL,
-                Teardown )
-
-    EUNIT_TEST( "Create list model",
-                "",
-                "",
-                "FUNCTIONALITY",
-                CreateModelSetupL,
-                CreateListModelTestL,
-                Teardown )
-
-    EUNIT_TEST( "Create list model from resource",
-                "",
-                "",
-                "FUNCTIONALITY",
-                CreateModelFromResourceSetupL,
-                CreateListModelFromResourceTestL,
-                Teardown )
-
-// Engine tests
-
-    EUNIT_TEST( "Engine update test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                EngineTestSetupL,
-                UpdateItemsTestL,
-                Teardown )
-
-    EUNIT_TEST( "Engine update test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                EngineTestSetupL,
-                UpdateItemsWithIdTestL,
-                Teardown )
-
-    EUNIT_TEST( "Engine update test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                EngineTestSetupL,
-                UpdateItemsWithOpaqueDataFolderTestL,
-                Teardown )
-
-// Sorting Style tests
-    EUNIT_TEST( "Sorting style from resource",
-                "",
-                "",
-                "FUNCTIONALITY",
-                SortingStyleResourceTestSetupL,
-                SortingStyleResourceTestL,
-                Teardown )
-
-    EUNIT_TEST( "Sorting style ordering test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                SortingStyleTestSetupL,
-                SortingStyleOrderingTestL,
-                Teardown )
-
-    EUNIT_TEST( "Sorting style data type test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                SortingStyleTestSetupL,
-                SortingStyleDataTypeTestL,
-                Teardown )
-
-    EUNIT_TEST( "Sorting style undefined item position test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                SortingStyleTestSetupL,
-                SortingStyleUndefinedItemPositionTestL,
-                Teardown )
-
-    EUNIT_TEST( "Sorting style field test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                SortingStyleTestSetupL,
-                SortingStyleFieldTestL,
-                Teardown )
-
-// List model tests
-    EUNIT_TEST( "List model refresh test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                ListModelSetupL,
-                RefreshTestL,
-                Teardown )
-
-    EUNIT_TEST( "List model sorting style test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                ListModelAllFileItemsSetupL,
-                SetSortingStyleTestL,
-                Teardown )
-
-    EUNIT_TEST( "List model custom sorter test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                ListModelAllFileItemsSetupL,
-                SetCustomSorterTestL,
-                Teardown )
-
-    EUNIT_TEST( "List model grouping test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                ListModelAllFileItemsSetupL,
-                GroupingTestL,
-                Teardown )
-
-    EUNIT_TEST( "List model post filter test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                ListModelAllFileItemsSetupL,
-                SetPostFilterTestL,
-                Teardown )
-
-    EUNIT_TEST( "List model wanted mime types test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                ListModelSetupL,
-                SetWantedMimeTypesTestL,
-                Teardown )
-
-    EUNIT_TEST( "List model wanted media types test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                ListModelSetupL,
-                SetWantedMediaTypesTestL,
-                Teardown )
-
-    EUNIT_TEST( "List model wanted media and mime types",
-                "",
-                "",
-                "FUNCTIONALITY",
-                ListModelSetupL,
-                SetWantedMediaAndMimeTypesTestL,
-                Teardown )
-
-    EUNIT_TEST( "List model multible sorters",
-                "",
-                "",
-                "FUNCTIONALITY",
-                MultibleSortingSetupL,
-                MultibleSortingTestL,
-                Teardown )
-
-    EUNIT_TEST( "List model multible sorters",
-                "",
-                "",
-                "FUNCTIONALITY",
-                MultibleSortingResourceSetupL,
-                MultibleSortingTestL,
-                Teardown )
-
-    EUNIT_TEST( "List model changed items",
-                "",
-                "",
-                "FUNCTIONALITY",
-                ListModelSetupL,
-                ModelItemsChangedTestL,
-                Teardown )
-
-
-// Modifiable item tests
-    EUNIT_TEST( "Modifiable item test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                ModifiableItemTestSetupL,
-                MIFieldTestL,
-                Teardown )
-
-// Item tests
-    EUNIT_TEST( "Item test",
-                "",
-                "",
-                "FUNCTIONALITY",
-                ItemTestSetupL,
-                ItemFieldTestL,
-                Teardown )
-
-
-EUNIT_END_TEST_TABLE
-
-//  End of File