diff -r 000000000000 -r 5e5d6b214f4f uiservicetab/vimpststorage/tsrc/vimpststorage_ut/cvimpststoragecontactsorter_ut/src/CVIMPSTStorageContactSorter_UTBlocks.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiservicetab/vimpststorage/tsrc/vimpststorage_ut/cvimpststoragecontactsorter_ut/src/CVIMPSTStorageContactSorter_UTBlocks.cpp Tue Feb 02 10:12:18 2010 +0200 @@ -0,0 +1,530 @@ +/* +* Copyright (c) 2009 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: +: +* +*/ + + + +// [INCLUDE FILES] - do not remove +#include +#include +#include +#include "CVIMPSTStorageContactSorter_UT.h" +#include "cvimpststoragecontactsorter.h" +#include "vimpstdebugtrace.h" +#include +#include "mvimpststoragecontact.h" +#include "cvimpststoragecontact.h" +#include "tvimpstenums.h" +#include "tvimpststoragepanics.h" + +_LIT( KUserId1, "vidic@mu.com"); +_LIT( KUserId2, "carr@mu.com"); +_LIT( KUserId3, "terry@mu.com"); +_LIT( KUserId4, "gibbs@mu.com"); + +_LIT( KDisplayName1, "vidic"); +_LIT( KDisplayName2, "carr"); +_LIT( KDisplayName3, "terry"); +_LIT( KDisplayName4, "gibbs"); +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CCVIMPSTStorageContactSorter_UT::Delete +// Delete here all resources allocated and opened from test methods. +// Called from destructor. +// ----------------------------------------------------------------------------- +// +void CCVIMPSTStorageContactSorter_UT::Delete() + { + + } + +// ----------------------------------------------------------------------------- +// CCVIMPSTStorageContactSorter_UT::RunMethodL +// Run specified method. Contains also table of test mothods and their names. +// ----------------------------------------------------------------------------- +// +TInt CCVIMPSTStorageContactSorter_UT::RunMethodL( + CStifItemParser& aItem ) + { + + static TStifFunctionInfo const KFunctions[] = + { + // Copy this line for every implemented function. + // First string is the function name used in TestScripter script file. + // Second is the actual implementation member function. + ENTRY( "CreateSorter", CCVIMPSTStorageContactSorter_UT::Test_NewL ), + ENTRY( "DoSort", CCVIMPSTStorageContactSorter_UT::Test_SortL ), + ENTRY( "SelectAlgorithm", CCVIMPSTStorageContactSorter_UT::SetSortAlgorithm ), + ENTRY( "CompareContacts", CCVIMPSTStorageContactSorter_UT::Test_CompareL ), + //ADD NEW ENTRY HERE + // [test cases entries] - Do not remove + + }; + + const TInt count = sizeof( KFunctions ) / + sizeof( TStifFunctionInfo ); + + return RunInternalL( KFunctions, count, aItem ); + + } + +// -- -- -- -- ------------------------------------------------- +// @ see CVIMPSTStorageSorter_UT.h for description. +// -- -- -- -- ------------------------------------------------- +// +TInt CCVIMPSTStorageContactSorter_UT::Test_NewL( CStifItemParser& aItem ) + { + TInt result = KErrGeneral; + + CVIMPSTStorageContactSorter* sorter = NULL; + + sorter = CVIMPSTStorageContactSorter::NewL(); + + if( sorter ) + { + result = KErrNone; + } + if( sorter ) + { + delete sorter; + } + return result; + } + +// -- -- -- -- ------------------------------------------------- +// @ see CVIMPSTStorageSorter_UT.h for description. +// -- -- -- -- ------------------------------------------------- +// +TInt CCVIMPSTStorageContactSorter_UT::Test_SortL( CStifItemParser& aItem ) + { + TInt result = KErrGeneral; + + TPtrC param; + + MVIMPSTStorageContact::TSortAlgorithm sortAlgorithm; + + aItem.GetNextString( param ); + + CVIMPSTStorageContactSorter* sorter = NULL; + + sorter = CVIMPSTStorageContactSorter::NewL(); + + // setting the algorithm to be used for sorting. + if( param.Compare( _L("alpha") ) == 0 ) + { + sortAlgorithm = MVIMPSTStorageContact::ECompareAlphabetically; + } + else if( param.Compare( _L("presence") ) == 0 ) + { + sortAlgorithm = MVIMPSTStorageContact::ECompareByPresence; + } + + // comparing the sorted array and result array. + // setting the result for the test case. + TInt compareResult = -1; + + CreateContactArray(); + + switch( sortAlgorithm ) + { + case MVIMPSTStorageContact::ECompareByPresence: + { + // sorting the contact array + sorter->SetSortAlgorithm( sortAlgorithm ); + CreatePresenceSortArray(); + sorter->Sort( iContactArray ); + compareResult = CompareArray( iContactArray, iPresenceSortArray ); + ResetArray( iPresenceSortArray ); + break; + } + case MVIMPSTStorageContact::ECompareAlphabetically: + default: + { + // sorting the contact array + sorter->SetSortAlgorithm( sortAlgorithm ); + CreateAlphabeticalSortArray(); + sorter->Sort( iContactArray ); + compareResult = CompareArray( iContactArray, iAlphabeticalSortArray ); + ResetArray( iAlphabeticalSortArray ); + break; + } + } + ResetArray( iContactArray ); + + if( -1 == compareResult ) + { + result = KErrNone; + } + + if( sorter ) + delete sorter; + + return result; + } + +// -- -- -- -- ------------------------------------------------- +// @ see CVIMPSTStorageSorter_UT.h for description. +// -- -- -- -- ------------------------------------------------- +// +TInt CCVIMPSTStorageContactSorter_UT::Test_CompareL( CStifItemParser& aItem ) + { + TInt result = KErrGeneral; + + CVIMPSTStorageContactSorter* sorter = NULL; + + sorter = CVIMPSTStorageContactSorter::NewL(); + + CVIMPSTStorageContact* contact1 = NULL; + CVIMPSTStorageContact* contact2 = NULL; + TBuf<64> userId; + TBuf<64> displayName; + + TPtrC param; + aItem.GetNextString( param ); + TInt compareResult; + + if( param.Compare( _L("2validcontacts") ) == 0 ) + { + // first contact + userId.Copy(KUserId1); + displayName.Copy( KDisplayName1 ); + contact1 = CVIMPSTStorageContact::NewL( userId, displayName ); + + // second contact + userId.Copy(KUserId2); + displayName.Copy( KDisplayName2 ); + contact2 = CVIMPSTStorageContact::NewL( userId, displayName ); + + compareResult = sorter->Compare( *contact1, *contact2 ); + + if( compareResult ) + { + result = KErrNone; + } + + } + else if( param.Compare( _L("1validcontact") ) == 0 ) + { + // first contact + userId.Copy(KUserId1); + displayName.Copy( KDisplayName1 ); + contact1 = CVIMPSTStorageContact::NewL( userId, displayName ); + + // null contact + + userId.Copy( KNullDesC ); + displayName.Copy( KNullDesC ); + contact2 = CVIMPSTStorageContact::NewL( userId, displayName ); + + compareResult = sorter->Compare( *contact1, *contact2 ); + + if( compareResult ) // Not Equal + { + result = KErrNone; + } + + } + else if( param.Compare( _L("1nullcontact") ) == 0 ) + { + + // nullcontact + userId.Copy( KNullDesC ); + displayName.Copy( KNullDesC ); + contact1 = CVIMPSTStorageContact::NewL( userId, displayName ); + + // second contact + userId.Copy(KUserId2); + displayName.Copy( KDisplayName2 ); + contact2 = CVIMPSTStorageContact::NewL( userId, displayName ); + + compareResult = sorter->Compare( *contact1, *contact2 ); + + if( compareResult ) // Not Equal + { + result = KErrNone; + } + + } + else if( param.Compare( _L( "2nullcontacts") ) == 0 ) + { + // first contact, null + userId.Copy( KNullDesC ); + displayName.Copy( KNullDesC ); + contact1 = CVIMPSTStorageContact::NewL( userId, displayName ); + + // second contact, null + userId.Copy( KNullDesC ); + displayName.Copy( KNullDesC ); + contact2 = CVIMPSTStorageContact::NewL( userId, displayName ); + + + // no contact + compareResult = sorter->Compare( *contact1, *contact2 ); + + if( compareResult == 0 ) + { + result = KErrNone; + } + + } + else if( param.Compare( _L( "samecontacts") ) == 0 ) + { + // first contact + userId.Copy(KUserId1); + displayName.Copy( KDisplayName1 ); + contact1 = CVIMPSTStorageContact::NewL( userId, displayName ); + // second contact + userId.Copy(KUserId1); + displayName.Copy( KDisplayName1 ); + contact2 = CVIMPSTStorageContact::NewL( userId, displayName ); + + compareResult = sorter->Compare( *contact1, *contact2 ); + + if( compareResult == 0 ) + { + result = KErrNone; + } + + } + if( contact1 ) + delete contact1; + if( contact2 ) + delete contact2; + if( sorter ) + delete sorter; + return result; + + } + +// -- -- -- -- ------------------------------------------------- +// @ see CVIMPSTStorageSorter_UT.h for description. +// -- -- -- -- ------------------------------------------------- +// +TInt CCVIMPSTStorageContactSorter_UT::SetSortAlgorithm( CStifItemParser& aItem ) + { + TInt result = KErrGeneral; + + TInt input; + + aItem.GetNextInt( input ); + + CVIMPSTStorageContactSorter* sorter = NULL; + + sorter = CVIMPSTStorageContactSorter::NewL(); + + switch( input ) + { + case 1: + { + sorter->SetSortAlgorithm( MVIMPSTStorageContact::ECompareByPresence ); + result = KErrNone; + } + break; + case 2: + { + sorter->SetSortAlgorithm( MVIMPSTStorageContact::ECompareAlphabetically ); + result = KErrNone; + } + break; + } + + delete sorter; + + return result; + + } + + +// -- -- -- -- ------------------------------------------------- +// @ see CVIMPSTStorageSorter_UT.h for description. +// -- -- -- -- ------------------------------------------------- +// +void CCVIMPSTStorageContactSorter_UT::CreateContactArray() + { + + CVIMPSTStorageContact* contact = NULL; + + TBuf<64> userId; + TBuf<64> displayName; + + // first contact + userId.Copy(KUserId1); + displayName.Copy( KDisplayName1 ); + contact = CVIMPSTStorageContact::NewL( userId, displayName ); + contact->SetOnlineStatus( TVIMPSTEnums::EBusy ); + iContactArray.AppendL( contact ); + + // second contact + userId.Copy(KUserId2); + displayName.Copy( KDisplayName2 ); + contact = CVIMPSTStorageContact::NewL( userId, displayName ); + contact->SetOnlineStatus( TVIMPSTEnums::EOnline ); + iContactArray.AppendL( contact ); + + // third contact + userId.Copy(KUserId3); + displayName.Copy( KDisplayName3 ); + contact = CVIMPSTStorageContact::NewL( userId, displayName ); + contact->SetOnlineStatus( TVIMPSTEnums::EPending ); + + iContactArray.AppendL( contact ); + + // fourth contact + userId.Copy(KUserId4); + displayName.Copy( KDisplayName4 ); + contact = CVIMPSTStorageContact::NewL( userId, displayName ); + contact->SetOnlineStatus( TVIMPSTEnums::EOnPhone ); + iContactArray.AppendL( contact ); + + } + +// -- -- -- -- ------------------------------------------------- +// @ see CVIMPSTStorageSorter_UT.h for description. +// -- -- -- -- ------------------------------------------------- +// +void CCVIMPSTStorageContactSorter_UT::CreateAlphabeticalSortArray() + { + // order of sort : contact2, contact4, contact3, contact1 + CVIMPSTStorageContact* contact = NULL; + + TBuf<64> userId; + TBuf<64> displayName; + + // first contact + userId.Copy(KUserId2); + displayName.Copy( KDisplayName2 ); + contact = CVIMPSTStorageContact::NewL( userId, displayName ); + contact->SetOnlineStatus( TVIMPSTEnums::EBusy ); + iAlphabeticalSortArray.AppendL( contact ); + + // second contact + userId.Copy( KUserId4 ); + displayName.Copy( KDisplayName4 ); + contact = CVIMPSTStorageContact::NewL( userId, displayName ); + contact->SetOnlineStatus( TVIMPSTEnums::EOnline ); + iAlphabeticalSortArray.AppendL( contact ); + + // third contact + userId.Copy(KUserId3); + displayName.Copy( KDisplayName3 ); + contact = CVIMPSTStorageContact::NewL( userId, displayName ); + contact->SetOnlineStatus( TVIMPSTEnums::EPending ); + iAlphabeticalSortArray.AppendL( contact ); + + // fourth contact + userId.Copy(KUserId1); + displayName.Copy( KDisplayName1 ); + contact = CVIMPSTStorageContact::NewL( userId, displayName ); + contact->SetOnlineStatus( TVIMPSTEnums::EOnPhone ); + iAlphabeticalSortArray.AppendL( contact ); + + } +// -- -- -- -- ------------------------------------------------- +// @ see CVIMPSTStorageSorter_UT.h for description. +// -- -- -- -- ------------------------------------------------- +// +void CCVIMPSTStorageContactSorter_UT::CreatePresenceSortArray() + { + // order of sort : contact2, contact1, contact4, contact 3 + + CVIMPSTStorageContact* contact = NULL; + + TBuf<64> userId; + TBuf<64> displayName; + + // first contact + userId.Copy(KUserId2); + displayName.Copy( KDisplayName2 ); + contact = CVIMPSTStorageContact::NewL( userId, displayName ); + contact->SetOnlineStatus( TVIMPSTEnums::EBusy ); + iPresenceSortArray.AppendL( contact ); + + // second contact + userId.Copy( KUserId1 ); + displayName.Copy( KDisplayName1 ); + contact = CVIMPSTStorageContact::NewL( userId, displayName ); + contact->SetOnlineStatus( TVIMPSTEnums::EOnline ); + iPresenceSortArray.AppendL( contact ); + + // third contact + userId.Copy( KUserId4 ); + displayName.Copy( KDisplayName4 ); + contact = CVIMPSTStorageContact::NewL( userId, displayName ); + contact->SetOnlineStatus( TVIMPSTEnums::EPending ); + iPresenceSortArray.AppendL( contact ); + + // fourth contact + userId.Copy( KUserId3 ); + displayName.Copy( KDisplayName3 ); + contact = CVIMPSTStorageContact::NewL( userId, displayName ); + contact->SetOnlineStatus( TVIMPSTEnums::EOnPhone ); + iPresenceSortArray.AppendL( contact ); + + + } + +// -- -- -- -- ------------------------------------------------- +// @ see CVIMPSTStorageSorter_UT.h for description. +// -- -- -- -- ------------------------------------------------- +// +TInt CCVIMPSTStorageContactSorter_UT::CompareArray(RPointerArray< MVIMPSTStorageContact > & aFirstArray, RPointerArray< MVIMPSTStorageContact >& aSecondArray ) + { + // Number of contacts to be compared + TInt count = 4; + TInt result = -1; + + + TBuf<64> userId1,userId2; + + + // loop index + TInt i = -1; + for( i=0; iUserId() ); + userId2.Copy( aSecondArray[i]->UserId() ); + + if( userId1.Compare( userId2 ) != 0 ) + { + result = i; + break; + } + } + + return result; + + } + +// -- -- -- -- ------------------------------------------------- +// @ see CVIMPSTStorageSorter_UT.h for description. +// -- -- -- -- ------------------------------------------------- +// +void CCVIMPSTStorageContactSorter_UT::ResetArray( RPointerArray< MVIMPSTStorageContact > & aArray ) + { + aArray.ResetAndDestroy(); + } + +//---------------------------- +// To fix build break, please refer task no. in synergy. +//---------------------------- +// +void Panic( TVIMPSTStoragePanics aPanic ) + { + User::Panic( KPanicCategory, aPanic ); + } +// [End of File] - Do not remove