mds_plat/metadata_engine_api/tsrc/src/MdETestScripterBlocks.cpp
changeset 0 c53acadfccc6
child 9 82c0024438c8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mds_plat/metadata_engine_api/tsrc/src/MdETestScripterBlocks.cpp	Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,857 @@
+/*
+* Copyright (c) 2002-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 <e32svr.h>
+#include <mdeobject.h>
+#include <mdeobjectdef.h>
+#include <mdesession.h>
+#include <mdeconstants.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include <StifTestEventInterface.h>
+#include "MdETestScripter.h"
+#include "MdETestScripterAO.h"
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::Delete() 
+    {
+    iObjectDefArray.Reset();
+    iRelationDefArray.Reset();
+    iEventDefArray.Reset();
+    
+    iLogicConditionArray.Reset();
+    iRelationConditionArray.Reset();
+    iNotificationRelationArray.Reset();
+
+	RArray<TItemId> objectIds;
+	RArray<TItemId> resultObjectIds;
+	RArray<TItemId> eventIds;
+	RArray<TItemId> resultEventIds;
+	RArray<TItemId> relationIds;
+	RArray<TItemId> resultRelationIds;
+	
+	TInt count = iObjectArray.Count();
+	for (TInt i = 0; i < count; i++)
+		{
+		objectIds.Append(iObjectArray[i]->Id());	
+		}
+		
+	count = iEventArray.Count();
+	for (TInt i = 0; i < count; i++)
+		{
+		eventIds.Append(iEventArray[i]->Id());	
+		}
+		
+	count = iRelationArray.Count();
+	for (TInt i = 0; i < count; i++)
+		{
+		relationIds.Append(iRelationArray[i]->Id());	
+		}			
+	
+	if (objectIds.Count())
+		{
+		TRAP_IGNORE( iMdeSession->RemoveObjectsL( objectIds, resultObjectIds) );	
+		}
+
+    iObjectArray.ResetAndDestroy();
+    
+	if (eventIds.Count())
+		{    
+		TRAP_IGNORE( iMdeSession->RemoveEventsL( eventIds, resultEventIds) );
+		}
+    iEventArray.ResetAndDestroy();
+        
+	if (relationIds.Count())
+		{          
+		TRAP_IGNORE( iMdeSession->RemoveRelationsL( relationIds, resultRelationIds) );
+		}
+    iRelationArray.ResetAndDestroy();
+    
+    TInt allRemoved = ETrue;
+	count = iObjectArray.Count();
+	for (TInt i = 0; i < count; i++)
+		{
+		if (resultObjectIds[i] == KNoId)
+			{
+			allRemoved = EFalse;
+			break;	
+			}			
+		}
+	if (!allRemoved)
+		{
+		iLog->Log(_L( "All objects not removed from DB!!"));
+		}
+
+    allRemoved = ETrue;		
+	count = iEventArray.Count();
+	for (TInt i = 0; i < count; i++)
+		{
+		if (resultEventIds[i] == KNoId)
+			{
+			allRemoved = EFalse;
+			break;	
+			}		
+		}
+	if (!allRemoved)
+		{
+		iLog->Log(_L( "All events not removed from DB!!"));
+		}
+    iEventArray.ResetAndDestroy();
+		
+    allRemoved = ETrue;		
+	count = iRelationArray.Count();
+	for (TInt i = 0; i < count; i++)
+		{
+		if (resultRelationIds[i] == KNoId)
+			{
+			allRemoved = EFalse;
+			break;	
+			}		
+		}
+	if (!allRemoved)
+		{
+		iLog->Log(_L( "All relations not removed from DB!!"));
+		}
+				
+	objectIds.Close();
+	resultObjectIds.Close();
+	eventIds.Close();
+	resultEventIds.Close();
+	relationIds.Close();
+	resultRelationIds.Close();
+
+	iPropertyDefArray.Reset();
+
+    delete iObjectDefNameArray;
+    delete iRelationDefNameArray;
+	delete iEventDefNameArray;
+	delete iPropertyDefNameArray;
+	delete iNamespaceDefNameArray;
+	
+	delete iObjectNameArray;	
+    delete iRelationNameArray;
+    delete iEventNameArray;
+    
+    delete iPropertyNameArray;
+    
+	delete iLogicConditionNameArray;
+	delete iRelationConditionNameArray;
+	delete iObjectConditionNameArray;
+	
+	delete iPropertyConditionNameArray;
+	delete iEventConditionNameArray;	
+
+	delete iQuery;
+    delete iMdeSession;
+    iMdeSession = NULL;
+    delete iAsyncHandler;
+    iAsyncHandler = NULL;
+    iMdEDataBuf.Close();
+    iItemArray.Close();//Do not need call destroy because it does not own its pointers
+    }
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CMdETestScripter::RunMethodL( CStifItemParser& aItem ) 
+    {
+    static TStifFunctionInfo const KFunctions[] =
+        {  
+        // Observer add/remove methods
+        ENTRY( "AddSchemaObserverL", CMdETestScripter::AddSchemaObserverL ),
+        ENTRY( "RemoveSchemaObserverL", CMdETestScripter::RemoveSchemaObserverL ),
+        ENTRY( "AddObjectObserverL", CMdETestScripter::AddObjectObserverL ),
+        ENTRY( "RemoveObjectObserverL", CMdETestScripter::RemoveObjectObserverL ),
+        ENTRY( "AddObjectPresentObserverL", CMdETestScripter::AddObjectPresentObserverL ),
+        ENTRY( "RemoveObjectPresentObserverL", CMdETestScripter::RemoveObjectPresentObserverL ),
+        ENTRY( "AddRelationObserverL", CMdETestScripter::AddRelationObserverL ),
+        ENTRY( "RemoveRelationObserverL", CMdETestScripter::RemoveRelationObserverL ),
+        ENTRY( "AddRelationItemObserverL", CMdETestScripter::AddRelationItemObserverL ),
+        ENTRY( "RemoveRelationItemObserverL", CMdETestScripter::RemoveRelationItemObserverL ),
+        ENTRY( "AddRelationPresentObserverL", CMdETestScripter::AddRelationPresentObserverL ),
+        ENTRY( "RemoveRelationPresentObserverL", CMdETestScripter::RemoveRelationPresentObserverL ),
+        ENTRY( "AddEventObserverL", CMdETestScripter::AddEventObserverL ),
+        ENTRY( "RemoveEventObserverL", CMdETestScripter::RemoveEventObserverL ),
+
+        // Notification resulated test primitives
+        ENTRY( "VerifyTItemIdsL", CMdETestScripter::VerifyTItemIdsL ),
+        ENTRY( "VerifyMdERelationsL", CMdETestScripter::VerifyMdERelationsL ),
+        ENTRY( "VerifyObserverNotificationTypeL", CMdETestScripter::VerifyObserverNotificationTypeL ),
+
+        // Metadata/schema/namespace test primitives.
+        ENTRY( "ObjectDefCountL", CMdETestScripter::ObjectDefCountL ),
+        ENTRY( "ObjectDefL", CMdETestScripter::ObjectDefL ),
+        ENTRY( "GetObjectDefL", CMdETestScripter::GetObjectDefL ),
+        ENTRY( "RelationDefCountL", CMdETestScripter::RelationDefCountL ),
+        ENTRY( "RelationDefL", CMdETestScripter::RelationDefL ),
+        ENTRY( "GetRelationDefL", CMdETestScripter::GetRelationDefL ),
+        ENTRY( "EventDefCountL", CMdETestScripter::EventDefCountL ),
+        ENTRY( "EventDefL", CMdETestScripter::EventDefL ),
+        ENTRY( "GetEventDefL", CMdETestScripter::GetEventDefL ),
+
+        ENTRY( "ExportMetadataL", CMdETestScripter::ExportMetadataL ),
+        ENTRY( "ImportMetadataL", CMdETestScripter::ImportMetadataL ),
+        ENTRY( "ImportSchemaL", CMdETestScripter::ImportSchemaL ),
+        ENTRY( "NamespaceDefCountL", CMdETestScripter::NamespaceDefCountL ),
+        ENTRY( "NamespaceDefL", CMdETestScripter::NamespaceDefL ),
+        ENTRY( "GetNamespaceDefL", CMdETestScripter::GetNamespaceDefL ),
+        ENTRY( "GetDefaultNamespaceDefL", CMdETestScripter::GetDefaultNamespaceDefL ),
+        ENTRY( "ResetNamespaceDefArray", CMdETestScripter::ResetNamespaceDefArray ),
+        ENTRY( "LoadSchemaL", CMdETestScripter::LoadSchemaL ),
+        ENTRY( "EngineSessionL", CMdETestScripter::EngineSessionL ),
+        ENTRY( "GetSchemaVersionL", CMdETestScripter::GetSchemaVersionL ),
+        ENTRY( "SetObjectToPresentByGuidL", CMdETestScripter::SetObjectToPresentByGuidL ),
+
+        // Item / InstanceItem test primitives.
+        ENTRY( "BelongsToSessionL", CMdETestScripter::BelongsToSessionL ),
+        ENTRY( "SessionL", CMdETestScripter::SessionL ),
+        ENTRY( "InDatabaseL", CMdETestScripter::InDatabaseL ),
+        ENTRY( "AddItemsL", CMdETestScripter::AddItemsL ),
+        ENTRY( "UpdateItemsL", CMdETestScripter::UpdateItemsL ),
+
+        // Definition test primitives.
+        ENTRY( "AddRelationDefL", CMdETestScripter::AddRelationDefL ),
+        ENTRY( "AddEventDefL", CMdETestScripter::AddEventDefL ),
+        ENTRY( "PropertyDefCountL", CMdETestScripter::PropertyDefCountL ),
+        ENTRY( "PropertyDefL", CMdETestScripter::PropertyDefL ),
+        ENTRY( "GetPropertyDefL", CMdETestScripter::GetPropertyDefL ),
+        ENTRY( "MandatoryL", CMdETestScripter::MandatoryL ),
+        ENTRY( "MinInt32ValueL", CMdETestScripter::MinInt32ValueL ),
+        ENTRY( "MaxInt32ValueL", CMdETestScripter::MaxInt32ValueL ),
+        ENTRY( "MinUint32ValueL", CMdETestScripter::MinUint32ValueL ),
+        ENTRY( "MaxUint32ValueL", CMdETestScripter::MaxUint32ValueL ),
+        ENTRY( "MinInt64ValueL", CMdETestScripter::MinInt64ValueL ),
+        ENTRY( "MaxInt64ValueL", CMdETestScripter::MaxInt64ValueL ),
+        ENTRY( "MinRealValueL", CMdETestScripter::MinRealValueL ),
+        ENTRY( "MaxRealValueL", CMdETestScripter::MaxRealValueL ),
+        ENTRY( "MinTimeValueL", CMdETestScripter::MinTimeValueL ),
+        ENTRY( "MaxTimeValueL", CMdETestScripter::MaxTimeValueL ),
+        ENTRY( "MinTextLengthL", CMdETestScripter::MinTextLengthL ),
+        ENTRY( "MaxTextLengthL", CMdETestScripter::MaxTextLengthL ),
+        ENTRY( "CompareL", CMdETestScripter::CompareL ),
+        ENTRY( "ParentL", CMdETestScripter::ParentL ),
+        ENTRY( "NameL", CMdETestScripter::NameL ),
+        ENTRY( "ReadOnlyL", CMdETestScripter::ReadOnlyL ),
+        ENTRY( "DefL", CMdETestScripter::DefL ),
+
+        // Object test primitives.
+        ENTRY( "SetDefL", CMdETestScripter::SetDefL ),
+        ENTRY( "UriL", CMdETestScripter::UriL ),
+        ENTRY( "SetUriL", CMdETestScripter::SetUriL ),
+        ENTRY( "ConfidentialL", CMdETestScripter::ConfidentialL ),
+        ENTRY( "SetConfidentialL", CMdETestScripter::SetConfidentialL ),
+        ENTRY( "PlaceholderL", CMdETestScripter::PlaceholderL ),
+        ENTRY( "SetPlaceholderL", CMdETestScripter::SetPlaceholderL ),
+        ENTRY( "MediaIdL", CMdETestScripter::MediaIdL ),
+        ENTRY( "SetMediaIdL", CMdETestScripter::SetMediaIdL ),
+        ENTRY( "UsageCountL", CMdETestScripter::UsageCountL ),
+        ENTRY( "GuidL", CMdETestScripter::GuidL ),
+        ENTRY( "SetGuidL", CMdETestScripter::SetGuidL ),
+        ENTRY( "OpenForModificationsL", CMdETestScripter::OpenForModificationsL ),
+        ENTRY( "NewObjectL", CMdETestScripter::NewObjectL ),
+        ENTRY( "AddObjectL", CMdETestScripter::AddObjectL ),
+        ENTRY( "AddObjectsL", CMdETestScripter::AddObjectsL ),
+        ENTRY( "GetObjectL", CMdETestScripter::GetObjectL ),
+        ENTRY( "GetFullObjectL", CMdETestScripter::GetFullObjectL ),
+        ENTRY( "CheckObjectL", CMdETestScripter::CheckObjectL ),
+        ENTRY( "RemoveObjectL", CMdETestScripter::RemoveObjectL ),
+        ENTRY( "RemoveObjectsL", CMdETestScripter::RemoveObjectsL ),
+        ENTRY( "RemoveAllObjectsL", CMdETestScripter::RemoveAllObjectsL ),
+        ENTRY( "OpenObjectL", CMdETestScripter::OpenObjectL ),
+        ENTRY( "OpenFullObjectL", CMdETestScripter::OpenFullObjectL ),
+        ENTRY( "CommitObjectL", CMdETestScripter::CommitObjectL ),
+        ENTRY( "CommitObjectsL", CMdETestScripter::CommitObjectsL ),
+        ENTRY( "CancelObjectL", CMdETestScripter::CancelObjectL ),
+
+        ENTRY( "PropertyL", CMdETestScripter::PropertyL ),
+        ENTRY( "PropertyCountL", CMdETestScripter::PropertyCountL ),
+        ENTRY( "AddBoolPropertyL", CMdETestScripter::AddBoolPropertyL ),
+        ENTRY( "AddInt8PropertyL", CMdETestScripter::AddInt8PropertyL ),
+        ENTRY( "AddUint8PropertyL", CMdETestScripter::AddUint8PropertyL ),
+        ENTRY( "AddInt16PropertyL", CMdETestScripter::AddInt16PropertyL ),
+        ENTRY( "AddUint16PropertyL", CMdETestScripter::AddUint16PropertyL ),
+        ENTRY( "AddInt32PropertyL", CMdETestScripter::AddInt32PropertyL ),
+        ENTRY( "AddUint32PropertyL", CMdETestScripter::AddUint32PropertyL ),
+        ENTRY( "AddInt64PropertyL", CMdETestScripter::AddInt64PropertyL ),
+        ENTRY( "AddReal32PropertyL", CMdETestScripter::AddReal32PropertyL ),
+        ENTRY( "AddReal64PropertyL", CMdETestScripter::AddReal64PropertyL ),
+        ENTRY( "AddTextPropertyL", CMdETestScripter::AddTextPropertyL ),
+        ENTRY( "AddTimePropertyL", CMdETestScripter::AddTimePropertyL ),
+
+        // Property test primitives.
+        ENTRY( "ObjectL", CMdETestScripter::ObjectL ),
+        ENTRY( "BoolValueL", CMdETestScripter::BoolValueL ),
+        ENTRY( "Int8ValueL", CMdETestScripter::Int8ValueL ),
+        ENTRY( "Uint8ValueL", CMdETestScripter::Uint8ValueL ),
+        ENTRY( "Int16ValueL", CMdETestScripter::Int16ValueL ),
+        ENTRY( "Uint16ValueL", CMdETestScripter::Uint16ValueL ),
+        ENTRY( "Int32ValueL", CMdETestScripter::Int32ValueL ),
+        ENTRY( "Uint32ValueL", CMdETestScripter::Uint32ValueL ),
+        ENTRY( "Int64ValueL", CMdETestScripter::Int64ValueL ),
+        ENTRY( "Real32ValueL", CMdETestScripter::Real32ValueL ),
+        ENTRY( "Real64ValueL", CMdETestScripter::Real64ValueL ),
+        ENTRY( "TimeValueL", CMdETestScripter::TimeValueL ),
+        ENTRY( "TextValueL", CMdETestScripter::TextValueL ),
+        ENTRY( "SetBoolValueL", CMdETestScripter::SetBoolValueL ),
+        ENTRY( "SetInt8ValueL", CMdETestScripter::SetInt8ValueL ),
+        ENTRY( "SetUint8ValueL", CMdETestScripter::SetUint8ValueL ),
+        ENTRY( "SetInt16ValueL", CMdETestScripter::SetInt16ValueL ),
+        ENTRY( "SetUint16ValueL", CMdETestScripter::SetUint16ValueL ),
+        ENTRY( "SetInt32ValueL", CMdETestScripter::SetInt32ValueL ),
+        ENTRY( "SetUint32ValueL", CMdETestScripter::SetUint32ValueL ),
+        ENTRY( "SetInt64ValueL", CMdETestScripter::SetInt64ValueL ),
+        ENTRY( "SetReal32ValueL", CMdETestScripter::SetReal32ValueL ),
+        ENTRY( "SetReal64ValueL", CMdETestScripter::SetReal64ValueL ),
+        ENTRY( "SetTimeValueL", CMdETestScripter::SetTimeValueL ),
+        ENTRY( "SetTextValueL", CMdETestScripter::SetTextValueL ),
+        ENTRY( "RemovePropertyL", CMdETestScripter::RemovePropertyL ),
+        ENTRY( "MovePropertiesL", CMdETestScripter::MovePropertiesL ),
+
+        // Free text test primitives.
+        ENTRY( "FreeTextCountL", CMdETestScripter::FreeTextCountL ),
+        ENTRY( "FreeTextL", CMdETestScripter::FreeTextL ),
+        ENTRY( "FreeTextIndexL", CMdETestScripter::FreeTextIndexL ),
+        ENTRY( "AddFreeTextL", CMdETestScripter::AddFreeTextL ),
+        ENTRY( "RemoveFreeTextL", CMdETestScripter::RemoveFreeTextL ),
+
+        // Relation test primitives.
+        ENTRY( "NewRelationL", CMdETestScripter::NewRelationL ),
+        ENTRY( "AddRelationL", CMdETestScripter::AddRelationL ),
+        ENTRY( "LeftObjectIdL", CMdETestScripter::LeftObjectIdL ),
+        ENTRY( "RightObjectIdL", CMdETestScripter::RightObjectIdL ),
+        ENTRY( "ParameterL", CMdETestScripter::ParameterL ),
+        ENTRY( "SetParameterL", CMdETestScripter::SetParameterL ),
+        ENTRY( "SetLeftObjectIdL", CMdETestScripter::SetLeftObjectIdL ),
+        ENTRY( "SetRightObjectIdL", CMdETestScripter::SetRightObjectIdL ),
+        ENTRY( "LastModifiedDateL", CMdETestScripter::LastModifiedDateL ),
+        ENTRY( "SetLastModifiedDateL", CMdETestScripter::SetLastModifiedDateL ),
+        ENTRY( "GetRelationL", CMdETestScripter::GetRelationL ),
+        ENTRY( "UpdateRelationL", CMdETestScripter::UpdateRelationL ),
+        ENTRY( "RemoveRelationL", CMdETestScripter::RemoveRelationL ),
+        ENTRY( "RemoveRelationsL", CMdETestScripter::RemoveRelationsL ),
+
+        // Event test primitives.
+        ENTRY( "NewEventL", CMdETestScripter::NewEventL ),
+        ENTRY( "AddEventL", CMdETestScripter::AddEventL ),
+        ENTRY( "ObjectIdL", CMdETestScripter::ObjectIdL ),
+        ENTRY( "TimeL", CMdETestScripter::TimeL ),
+        ENTRY( "SourceL", CMdETestScripter::SourceL ),
+        ENTRY( "ParticipantL", CMdETestScripter::ParticipantL ),
+        ENTRY( "GetEventL", CMdETestScripter::GetEventL ),
+        ENTRY( "RemoveEventL", CMdETestScripter::RemoveEventL ),
+        ENTRY( "RemoveEventsL", CMdETestScripter::RemoveEventsL ),
+        ENTRY( "NewObjectQueryL", CMdETestScripter::NewObjectQueryL ),
+        ENTRY( "NewRelationQueryL", CMdETestScripter::NewRelationQueryL ),
+        ENTRY( "NewEventQueryL", CMdETestScripter::NewEventQueryL ),
+                
+        ENTRY( "QueryObjectL", CMdETestScripter::QueryObjectL ),
+        ENTRY( "QueryRelationL", CMdETestScripter::QueryRelationL ),
+        ENTRY( "QueryEventL", CMdETestScripter::QueryEventL ),
+        ENTRY( "AddPropertyFilterL", CMdETestScripter::AddPropertyFilterL ),
+        ENTRY( "AppendOrderRuleL", CMdETestScripter::AppendOrderRuleL ),
+        ENTRY( "NewLogicConditionL", CMdETestScripter::NewLogicConditionL ),
+        ENTRY( "AddLogicConditionL", CMdETestScripter::AddLogicConditionL ),
+        ENTRY( "AddObjectConditionL", CMdETestScripter::AddObjectConditionL ),
+        ENTRY( "AddPropertyConditionL", CMdETestScripter::AddPropertyConditionL ),
+        ENTRY( "AddRelationConditionL", CMdETestScripter::AddRelationConditionL ),
+        ENTRY( "AddEventConditionL", CMdETestScripter::AddEventConditionL ),
+        ENTRY( "FindL", CMdETestScripter::FindL ),
+        ENTRY( "SetObjectQueryResultL", CMdETestScripter::SetObjectQueryResultL ),
+        ENTRY( "SetEventQueryResultL", CMdETestScripter::SetEventQueryResultL ),
+        ENTRY( "SetRelationQueryResultL", CMdETestScripter::SetRelationQueryResultL ),
+        ENTRY( "RightL", CMdETestScripter::RightL ),
+        ENTRY( "LeftL", CMdETestScripter::LeftL ),
+        ENTRY( "SetOperatorL", CMdETestScripter::SetOperatorL ), 
+        ENTRY( "SetNegateL", CMdETestScripter::SetNegateL ),
+        ENTRY( "ObjectConditionsL", CMdETestScripter::ObjectConditionsL ),     
+        ENTRY( "TestPopulateDbL", CMdETestScripter::TestPopulateDbL )
+        
+        // [test cases entries] - Do not remove
+        };
+
+    const TInt count = sizeof( KFunctions ) / sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+    }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTestScripter::HandleObjectNotification
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::HandleObjectNotification( CMdESession& aSession, 
+    TObserverNotificationType aType,
+    const RArray<TItemId>& aObjectIdArray )
+    {
+    iLog->Log(_L( "HandleObjectNotification" ));
+    
+    iNotificationSession = &aSession;
+    iNotificationType = aType;
+    for ( TInt i = 0; i < aObjectIdArray.Count(); ++i )
+        {
+        iNotificationItemIdArray.Append( aObjectIdArray[ i ] );
+        }
+
+    Signal();
+    }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTestScripter::HandleObjectPresentNotification
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::HandleObjectPresentNotification( CMdESession& /* aSession */, 
+    TBool /* aPresent */, const RArray<TItemId>& /* aObjectIdArray */ )
+    {
+
+    }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTestScripter::HandleSessionOpened
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::HandleSessionOpened( CMdESession& /* aSession */, TInt aError )
+    {
+    iLog->Log(_L( "HandleSessionOpened, aError == %d"), aError );
+    
+    Signal();
+
+    iError = aError;
+    }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTestScripter::HandleSessionError
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::HandleSessionError( CMdESession& /*aSession*/, TInt aError )
+    {
+    iLog->Log(_L( "HandleSessionError, aError == %d"), aError );
+
+    iError = aError;
+    }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTestScripter::HandleSchemaModified
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::HandleSchemaModified()
+    {
+    iLog->Log(_L( "HandleSchemaModified" ));
+
+    TEventIf event( TEventIf::ESetEvent, TName( KMdESchemaModified ) );
+    TestModuleIf().Event( event );
+
+    Signal();// This can be removed after modify all related cases.
+    }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTestScripter::HandleRelationNotification
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::HandleRelationNotification( CMdESession& aSession, 
+    TObserverNotificationType aType,
+    const RArray<TItemId>& aRelationIdArray )
+    {
+    iLog->Log(_L( "HandleRelationNotification" ));
+    
+    iNotificationSession = &aSession;
+    iNotificationType = aType;
+    for ( TInt i = 0; i < aRelationIdArray.Count(); ++i )
+        {
+        iNotificationItemIdArray.Append( aRelationIdArray[ i ] );
+        }
+
+    Signal();
+    }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTestScripter::HandleRelationItemNotification
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::HandleRelationItemNotification(CMdESession& aSession, 
+    TObserverNotificationType aType,
+    const RArray<TMdERelation>& aRelationArray )
+    {
+    iLog->Log(_L( "HandleRelationItemNotification" ));
+
+    iNotificationSession = &aSession;
+    iNotificationType = aType;
+    for ( TInt i = 0; i < aRelationArray.Count(); ++i )
+        {
+        iNotificationRelationArray.Append( aRelationArray[ i ] );
+        }
+
+    Signal();
+    }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTestScripter::HandleRelationPresentNotification
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::HandleRelationPresentNotification(CMdESession& /* aSession */,
+    TBool /* aPresent */,
+    const RArray<TItemId>& /* aRelationIdArray */ )
+    {
+
+    }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTestScripter::HandleEventNotification
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::HandleEventNotification( CMdESession& aSession, 
+    TObserverNotificationType aType,
+    const RArray<TItemId>& aEventIdArray )
+    {
+    iLog->Log(_L( "HandleEventNotification" ));
+    
+    iNotificationSession = &aSession;
+    iNotificationType = aType;
+    for ( TInt i = 0; i < aEventIdArray.Count(); ++i )
+        {
+        iNotificationItemIdArray.Append( aEventIdArray[ i ] );
+        }
+
+    Signal();
+    }
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::GetInstanceItemByArrayIndexL
+// -----------------------------------------------------------------------------
+//
+CMdEInstanceItem* CMdETestScripter::GetInstanceItemByArrayIndexL(
+    const TInt aMode, CStifItemParser& aItem )
+    {
+    CMdEInstanceItem* ret = NULL;
+
+    if ( aMode == EObject )
+        {
+        ret = SanitizeArrayIndexL( iObjectArray, *iObjectNameArray, aItem );
+        TL( ret->InstanceType() == EMdETypeObject )
+        }
+    else if ( aMode == ERelation )
+        {
+        ret = SanitizeArrayIndexL( iRelationArray, *iRelationNameArray, aItem );
+        TL( ret->InstanceType() == EMdETypeRelation )
+        }
+    else if ( aMode == EEvent )
+        {
+        ret = SanitizeArrayIndexL( iEventArray, *iEventNameArray, aItem );
+        TL( ret->InstanceType() == EMdETypeEvent )
+        }
+    else if ( aMode == EProperty )
+        {
+        ret = SanitizeArrayIndexL( iPropertyArray, *iPropertyNameArray, aItem );
+        TL( ret->InstanceType() == EMdETypeProperty )
+        }
+    else
+        {
+    	User::Leave( KErrArgument );
+        }
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::CheckTMdEObjectL
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::CheckTMdEObjectL( const TMdEObject& aTObject, const CMdEObject& aObject )
+    {
+    TL( aObject.Id() == aTObject.Id());
+    TL( aObject.Def().Compare( aTObject.DefL()) == 0 );
+    TL( aObject.Confidential() == aTObject.Confidential());
+    TL( aObject.Placeholder() == aTObject.Placeholder());
+    }
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::CheckTMdERelationL
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::CheckTMdERelationL( const TMdERelation& aTRelation, const CMdERelation& aRelation )
+    {
+    TL( aRelation.Id() == aTRelation.Id());
+    TL( aRelation.Def().Compare( aTRelation.DefL()) == 0 );
+    TL( aRelation.LeftObjectId() == aTRelation.LeftObjectId())
+    TL( aRelation.RightObjectId() == aTRelation.RightObjectId()) 
+    }
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::CheckTMdEObjectArrayL
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::CheckTMdEObjectArrayL(
+    const RArray<TMdEObject>& aTObjects, const TInt aIndex, const TInt aCount )
+    {
+    TL( aTObjects.Count() == aCount );
+
+    for ( TInt i = 0; i < aTObjects.Count(); ++i )
+        {
+        const CMdEObject* object = NULL;
+        TInt j;
+
+        for ( j = 0; aIndex + j < iObjectArray.Count(); ++j )
+            {
+            if ( iObjectArray[ aIndex + j ]->Id() == aTObjects[ i ].Id())
+                {
+                object = iObjectArray[ aIndex + j ];
+
+                CheckTMdEObjectL( aTObjects[ i ], *object );
+                break;
+                }
+            }
+        TL( object );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::CheckTMdERelationArrayL
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::CheckTMdERelationArrayL(
+    const RArray<TMdERelation>& aTRelations, const TInt aIndex, const TInt aCount )
+    {
+    TL( aTRelations.Count() == aCount );
+
+    for ( TInt i = 0; i < aTRelations.Count(); ++i )
+        {
+        const CMdERelation* relation = NULL;
+        TInt j;
+
+        for ( j = 0; aIndex + j < iRelationArray.Count(); ++j )
+            {
+            if ( iRelationArray[ aIndex + j ]->Id() == aTRelations[ i ].Id())
+                {
+                relation = iRelationArray[ aIndex + j ];
+
+                CheckTMdERelationL( aTRelations[ i ], *relation );
+                break;
+                }
+            }
+        TL( relation );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::CheckTItemIdArrayL
+// -----------------------------------------------------------------------------
+//
+template <class T> void CMdETestScripter::CheckTItemIdArrayL(
+    const RArray<TItemId>& aTItemIds, const RPointerArray<T>& aArray,
+    const TInt aIndex, const TInt aCount )
+    {
+    TL( aTItemIds.Count() == aCount );
+
+    for ( TInt i = 0; i < aTItemIds.Count(); ++i )
+        {
+        const T* t = NULL;
+        TInt j;
+
+        for ( j = 0; aIndex + j < aArray.Count(); ++j )
+            {
+            if ( aArray[ aIndex + j ]->Id() == aTItemIds[ i ] )
+                {
+                t = aArray[ aIndex + j ];
+
+                break;
+                }
+            }
+        TL( t );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::CheckAsyncResultArrayL
+// -----------------------------------------------------------------------------
+//
+TInt CMdETestScripter::CheckAsyncResultArrayL( TEventIf aEvent )
+    {
+    TInt err = KErrNone;
+    if ( 0 == aEvent.Name().Compare( KMdEItemsAsyncAdd ) 
+        || 0 == aEvent.Name().Compare( KMdEItemsAsyncUpdate ) )
+        {
+        //Check result item ids count of iMdEDataBuf
+        //Update ids of iItemArray( iObjectArray, iRelationArray, iEventsArray ) to clear temp test data in delete() later.
+        err = iMdeSession->DeserializeItemsL( iMdEDataBuf, iItemArray );
+        }
+    else if ( 0 == aEvent.Name().Compare( KMdEObjectsAsyncRemoved )
+        || 0 == aEvent.Name().Compare( KMdEEventsAsyncRemoved )
+        || 0 == aEvent.Name().Compare( KMdERelationsAsyncRemoved ) )
+        {
+        RArray<TItemId> objectIds, eventIds, relationIds;
+        err = iMdeSession->DeserializeIdsL( iMdEDataBuf, &objectIds, &eventIds, &relationIds );
+        
+        //Check result item ids count of iMdEDataBuf
+        if ( 0 == aEvent.Name().Compare( KMdEObjectsAsyncRemoved ) )
+            {
+            TL( objectIds.Count() == iItemCount );
+            }
+        else if ( 0 == aEvent.Name().Compare( KMdEEventsAsyncRemoved ) )
+            {
+            TL( eventIds.Count() == iItemCount );
+            }
+        else if ( 0 == aEvent.Name().Compare( KMdERelationsAsyncRemoved ) )
+            {
+            TL( relationIds.Count() == iItemCount );
+            }
+        objectIds.Close();
+        eventIds.Close();
+        relationIds.Close();
+        }
+    iItemCount = 0;
+    iItemArray.Reset();
+    iMdEDataBuf.Close();//Clean mde buffer
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::FormInstanceItemArrayL
+// -----------------------------------------------------------------------------
+//
+void CMdETestScripter::FormInstanceItemArrayL(
+    CStifItemParser& aItem, RPointerArray<CMdEInstanceItem>& aItemArray ) const
+    {
+    TInt mode2;
+    TInt index;
+    TInt count;
+
+    User::LeaveIfError( aItem.GetNextInt( mode2 ));
+    User::LeaveIfError( aItem.GetNextInt( index ));
+    User::LeaveIfError( aItem.GetNextInt( count ));
+
+    for ( TInt i = 0; i < count; ++i )
+        {
+        if ( mode2 == EObject )
+            {
+            aItemArray.Append( iObjectArray[ index + i ] );
+            }
+        else if ( mode2 == ERelation )
+            {
+            aItemArray.Append( iRelationArray[ index + i ] );
+            }
+        else if ( mode2 == EEvent )
+            {
+            aItemArray.Append( iEventArray[ index + i ] );
+            }
+        else if ( mode2 == EProperty )
+            {
+            aItemArray.Append( iPropertyArray[ index + i ] );
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::SanitizeArrayIndexL
+// -----------------------------------------------------------------------------
+//
+template <class T> T* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<T>& aArray, const CDesCArrayFlat& aNameArray, 
+    CStifItemParser& aItem )
+    {
+    __ASSERT_ALWAYS( aArray.Count() == aNameArray.Count(),
+                     User::Panic( KMdETestScripter, KErrGeneral ));
+
+    TPtrC nameOrIndex;
+    User::LeaveIfError( aItem.GetNextString( nameOrIndex ));
+	TLex lex( nameOrIndex );
+	TInt index;
+	TInt err = lex.Val( index );
+	if ( err == KErrGeneral )
+		{ // string is name identifier
+		for ( TInt nameIndex = 0; nameIndex < aNameArray.Count(); nameIndex++)
+			{
+			if ( nameOrIndex.Compare( aNameArray[ nameIndex ] ) == 0 )
+				{
+				return aArray[ nameIndex ];	
+				}
+			}
+		User::Leave( KErrNotFound );
+		return NULL; // suppress compile warning
+		}
+	else
+		{
+		if ( index == KLast )
+    		{
+    		index = aArray.Count() - 1;
+    		}
+
+		TL( aArray.Count() > index );
+		return aArray[ index ];
+		}		
+    }
+
+// ========================== TEMPLATE METHOD INSTANTIATIONS ===================
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::SanitizeArrayIndexL
+// -----------------------------------------------------------------------------
+//
+template CMdEObjectDef* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdEObjectDef>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+template CMdERelationDef* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdERelationDef>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+template CMdEEventDef* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdEEventDef>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+template CMdEPropertyDef* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdEPropertyDef>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+template CMdENamespaceDef* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdENamespaceDef>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+template CMdEObject* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdEObject>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+template CMdERelation* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdERelation>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+template CMdEEvent* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdEEvent>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+template CMdEProperty* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdEProperty>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+template CMdERelationCondition* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdERelationCondition>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+template CMdELogicCondition* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdELogicCondition>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+template CMdEPropertyCondition* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdEPropertyCondition>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+template CMdEEventCondition* CMdETestScripter::SanitizeArrayIndexL(
+    RPointerArray<CMdEEventCondition>& aArray, const CDesCArrayFlat& aNameArray, CStifItemParser& aItem );
+
+// -----------------------------------------------------------------------------
+// CMdETestScripter::CheckTItemIdArrayL
+// -----------------------------------------------------------------------------
+//
+template void CMdETestScripter::CheckTItemIdArrayL(
+    const RArray<TItemId>& aTItemIds, const RPointerArray<CMdEObject>& aArray,
+    const TInt aIndex, const TInt aCount );
+template void CMdETestScripter::CheckTItemIdArrayL(
+    const RArray<TItemId>& aTItemIds, const RPointerArray<CMdEEvent>& aArray,
+    const TInt aIndex, const TInt aCount );
+template void CMdETestScripter::CheckTItemIdArrayL(
+    const RArray<TItemId>& aTItemIds, const RPointerArray<CMdERelation>& aArray,
+    const TInt aIndex, const TInt aCount );
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+//  [End of File] - Do not remove