messagingfw/biomsgfw/BIUTTSRC/T_BIOMSG.CPP
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/biomsgfw/BIUTTSRC/T_BIOMSG.CPP	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,242 @@
+// Copyright (c) 1999-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:
+// Test harness 
+// 
+//
+
+
+
+#pragma warning( disable : 4100 )
+
+//  Includes...
+#include <e32test.h>
+#include <bsp.h>
+#include <e32uid.h>
+#include <msvruids.h>
+#include <biouids.h>
+
+//  Global functions..
+//  functions()
+GLDEF_C void doMainL();
+GLDEF_C TInt E32Main();
+
+#define DataComponentFileName _L("c:\\system\\mtm\\cbiomtmu.dat")
+
+//forward reference
+class CTestScheduler;
+LOCAL_C void DisplayErrorReason(TInt& aReason);
+
+//  Resources..
+GLDEF_C RTest test(_L("BIO Test Logger Tester"));
+LOCAL_D CTrapCleanup*       myCleanup;
+LOCAL_D RFs                 rFs;
+
+
+    //
+    // CExampleScheduler //
+    //
+
+class CTestScheduler : public CActiveScheduler
+    {
+    public:
+		void ErrorL(TInt aError) const;
+    };
+
+void CTestScheduler::ErrorL(TInt aError) const
+    {
+    CActiveScheduler::Stop();
+    test.Printf(_L("\nLeave signalled, reason=%d\n"),aError);
+    test.Getch();
+	}
+// end CExampleScheduler::Error(TInt) const
+
+LOCAL_D CTestScheduler*		theScheduler;
+
+    //
+    // CTestSaveBioMsg //
+    //
+
+class CTestSaveBioMsg : public CBase, public MMsvSessionObserver
+	{
+public:
+	static CTestSaveBioMsg* NewL();
+	~CTestSaveBioMsg();
+
+	void CreateMessageL();
+private:
+	// some private functions
+	CTestSaveBioMsg();
+	void ConstructL();
+
+	// from MMsvSessionObserver
+	void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
+
+private:
+	// some private members
+	};
+
+//
+// CSaveBIOMessage create the message entry via client
+//
+CTestSaveBioMsg* CTestSaveBioMsg::NewL()
+	{
+	CTestSaveBioMsg* self = new (ELeave) CTestSaveBioMsg();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+	}
+
+CTestSaveBioMsg::~CTestSaveBioMsg()
+	{
+	}
+
+
+CTestSaveBioMsg::CTestSaveBioMsg()
+	{
+	}
+
+void CTestSaveBioMsg::ConstructL()
+	{
+	TUid mtmDllTypeUids[4];
+	TUid smartMtmDllTypeUids[4];
+	TInt smartMtmDllEntryPoints[4];
+
+	mtmDllTypeUids[0] = KUidMtmServerComponent;
+	mtmDllTypeUids[1] = KUidMtmClientComponent;
+	mtmDllTypeUids[2] = KUidMtmUiComponent;
+	mtmDllTypeUids[3] = KUidMtmUiDataComponent;
+
+	smartMtmDllTypeUids[0] = KUidBIOMessageServerMtmDll; 
+	smartMtmDllTypeUids[1] = KUidBIOMessageClientMtmDll; 
+	smartMtmDllTypeUids[2] = KUidBIOMessageUiLayerMtmDll;  //TUid for Bium - UI
+	smartMtmDllTypeUids[3] = KUidBIOMessageUiLayerMtmDll;  //				- UI data
+
+
+	smartMtmDllEntryPoints[0] = 1;
+	smartMtmDllEntryPoints[1] = 1;
+	smartMtmDllEntryPoints[2] = 1;
+	smartMtmDllEntryPoints[3] = 2;
+
+ 
+	// Make a data component for the text mtm, so the server puts the MTMs into the registry
+	CMtmDllInfoArray* mtmdllinfoarray=new(ELeave) CMtmDllInfoArray;
+	CleanupStack::PushL(mtmdllinfoarray);
+
+	TBuf<20> name(_S("BIO UI"));
+	for (TInt ii=0; ii < KMsvNumMtmDllTypes; ++ii) // There are 4 mtm types
+		{
+		TUidType mtmUid(KDynamicLibraryUid, mtmDllTypeUids[ii], smartMtmDllTypeUids[ii]);
+		TVersion mtmVersion(1, 0, 100);
+		CMtmDllInfo* dllInfo = CMtmDllInfo::NewL(name, mtmUid, smartMtmDllEntryPoints[ii], mtmVersion);
+		CleanupStack::PushL(dllInfo);
+		mtmdllinfoarray->AppendL(dllInfo);
+		CleanupStack::Pop();
+		}
+
+	CMtmGroupData* mtmgroupdata=CMtmGroupData::NewL(KUidBIOMessageTypeMtm, KNullUid, *mtmdllinfoarray);
+	CleanupStack::PushL(mtmgroupdata);
+
+	CFileStore* filestore = CPermanentFileStore::ReplaceLC(rFs,DataComponentFileName,EFileShareExclusive|EFileStream|EFileWrite);
+	TUidType uidtype(KPermanentFileStoreLayoutUid, KUidMsvDataComponent, KUidBIOMessageTypeMtm);
+	filestore->SetTypeL(uidtype);
+	RStoreWriteStream out;
+	TStreamId streamid=out.CreateLC(*filestore);							// Push to stack
+	mtmgroupdata->ExternalizeL(out);
+	out.CommitL();
+	CleanupStack::PopAndDestroy(); // out
+	filestore->SetRootL(streamid);
+	filestore->CommitL();
+	CleanupStack::PopAndDestroy(3); // filestore, mtmgroupdata, mtmdllinfoarray
+
+	CMsvSession* msvSession = CMsvSession::OpenSyncL(*this);
+	CClientMtmRegistry* mtmReg=CClientMtmRegistry::NewL(*msvSession);
+	if (!mtmReg->IsPresent(KUidBIOMessageTypeMtm))
+		{
+		User::LeaveIfError(msvSession->InstallMtmGroup(DataComponentFileName));
+		}
+
+	delete mtmReg;
+	delete msvSession;
+	}
+
+void CTestSaveBioMsg::HandleSessionEventL(TMsvSessionEvent /*aEvent*/, TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/)
+	{
+	}
+
+void CTestSaveBioMsg::CreateMessageL()
+	{
+	TUid wibbleParser = {0x1000552F};
+	CSaveBIOMessage* saveBioMsg = CSaveBIOMessage::NewL(wibbleParser);
+	CleanupStack::PushL(saveBioMsg);
+
+	//	Create and fill a CRichText object for the jobbie..
+	CParaFormatLayer* paraFormatLayer = CParaFormatLayer::NewL();
+	CleanupStack::PushL(paraFormatLayer);
+	CCharFormatLayer* charFormatLayer = CCharFormatLayer::NewL();
+	CleanupStack::PushL(charFormatLayer);
+	CRichText* richText = CRichText::NewL(paraFormatLayer,charFormatLayer);
+	CleanupStack::PushL(richText);
+
+	TInt pos = richText->DocumentLength();		// Ought to be 0
+	richText->InsertL(pos,_L("Here's some random cobblers, cobblers wibble hatstand"));
+	
+	TTime theTime;
+	saveBioMsg->CreateMessageL(_L("Bloody bugger test msg"),
+		theTime,
+		*richText);
+	CleanupStack::PopAndDestroy(3); // 
+
+	CleanupStack::PopAndDestroy();
+	}
+
+
+
+//*****************************************************************************
+//
+//  Implementation; global stuff
+//
+//*****************************************************************************
+GLDEF_C TInt E32Main()
+    {
+	__UHEAP_MARK;
+	myCleanup = CTrapCleanup::New();
+	TRAPD(err,doMainL());		
+	test(err==KErrNone);
+	delete myCleanup;	
+	test.End();
+	test.Close();
+	__UHEAP_MARKEND;
+	return(KErrNone);
+    }
+
+GLDEF_C void doMainL()
+    {
+	// Create an active scheduler for the program session
+    theScheduler = new (ELeave) CTestScheduler();
+    CleanupStack::PushL(theScheduler);
+    CActiveScheduler::Install(theScheduler);
+    test.Title();
+    test.Printf(_L("\n"));
+    test.Start(_L("Starting save BIO msg test harness"));
+
+	// install our mtm
+	rFs.Connect();
+	
+	CTestSaveBioMsg* tester = CTestSaveBioMsg::NewL();
+	CleanupStack::PushL(tester);
+	tester->CreateMessageL();
+
+	CleanupStack::PopAndDestroy(2);	// theScheduler, tester
+    }