--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/genericservices/mimerecognitionfw/tef/T_MAPS.CPP Tue Feb 02 02:01:42 2010 +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 <e32uid.h>
+#include <f32file.h>
+#include <apmrec.h>
+#include <datastor.h>
+#include <ecom/ecom.h>
+
+#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();
+ }
+