diff -r 9f5ae1728557 -r db3f5fa34ec7 messagingfw/biomsgfw/BIUTTSRC/T_BIOMSG.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/biomsgfw/BIUTTSRC/T_BIOMSG.CPP Wed Nov 03 22:41:46 2010 +0530 @@ -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 +#include +#include +#include +#include + +// 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 + }