messagingappbase/obexmtms/TObexMTM/SRC/ObexTestUtils.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/obexmtms/TObexMTM/SRC/ObexTestUtils.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,298 @@
+// 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 "ObexTestUtils.h"
+// System includes
+#include <msvids.h>
+#include <msvuids.h>
+#include <mtclbase.h>     // CBaseMtm
+#include <mtsr.h>         // CBaseServerMtm
+#include <btmsgtypeuid.h> // KUidMsgTypeBt
+#include <irmsgtypeuid.h> // KUidMsgTypeIr
+// User includes
+
+_LIT(KObexTestPanicLiteral, "Obex Test");               // literal for panic
+
+
+CObexTestUtils* CObexTestUtils::NewL(RTest& aTest, TUint aCreationFlags)
+    {
+    CObexTestUtils* self = NewLC(aTest, aCreationFlags);
+    CleanupStack::Pop();
+    return self;
+    }
+
+CObexTestUtils* CObexTestUtils::NewLC(RTest& aTest, TUint aCreationFlags)
+    {
+    CObexTestUtils* self = new (ELeave) CObexTestUtils(aTest);
+    CleanupStack::PushL(self);
+    self->ConstructL(aCreationFlags);
+    return self;
+    }
+
+CObexTestUtils::CObexTestUtils(RTest& aTest) :
+ CMsvTestUtils(aTest),
+ iBTServiceId(KMsvUnknownServiceIndexEntryId),
+ iIRServiceId(KMsvUnknownServiceIndexEntryId),
+ iCurrentMtm(KUidMsvNullEntry)
+    {
+//	StartC32();     //TODO:- required?
+    }
+
+void CObexTestUtils::ConstructL(TUint aCreationFlags)
+    {
+    CMsvTestUtils::ConstructL(aCreationFlags);
+    }
+
+CObexTestUtils::~CObexTestUtils()
+    {
+    delete iBTClientMtm;
+    delete iBTServerMtm;
+    delete iIRClientMtm;
+    delete iIRServerMtm;
+    }
+
+const CBaseMtm& CObexTestUtils::GetCurrentObexClientMtm() const
+    {
+    __ASSERT_ALWAYS( iCurrentMtm != KUidMsvNullEntry, User::Panic(KObexTestPanicLiteral, KErrNotReady) );
+    return (iCurrentMtm == KUidMsgTypeBt) ? *iBTClientMtm : *iIRClientMtm;
+    }
+
+CBaseMtm& CObexTestUtils::GetCurrentObexClientMtm()
+    {
+    __ASSERT_ALWAYS( iCurrentMtm != KUidMsvNullEntry, User::Panic(KObexTestPanicLiteral, KErrNotReady) );
+    return (iCurrentMtm == KUidMsgTypeBt) ? *iBTClientMtm : *iIRClientMtm;
+    }
+
+const CBaseServerMtm& CObexTestUtils::GetCurrentObexServerMtm() const
+    {
+    __ASSERT_ALWAYS( iCurrentMtm != KUidMsvNullEntry, User::Panic(KObexTestPanicLiteral, KErrNotReady) );
+    return (iCurrentMtm == KUidMsgTypeBt) ? *iBTServerMtm : *iIRServerMtm;
+    }
+
+CBaseServerMtm& CObexTestUtils::GetCurrentObexServerMtm()
+    {
+    __ASSERT_ALWAYS( iCurrentMtm != KUidMsvNullEntry, User::Panic(KObexTestPanicLiteral, KErrNotReady) );
+    return (iCurrentMtm == KUidMsgTypeBt) ? *iBTServerMtm : *iIRServerMtm;
+    }
+
+TMsvId CObexTestUtils::GetCurrentServiceId() const
+    {
+    __ASSERT_ALWAYS( iCurrentMtm != KUidMsvNullEntry, User::Panic(KObexTestPanicLiteral, KErrNotReady) );
+    return (iCurrentMtm == KUidMsgTypeBt) ? iBTServiceId : iIRServiceId;
+    }
+
+void CObexTestUtils::InstantiateClientMtmsL()
+    {
+    InstantiateBTClientMtmL();
+    InstantiateIRClientMtmL();
+    }
+
+void CObexTestUtils::InstantiateServerMtmsL()
+    {
+	InstantiateBTServerMtmL();
+	InstantiateIRServerMtmL();
+    }
+
+void CObexTestUtils::InstantiateBTClientMtmL()
+    {
+    delete iBTClientMtm;
+    iBTClientMtm = NULL;
+    iBTClientMtm = InstantiateClientMtmL(KUidMsgTypeBt, iBTServiceId);
+    }
+
+void CObexTestUtils::InstantiateBTServerMtmL()
+    {
+    delete iBTServerMtm;
+    iBTServerMtm = NULL;
+    iBTServerMtm = InstantiateServerMtmL(KUidMsgTypeBt, iBTServiceId);
+    }
+
+void CObexTestUtils::InstantiateIRClientMtmL()
+    {
+    delete iIRClientMtm;
+    iIRClientMtm = NULL;
+    iIRClientMtm = InstantiateClientMtmL(KUidMsgTypeIrUID, iIRServiceId);
+    }
+
+void CObexTestUtils::InstantiateIRServerMtmL()
+    {
+    delete iIRServerMtm;
+    iIRServerMtm = NULL;
+    iIRServerMtm = InstantiateServerMtmL(KUidMsgTypeIrUID, iIRServiceId);
+    }
+
+void CObexTestUtils::DeleteServicesL()
+    {
+    DeleteServiceL(KUidMsgTypeBt);
+    DeleteServiceL(KUidMsgTypeIrUID);
+    }
+
+void CObexTestUtils::CreateServicesL()
+    {
+    iBTServiceId = CreateObexServiceL(KUidMsgTypeBt);
+    iIRServiceId = CreateObexServiceL(KUidMsgTypeIrUID);
+    }
+
+void CObexTestUtils::FindExistingServicesL()
+    {
+	TInt err = KErrNone;
+
+    TRAP(err, ServiceIdL(KUidMsgTypeBt, iBTServiceId));
+
+	if (err != KErrNone)
+		{
+		_LIT(KBTEntryNotFound, "Bluetooth Service Entry Not Found\n");
+		Printf(KBTEntryNotFound);
+		}
+
+	TRAP(err, ServiceIdL(KUidMsgTypeIrUID, iIRServiceId));
+
+	if (err != KErrNone)
+		{
+		_LIT(KIREntryNotFound, "Ir Service Entry Not Found\n");
+		Printf(KIREntryNotFound);
+		}
+    }
+
+void CObexTestUtils::CreateServerMtmRegsL()
+    {
+    User::Leave(KErrNotSupported);
+    }
+
+void CObexTestUtils::InstallMtmGroupsL()
+    {
+	if(iMsvSession)
+		{
+		User::LeaveIfError(iMsvSession->InstallMtmGroup(_L("z:\\system\\libs\\BTMTM.RSC")));
+		User::LeaveIfError(iMsvSession->InstallMtmGroup(_L("z:\\system\\libs\\IRMTM.RSC")));
+		}
+	else
+		WriteComment(_L("can't install mtms as there's no session\n"));
+    }
+
+TMsvId CObexTestUtils::CreateObexServiceL(TUid aMsgType)
+    {
+    __ASSERT_ALWAYS( aMsgType == KUidMsgTypeBt || aMsgType == KUidMsgTypeIrUID, Panic(KErrArgument) );
+    
+   	TInt err = KErrNone;
+	TMsvId serviceId = 0;
+	
+    //Get the first service entry for the message type
+    TRAP(err, ServiceIdL(aMsgType, serviceId));
+
+	//Create a new service entry if one doesn't exist.  Otherwise, use the existing one
+    if (err != KErrNone)
+		{
+		_LIT(KCreatingServiceEntry, "Creating New Service Entry.\n");
+		Printf(KCreatingServiceEntry);
+        serviceId = CreateServiceL(aMsgType);
+		}
+	else
+		{
+		_LIT(KUsingExistingServiceEntry, "Using Existing Service Entry.\n");
+		Printf(KUsingExistingServiceEntry);
+		}
+
+    //set the service Id attribute for the particular message type
+    TMsvId& id = (aMsgType == KUidMsgTypeBt ? iBTServiceId : iIRServiceId);
+    id = serviceId;
+    
+    return serviceId;
+    }
+
+
+void CObexTestUtils::Reset()
+    {
+    delete iBTClientMtm;
+    iBTClientMtm = NULL;
+    delete iBTServerMtm;
+    iBTServerMtm = NULL;
+    delete iIRClientMtm;
+    iIRClientMtm = NULL;
+    delete iIRServerMtm;
+    iIRServerMtm = NULL;
+
+    CMsvTestUtils::Reset();
+    }
+
+void CObexTestUtils::Panic(TInt aPanic)
+    {
+    User::Panic(KObexTestPanicLiteral, aPanic);
+    }
+
+
+TUid CObexTestUtils::CurrentObexMtm() const
+    {
+    return iCurrentMtm;
+    }
+
+TBool CObexTestUtils::SelectObexMtmL(TUid aMsgType)
+    {
+    __ASSERT_ALWAYS( aMsgType == KUidMsgTypeBt || aMsgType == KUidMsgTypeIrUID, Panic(KErrArgument) );
+
+    if (!iClientMtmRegistry)
+		{
+		iClientMtmRegistry = CClientMtmRegistry::NewL(*iMsvSession);
+		}
+
+    TBool present = iClientMtmRegistry->IsPresent(aMsgType);
+
+    if(present)
+        iCurrentMtm = aMsgType;
+
+    return present;
+    }
+
+
+void CObexTestUtils::RegisterIRMtmL()
+	{
+	if(iMsvSession)
+		{
+		User::LeaveIfError(iMsvSession->InstallMtmGroup(_L("z:\\resource\\messaging\\mtm\\IRMTM.RSC")));
+		}
+	else
+		WriteComment(_L("can't install IR Mtm as there's no session\n"));
+	}
+
+void CObexTestUtils::RegisterBTMtmL()
+	{
+	if(iMsvSession)
+		{
+		User::LeaveIfError(iMsvSession->InstallMtmGroup(_L("z:\\resource\\messaging\\mtm\\BTMTM.RSC")));
+		}
+	else
+		WriteComment(_L("can't install BT Mtm as there's no session\n"));
+	}
+
+void CObexTestUtils::UnRegisterIRMtmL()
+	{
+	if(iMsvSession)
+		{
+		User::LeaveIfError(iMsvSession->DeInstallMtmGroup(_L("z:\\system\\libs\\IRMTM.RSC")));
+		}
+	else
+		WriteComment(_L("can't deinstall IR Mtm as there's no session\n"));
+	}
+
+void CObexTestUtils::UnRegisterBTMtmL()
+	{
+	if(iMsvSession)
+		{
+		User::LeaveIfError(iMsvSession->DeInstallMtmGroup(_L("z:\\system\\libs\\BTMTM.RSC")));
+		}
+	else
+		WriteComment(_L("can't deinstall BT Mtm as there's no session\n"));
+	}