genericservices/mimerecognitionfw/tef/T_MstrStep.cpp
changeset 0 e4d67989cc36
child 44 97b0fb8a2cc2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/genericservices/mimerecognitionfw/tef/T_MstrStep.cpp	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,184 @@
+// 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:
+// Harness for Mstr test code
+// 
+//
+
+/**
+ @file 
+ @internalComponent - Internal Symbian test code 
+*/
+
+
+#include <ecom/ecom.h>
+#include "T_MstrStep.h"
+
+/**
+   Constructor
+ */
+CT_MstrStep::CT_MstrStep()
+	{
+	// Call base class method to set up the human readable name for logging
+	SetTestStepName(KT_MstrStep);
+	}
+	
+/**
+   Destructor
+ */
+CT_MstrStep::~CT_MstrStep()
+	{
+	}
+
+TVerdict CT_MstrStep::doTestStepL()
+	{	
+	INFO_PRINTF1(_L("Test Started"));
+	iFs.Connect();
+	__UHEAP_MARK;
+	TRAPD(ret,doMenuL());		
+	TEST(ret==KErrNone);
+	REComSession::FinalClose();
+	__UHEAP_MARKEND;
+	iFs.Close();
+
+	INFO_PRINTF1(_L("Test Finished"));
+	return TestStepResult();
+	}
+	
+/**
+   @SYMTestCaseID		T_MstrStep_doMenuL
+  
+   @SYMPREQ			
+  
+   @SYMTestCaseDesc 	Tests data type storage
+  
+   @SYMTestPriority 	High
+  
+   @SYMTestStatus 		Implemented
+   
+   @SYMTestActions  	The test creates a storage manager object, which is filled with some mapings.
+   The first thing to verify is the correct insertion of these mappings, checking the type, uid
+   and priority. Then the mappings are stored in an INI file, and restored from there to a new 
+   storage manager object. The test checks that this new object is correct and equal to the
+   previous one. The test also tries to find a non-existing app mapping, which gives a 0 Uid.
+   API Calls:\n	
+   CTypeStoreManager::NewL(RFs& aFs) \n
+   CTypeStoreManager::InsertDataMappingL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid) \n
+   CTypeStoreManager::DeleteDataMapping(const TDataType& aDataType) \n
+   CTypeStoreManager::GetAppByDataType(const TDataType& aDataType, TUid& aUid) const \n
+   CTypeStoreManager::StoreL() \n
+   CTypeStoreManager::ReStoreL() \n
+   
+   @SYMTestExpectedResults Test should complete without any panic.
+   
+ */
+void CT_MstrStep::doMenuL()
+	{
+	INFO_PRINTF1(_L("Testing Data Type storage"));
+	INFO_PRINTF1(_L("Creating CTypeStoreManager object"));
+	CTypeStoreManager* mman = CTypeStoreManager::NewL(iFs);
+	CleanupStack::PushL(mman);
+
+	INFO_PRINTF1(_L("Adding some mappings to table"));
+	lPopulateMappingTablesL(mman);
+
+	INFO_PRINTF1(_L("Checking mappings in table"));
+	lCheckMappingsL(mman);
+		
+	INFO_PRINTF1(_L("Storing to INI file"));
+	mman->StoreL();
+
+	INFO_PRINTF1(_L("Restoring from INI file to new object"));
+	CTypeStoreManager* mman2 = CTypeStoreManager::NewL(iFs);
+	CleanupStack::PushL(mman2);
+	mman2->RestoreL();
+
+	INFO_PRINTF1(_L("Checking restored correctly"));
+
+	lCheckMappingsL(mman2);
+
+	INFO_PRINTF1(_L("Trying to find non-existent app mappings"));
+	TUid scratchUid;
+	mman->GetAppByDataType(TDataType(_L8("non/existent")),scratchUid);
+	TEST(scratchUid.iUid==0);
+
+	INFO_PRINTF1(_L("Clearing table to original state"));
+	lClearMappingTablesL(mman2);
+
+	CleanupStack::PopAndDestroy(2); // managers
+	}
+
+const TUid KTestUidValue1={10101010}; 
+const TUid KTestUidValue2={20202020}; 
+const TUid KTestUidValue3={30303030}; 
+
+void CT_MstrStep::lPopulateMappingTablesL(CTypeStoreManager* aMan)
+	{
+	aMan->InsertDataMappingL(TDataType(_L8("image/gif")),KDataTypePriorityNormal,KTestUidValue1);
+	aMan->InsertDataMappingL(TDataType(_L8("text/plain")),KDataTypePriorityNormal,KTestUidValue2);
+	aMan->InsertDataMappingL(TDataType(_L8("text/plain")),KDataTypePriorityNormal,KTestUidValue1,KTestUidValue3);
+	aMan->InsertDataMappingL(TDataType(_L8("text/word")),KDataTypePriorityNormal,KTestUidValue2);
+	aMan->InsertDataMappingL(TDataType(_L8("something/else")),KDataTypePriorityNormal,KTestUidValue3);
+	}
+
+void CT_MstrStep::lClearMappingTablesL(CTypeStoreManager* aMan)
+	{
+	aMan->DeleteDataMapping(TDataType(_L8("image/gif")));
+	aMan->DeleteDataMapping(TDataType(_L8("text/plain")));
+	aMan->DeleteDataMapping(TDataType(_L8("text/plain")), KTestUidValue3);
+	aMan->DeleteDataMapping(TDataType(_L8("text/word")));
+	aMan->DeleteDataMapping(TDataType(_L8("something/else")));
+
+	aMan->StoreL();
+	}
+
+void CT_MstrStep::lCheckMappingsL(CTypeStoreManager* aTypeMan)
+	{
+	TUid scratchUid;
+	aTypeMan->GetAppByDataType(TDataType(_L8("image/gif")),scratchUid);
+	TEST(scratchUid==KTestUidValue1);
+	aTypeMan->GetAppByDataType(TDataType(_L8("text/plain")),scratchUid);
+	TEST(scratchUid==KTestUidValue2);
+	aTypeMan->GetAppByDataType(TDataType(_L8("text/plain")),KTestUidValue3,scratchUid);
+	TEST(scratchUid==KTestUidValue1);
+	aTypeMan->GetAppByDataType(TDataType(_L8("text/word")),scratchUid);
+	TEST(scratchUid==KTestUidValue2);
+	aTypeMan->GetAppByDataType(TDataType(_L8("something/else")),scratchUid);
+	TEST(scratchUid==KTestUidValue3);
+	aTypeMan->GetAppByDataType(TDataType(_L8("image/*")),scratchUid);
+	TEST(scratchUid==KTestUidValue1);
+	
+	TDataType nativeData(KTestUidValue3);
+	TEST(nativeData.IsNative());
+
+	CArrayFixFlat<TDataType>* array=new(ELeave) CArrayFixFlat<TDataType>(1);
+	CleanupStack::PushL(array);
+	aTypeMan->GetDataTypesByAppL(KTestUidValue1,array);
+	TEST(array->Count()==1);
+	TEST((*array)[0]==TDataType(_L8("image/gif")));
+	array->Delete(0);
+	aTypeMan->GetDataTypesByAppL(KTestUidValue2,array);
+	TEST(array->Count()==2);
+	TEST((*array)[0]==TDataType(_L8("text/plain")));
+	TEST((*array)[1]==TDataType(_L8("text/word")));
+	array->Delete(0,2);
+	aTypeMan->GetDataTypesByAppL(KTestUidValue3,array);
+	TEST(array->Count()==1);
+	TEST((*array)[0]==TDataType(_L8("something/else")));
+	array->Delete(0);
+	TUid uid;
+	uid.iUid=0;
+	aTypeMan->GetDataTypesByAppL(uid,array);
+	TEST(array->Count()==4);
+	CleanupStack::PopAndDestroy(); // array
+	}