diff -r 000000000000 -r bde4ae8d615e os/ossrv/genericservices/mimerecognitionfw/tef/T_MAPS.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/genericservices/mimerecognitionfw/tef/T_MAPS.CPP Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,285 @@ +// Copyright (c) 2005-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: +// + +/** + @file + @internalComponent - Internal Symbian test code +*/ + + + +#include +#include +#include +#include +#include + +#include "T_Maps.h" + + +/** + Auxiliary Fn for Test Case ID T-Maps-testTMappingDataTypeToAppL + + This function receives two mappings, and verifies if they data members + are the same. + +*/ +TBool CT_Maps::cmpMappingDataTypeToAdd( TMappingDataTypeToApp& map1, TMappingDataTypeToApp& map2 ) + { + return TBool( map1.iAppUid == map2.iAppUid && + map1.iDataType == map2.iDataType && + map1.iPriority == map2.iPriority && + map1.iServiceUid == map2.iServiceUid); + } + + +//const TInt KErrTestFailed = -1; + + +/** + @SYMTestCaseID T-Maps-testTMappingDataTypeToAppL + + @SYMPREQ + + @SYMTestCaseDesc Tests TMappingDataTypeToApp class + + @SYMTestPriority High + + @SYMTestStatus Implemented + + @SYMTestActions The test creates 3 different mappings, identified by a TUid, TDataType + and TDataTypePriority, verifying that they are correctly created. The consitency of these + mappings through the process of writing and reading to and from a stream is also checked.\n + Also, a store of mappings is created, verifying the insertion, and the insertion depending + on the TDataTypePriority, checking that it handles the insertion in accordance.\n + API Calls:\n + TMappingDataTypeToApp::TMappingDataTypeToApp(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid) \n + CTypeStoreManager::NewL(RFs& aFs) \n + CTypeStoreManager::InsertDataMappingL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid) \n + CTypeStoreManager::GetAppByDataType(const TDataType& aDataType, TUid& aUid) const \n + CTypeStoreManager::InsertIfHigherL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid) \n + + @SYMTestExpectedResults Test should complete without any panic. + + */ +void CT_Maps::testTMappingDataTypeToAppL() + { + const TUid uid1 = { 0x11111111 }; + const TUid uid2 = { 0x22222222 }; + const TUid uid3 = { 0x33333333 }; + const TUid uid4 = { 0x44444444 }; + const TUid uid5 = { 0x55555555 }; + const TUid uid6 = { 0x66666666 }; + + const TUid serviceUid1 = { 0x00001111 }; + const TUid serviceUid2 = { 0x00002222 }; + //const TUid serviceUid3 = { 0x00003333 }; + const TUid serviceUid4 = { 0x00004444 }; + + const TDataType data1( uid1 ); + const TDataType data2( uid2 ); + const TDataType data3( uid3 ); + const TDataType data4( uid4 ); + + TUid result; + + // Test that mappings are serialized correctly + TMappingDataTypeToApp mapping1( data1, TDataTypePriority( 100 ), uid3 ); + TMappingDataTypeToApp mapping2( data1, TDataTypePriority( 100 ), uid3 ); + TMappingDataTypeToApp mapping3( data2, TDataTypePriority( 200 ), uid4 ); + + RFileBuf buf1; + RFileBuf buf2; + RFileBuf buf3; + + TBuf<256> tmpfilename; + + buf1.Temp( iFs, KTempRootDir, tmpfilename, EFileWrite|EFileStream ); + buf2.Temp( iFs, KTempRootDir, tmpfilename, EFileWrite|EFileStream ); + buf3.Temp( iFs, KTempRootDir, tmpfilename, EFileWrite|EFileStream ); + + RWriteStream write1( &buf1 ); + RWriteStream write2( &buf2 ); + RWriteStream write3( &buf3 ); + + RReadStream read1( &buf1 ); + RReadStream read2( &buf2 ); + RReadStream read3( &buf3 ); + + TEST( cmpMappingDataTypeToAdd( mapping1, mapping2 ) ); + TEST( !cmpMappingDataTypeToAdd( mapping1, mapping3 ) ); + TEST( !cmpMappingDataTypeToAdd( mapping2, mapping3 ) ); + + INFO_PRINTF1(_L("Testing storage of objects to stream")); + + write1 << mapping1; + write2 << mapping2; + write3 << mapping3; + + write1.CommitL(); + write2.CommitL(); + write3.CommitL(); + + TEST( cmpMappingDataTypeToAdd( mapping1, mapping2 ) ); + TEST( !cmpMappingDataTypeToAdd( mapping1, mapping3 ) ); + TEST( !cmpMappingDataTypeToAdd( mapping2, mapping3 ) ); + + INFO_PRINTF1(_L("Testing reconstruction from stream")); + + read1 >> mapping2; + read2 >> mapping3; + read3 >> mapping1; + + TEST( !cmpMappingDataTypeToAdd( mapping1, mapping2 ) ); + TEST( !cmpMappingDataTypeToAdd( mapping1, mapping3 ) ); + TEST( cmpMappingDataTypeToAdd( mapping2, mapping3 ) ); + + write1.Close(); + write2.Close(); + write3.Close(); + + read1.Close(); + read2.Close(); + read3.Close(); + + buf1.Close(); + buf2.Close(); + buf3.Close(); + + + // Test the insert and find functions + INFO_PRINTF1(_L("Data map insertion")); + + CTypeStoreManager* tsm = CTypeStoreManager::NewL( iFs ); + CleanupStack::PushL( tsm ); + + tsm->InsertDataMappingL( data1, TDataTypePriority( 100 ), uid1 ); //data1 mapped to uid1 + tsm->InsertDataMappingL( data2, TDataTypePriority( 200 ), uid2 ); //data2 mapped to uid2 + tsm->InsertDataMappingL( data1, TDataTypePriority( 100 ), uid1, serviceUid1 ); + tsm->InsertDataMappingL( data2, TDataTypePriority( 100 ), uid6, serviceUid2 ); + tsm->InsertDataMappingL( data1, TDataTypePriority( 200 ), uid3 ); //data1 mapped to uid3, not uid1 anymore + tsm->InsertDataMappingL( data4, TDataTypePriority( 200 ), uid4, serviceUid4 ); + tsm->InsertDataMappingL( data4, TDataTypePriority( 200 ), uid5 ); + + tsm->GetAppByDataType( data1, result ); + TEST( uid3 == result ); + tsm->GetAppByDataType( data2, result ); + TEST( uid2 == result ); + tsm->GetAppByDataType( data1, serviceUid1, result); + TEST( uid1 == result ); + tsm->GetAppByDataType( data2, serviceUid2, result); + TEST( uid6 == result ); + tsm->GetAppByDataType( data4, result); + TEST( uid5 == result ); + tsm->GetAppByDataType( data4, serviceUid4, result); + TEST( uid4 == result ); + + INFO_PRINTF1(_L("Data map insertion by priority")); + + TEST( tsm->InsertIfHigherL( data2, TDataTypePriority( 900 ), uid4 ) ); //Should be higher priority + tsm->GetAppByDataType( data2, result ); + TEST( uid4 == result ); + + TEST( !tsm->InsertIfHigherL( data1, TDataTypePriority( 200 ), uid1 ) ); //Should be lower priority + tsm->GetAppByDataType( data1, result ); + TEST( uid3 == result ); + + TEST( !tsm->InsertIfHigherL( data1, TDataTypePriority( 100 ), uid2 ) ); //Should be lower priority + tsm->GetAppByDataType( data1, result ); + TEST( uid3 == result ); + + TEST( tsm->InsertIfHigherL( data1, TDataTypePriority( 400 ), uid4 ) ); //Should be higher priority + tsm->GetAppByDataType( data1, result ); + TEST( uid4 == result ); + + TEST( !tsm->InsertIfHigherL( data1, TDataTypePriority( 300 ), uid3 ) ); //Should be lower priority + tsm->GetAppByDataType( data1, result ); + TEST( uid4 == result ); + + TEST( tsm->InsertIfHigherL( data1, TDataTypePriority( 300 ), uid3, serviceUid1 ) ); + tsm->GetAppByDataType( data1, serviceUid1, result); + TEST( uid3 == result ); + + TEST( !tsm->InsertIfHigherL( data1, TDataTypePriority( 100 ), uid5, serviceUid1 ) ); + tsm->GetAppByDataType( data1, serviceUid1, result); + TEST( uid3 == result ); + + tsm->InsertDataMappingL( data1, TDataTypePriority( 100 ), uid5, serviceUid1 ); + tsm->GetAppByDataType( data1, serviceUid1, result); + TEST( uid5 == result ); + + tsm->GetAppByDataType( data4, serviceUid2, result); + TEST( KNullUid == result ); + + CleanupStack::PopAndDestroy(tsm); + } + + +CT_Maps::~CT_Maps() +/** + Destructor + */ + { + } + +CT_Maps::CT_Maps() +/** + Constructor + */ + { + // Call base class method to set up the human readable name for logging + SetTestStepName(KT_Maps); + } + +/* @SYMTestCaseID T-Maps-doTestStepL + + @SYMPREQ DEF032304 + + @SYMTestCaseDesc Testing of TMappingDataTypeToApp perisitance. + + @SYMTestPriority High + + @SYMTestStatus Implemented + + @SYMTestActions Just execute program. Will pause and report any failure. + + @SYMTestExpectedResults List of sucessfull tests should appear in a console window. + */ +TVerdict CT_Maps::doTestStepL() + { + // + INFO_PRINTF1(_L("Test Started")); + INFO_PRINTF1(_L("Testing the TMappingDataTypeToApp")); + + // + // set up the directory structure + iFs.Connect(); + // + // run the testcode (inside an alloc heaven harness) + + __UHEAP_MARK; + + TRAPD(r,testTMappingDataTypeToAppL()); + TEST(r==KErrNone); + + iFs.Close(); + INFO_PRINTF1(_L("TMappingDataTypeToApp test finished\n")); + + REComSession::FinalClose(); + __UHEAP_MARKEND; + + return TestStepResult(); + } +