--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/biomsgfw/ENPTSRC/T_ENP.CPP Wed Nov 03 22:41:46 2010 +0530
@@ -0,0 +1,421 @@
+// Copyright (c) 1998-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 for Email Notification Parser
+//
+//
+
+//Create a buffer containing an sms message with the relevant field
+//then pass it by reference to the parser dll
+#include <e32uid.h>
+#include <e32test.h>
+#include <e32cons.h>
+#include <s32file.h>
+#include <e32base.h>
+
+#include "TESTENV.H"
+
+#include <regpsdll.h>
+
+#include "biotestutils.h"
+
+#define BIO_MSG_ENTRY_PARSED 1 // Set entry .iMtmData3 to 1 to indicate that the entry has store i.e parsed,externalised
+
+#define KTestEnpPriority (1) //Change this....
+
+#define KEmailNotificationTextFilePath _L("c:\\test\\bio\\enp\\")
+
+//
+
+//forward reference
+class CExampleScheduler;
+LOCAL_C void DisplayErrorReason(TInt& aReason);
+
+//global declarations
+LOCAL_D RTest test(_L("ENP Test Harness"));
+
+ //
+ // CExampleScheduler //
+ //
+
+class CExampleScheduler : public CActiveScheduler
+ {
+ public:
+ void Error (TInt aError) const;
+ };
+
+void CExampleScheduler::Error(TInt anError) const
+ {
+ CActiveScheduler::Stop();
+ test.Printf(_L("\nLeave signalled, reason=%d\n"),anError);
+ }
+// end CExampleScheduler::Error(TInt) const
+
+
+ //
+ // CTestEnp: INTERFACE //
+ //
+LOCAL_D CExampleScheduler *exampleScheduler;
+
+class CTestEnp : public CActive
+ {
+ public:
+ ~CTestEnp();
+ CTestEnp();
+
+ static CTestEnp* NewL();
+ void ConstructL();
+ void Start(TInt aCmd);
+ void RunL();
+ void DoCancel();
+ void RequestComplete(TRequestStatus& aStatus,TInt aCompletion);
+
+ enum TSessionState
+ {
+ EParse,
+ EProcess,
+ EReparse,
+ EDisplay, //Display entry data
+ };
+
+ private:
+ TInt iState;
+ TInt iMsgCtr;
+ TInt iMsgCount;
+
+ TInt iTestCtr;
+
+ CBaseScriptParser2* iParser;
+ CMsvEntrySelection* iMsvSelection;
+
+ CArrayPtrSeg<CParsedField>* iTestParsedFieldArray;
+ CBioTestUtils* iBioTestUtils;
+ HBufC* iMsgBuffer;
+ };
+
+
+
+ //
+ // CTestEnp: IMPLEMENTATION //
+ //
+
+CTestEnp* CTestEnp::NewL()
+ {
+ CTestEnp* self = new (ELeave) CTestEnp();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(); //self
+ return self;
+ }
+// end CTestEnp::NewL(CMsvServerEntry*)
+
+
+void CTestEnp::ConstructL()
+ {
+ // create test utilities object & go server side
+ iBioTestUtils = CBioTestUtils::NewL(test, ETuGoClientSide | ETuDeleteService | ETuCreateService);
+
+ // create some messages
+ iMsvSelection = iBioTestUtils->GenerateMessagesL(KEmailNotificationTextFilePath);
+ iMsgCount = iMsvSelection->Count();
+
+ // create the parser
+ TBool finished = EFalse;
+#ifdef _DEBUG
+ TInt failCount = 0;
+#endif
+ while(!finished)
+ {
+ __UHEAP_FAILNEXT(failCount++);
+ //
+ TRAPD(error, iParser = iBioTestUtils->CreateParserTypeL(KUidBIOEmailNotificationMsg););
+ if (error == KErrNone)
+ {
+ __UHEAP_RESET;
+ finished = ETrue;
+ __UHEAP_RESET;
+ }
+ // Handle error
+ else
+ {
+ // Check if error is out of memory or a specific fax rendering error
+ test(error == KErrNoMemory);
+ __UHEAP_RESET;
+ }
+ }
+
+ CActiveScheduler::Add(this);
+ }
+// end CTestEnp::ConstructL()
+
+
+void CTestEnp::Start(TInt aCmd)
+ {
+ TInt error = KErrNone;
+ TBool finished = EFalse;
+#ifdef _DEBUG
+ TInt failCount = 0;
+#endif
+ iState=aCmd;
+
+ switch (iState)
+ {
+ case EParse:
+ test.Printf(_L("Parsing...\n"));
+ iBioTestUtils->TestStart(iTestCtr,_L("Parsing"));
+ delete iMsgBuffer;
+ iMsgBuffer = iBioTestUtils->MessageBodyL((*iMsvSelection)[iMsgCtr]).AllocL();
+
+ while(!finished)
+ {
+ __UHEAP_FAILNEXT(failCount++);
+ //
+ TRAP(error, iParser->ParseL(iStatus,*iMsgBuffer));
+ if (error == KErrNone)
+ {
+ __UHEAP_RESET;
+ finished = ETrue;
+ SetActive();
+ }
+ // Handle error
+ else
+ {
+ // Check if error is out of memory or a specific fax rendering error
+ test(error == KErrNoMemory);
+ __UHEAP_RESET;
+ }
+ }
+ break;
+
+ case EProcess:
+ test.Printf(_L("process...(This is not supported in Email Notification Parser)\n"));
+ iBioTestUtils->TestStart(iTestCtr,_L("Calling process"));
+ TRAP(error,iParser->ProcessL(iStatus); );
+ while(!finished)
+ {
+ __UHEAP_FAILNEXT(failCount++);
+ //
+ TRAP(error, iParser->ProcessL(iStatus));
+ if (error == KErrNone)
+ {
+ __UHEAP_RESET;
+ finished = ETrue;
+ SetActive();
+ }
+ // Handle error
+ else
+ {
+ // Check if error is out of memory or a specific fax rendering error
+ test(error == KErrNoMemory);
+ __UHEAP_RESET;
+ }
+ }
+ break;
+
+ case EReparse:
+ test.Printf(_L("Reparsing...\n"));
+ iBioTestUtils->TestStart(iTestCtr,_L("Re-Parsing"));
+ while(!finished)
+ {
+ __UHEAP_FAILNEXT(failCount++);
+ //
+ TRAP(error, iParser->ParseL(iStatus,*iMsgBuffer));
+ if (error == KErrNone)
+ {
+ __UHEAP_RESET;
+ finished = ETrue;
+ SetActive();
+ }
+ // Handle error
+ else
+ {
+ // Check if error is out of memory or a specific fax rendering error
+ test(error == KErrNoMemory);
+ __UHEAP_RESET;
+ }
+ }
+ break;
+
+ case EDisplay:
+ iBioTestUtils->TestStart(iTestCtr,_L("Printing parsed fields"));
+ TRAP(error,iBioTestUtils->LogExtractedFieldsL((*iMsvSelection)[iMsgCtr]));
+ RequestComplete(iStatus,error);
+ SetActive();
+ break;
+
+ default:
+ break;
+ }
+ }
+// end CTestEnp::StartL(TInt)
+
+
+void CTestEnp::RunL()
+ {
+ TInt result=iStatus.Int();
+
+ if (result != KErrNone && result != KErrNotSupported)
+ {
+ test.Console()->ClearScreen();
+ test.Console()->SetPos(0,0);
+ DisplayErrorReason(result);
+ iBioTestUtils->TestHarnessFailed(result);
+ CActiveScheduler::Stop();
+ return;
+ }
+
+ if(iState==EProcess)
+ iBioTestUtils->WriteComment(_L("ProcessL not supported"));
+ iBioTestUtils->TestFinish(iTestCtr);
+ iTestCtr++;
+ switch (iState)
+ {
+ case EParse:
+ Start(EProcess);
+ break;
+
+ case EProcess:
+ Start(EReparse);
+ break;
+
+ case EReparse:
+ Start(EDisplay);
+ break;
+
+ case EDisplay:
+ {
+ if(++iMsgCtr < iMsgCount)
+ Start(EParse);
+ else
+ {
+ test.Console()->ClearScreen();
+ test.Console()->SetPos(0,0);
+ DisplayErrorReason(result);
+ iParser->Cancel();
+ iBioTestUtils->TestHarnessCompleted();
+ CActiveScheduler::Stop();
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+// end CTestEnp::RunL()
+
+
+void CTestEnp::DoCancel()
+ {
+ }
+// end CTestEnp::DoCancel()
+
+void CTestEnp::RequestComplete(TRequestStatus& aStatus,TInt aCompletion)
+ {
+ TRequestStatus* statusPtr=&aStatus;
+ User::RequestComplete(statusPtr,aCompletion);
+ }
+
+LOCAL_C void DisplayErrorReason(TInt& aReason)
+ {
+ switch (aReason)
+ {
+ case KErrNone:
+ test.Printf(_L("Session completed successfully"));
+ break;
+ case KErrCancel:
+ test.Printf(_L("Session cancelled"));
+ break;
+ case KErrEof:
+ test.Printf(_L("KErrEof"));
+ break;
+ case KErrNoMemory:
+ test.Printf(_L("No memory"));
+ break;
+ case KErrDisconnected:
+ test.Printf(_L(" KErrDisconnected"));
+ break;
+ case KErrAccessDenied:
+ test.Printf(_L("KErrAccessDenied"));
+ break;
+ case KErrNotSupported:
+ test.Printf(_L("Function Not Supported, Error = %d\n"), aReason);
+ break;
+ default:
+ test.Printf(_L("Error !!!= %d\n"), aReason );
+ break;
+ }
+ }
+
+LOCAL_C void doMainL()
+ {
+
+ //create a scheduler
+ exampleScheduler = new (ELeave) CExampleScheduler;
+ CleanupStack::PushL( exampleScheduler );
+ CActiveScheduler::Install( exampleScheduler );
+
+ CTestEnp* testParser = CTestEnp::NewL();
+ CleanupStack::PushL(testParser);
+
+ test(testParser != NULL);
+
+ testParser->Start(CTestEnp::EParse);
+ CActiveScheduler::Start();
+
+ CleanupStack::PopAndDestroy(2); // testParser, exampleScheduler, sEntry ,theServer
+ }
+// end doMainL()
+
+CTestEnp::CTestEnp()
+:CActive(KTestEnpPriority)
+ {
+ }
+// end CTestEnp::CTestEnp()
+
+
+CTestEnp::~CTestEnp()
+ {
+ Cancel();
+
+ delete iParser;
+ delete iMsvSelection;
+ delete iBioTestUtils;
+ delete iMsgBuffer;
+
+ if(iTestParsedFieldArray)
+ {
+ iTestParsedFieldArray->ResetAndDestroy();
+ delete iTestParsedFieldArray;
+ iTestParsedFieldArray=NULL;
+ }
+ }
+// end CTestEnp::~CTestEnp()
+
+
+GLDEF_C TInt E32Main()
+ {
+ test.Title();
+ test.Start(_L("ENP Test Harness"));
+ __UHEAP_MARK;
+ CTrapCleanup* cleanup=CTrapCleanup::New();
+ test(cleanup!=NULL);
+ TRAPD(error,doMainL());
+ if (error) test.Printf(_L("Completed with return code %d"),error);
+ delete cleanup;
+ __UHEAP_MARKEND;
+ test.Close();
+ test.End();
+ return KErrNone;
+ }
+// end E32Main()