williamr@2: // Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #if !defined(__WAPTESTUTILS_H__) williamr@2: #define __WAPTESTUTILS_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: #if !defined(__LOGGING) williamr@2: #define __LOGGING williamr@2: #endif williamr@2: williamr@2: #include "waplog.h" williamr@2: #include "logdef.h" williamr@2: williamr@2: // Constants williamr@2: const TUid KUidWapTestUtils = {0x10005188}; williamr@2: const TInt KMaxUserEntrySize = 50; williamr@2: williamr@2: //Test Harness Logging williamr@2: williamr@2: #define KLogsDir _L("c:\\logs\\") williamr@2: #define KWapLogsDirName _L("WapTest") williamr@2: williamr@2: #define KTestHeader _L("Test Results") williamr@2: #define KTestStarting _L("Test %d Starting") williamr@2: #define KTestStartingWithDesc _L("Test %d Starting (%S)") williamr@2: #define KNextTestStepWithDesc _L("Test %d Step %d (%S)") williamr@2: #define KTestPassed _L("Test %d OK") williamr@2: #define KTestFailed _L("Test %d FAILED (error = %d)") williamr@2: #define KTestHarnessCompleted _L("Tests Completed Ok") williamr@2: #define KTestHarnessFailed _L("Test FAILED (%d failed test(s))") williamr@2: #define KTestFailInfo _L("Test %d : %S failed with Error %d") williamr@2: #define KTestCommentPrepend _L("\t") williamr@2: williamr@2: williamr@2: class CWapTestHarness : public CBase williamr@2: /** williamr@2: Test harness providing logging features williamr@2: @publishedAll williamr@4: @deprecated williamr@2: */ williamr@2: williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CWapTestHarness* NewLC(const TDesC& aTitle); williamr@2: IMPORT_C static CWapTestHarness* NewL(const TDesC& aTitle); williamr@2: ~CWapTestHarness(); williamr@2: williamr@2: IMPORT_C void StartTestL(const TDesC& aName); williamr@2: IMPORT_C void NextStep(const TDesC& aStepName); williamr@2: IMPORT_C void EndTest(TInt aErrorCode); williamr@2: IMPORT_C void LogIt(TRefByValue aFmt, ...); williamr@2: IMPORT_C void operator()(TInt aResult,TInt aLineNum); williamr@2: IMPORT_C void operator()(TInt aResult); williamr@2: IMPORT_C void PressAnyKey(); williamr@2: IMPORT_C void DumpData(HBufC8& aData, TBool logIt = EFalse); williamr@2: IMPORT_C void GetAnEntry(const TDesC & ourPrompt, TDes & currentstring); williamr@2: IMPORT_C TInt GetSelection(const TDesC& ourPrompt, const TDesC& validChoices); williamr@2: IMPORT_C void SetScript(RFile& scriptFile); williamr@2: inline void DoResourceLeakTest(TBool aValue); williamr@2: inline RTest& Test(); williamr@2: williamr@2: inline static void DefaultLogFileName(TDes& aFileName); williamr@2: private: williamr@2: CWapTestHarness(const TDesC& aTitle); williamr@2: void ConstructL(const TDesC& aTitle); williamr@2: void Panic(TInt aPanic); williamr@2: void TestHarnessFailed(); williamr@2: void TestHarnessComplete(); williamr@2: void ResourceLeakTest(); williamr@2: inline void CreateFlogger(const TDesC& aFileName, TInt aShowDate=ETrue, TInt aShowTime=ETrue); williamr@2: inline void WriteComment(const TDesC& aComment); williamr@2: TInt ReadLineFromScript(TDes& aBuffer); williamr@2: williamr@2: private: williamr@2: // Helper class to store failed tests williamr@2: class CTestInfo; williamr@2: enum TPanicCode williamr@2: { williamr@2: EBadStartTest, williamr@2: EBadEndTest, williamr@2: EBadCLogPtr williamr@2: }; williamr@2: private: williamr@2: RTest iTest; williamr@2: RFileLogger iFlogger; williamr@2: RFile* iScriptFile; williamr@2: __DECLARE_LOG; // Does CLogClient* iLogPtr; williamr@2: TInt iTestCount; williamr@2: CArrayPtrFlat* iFailedTests; williamr@2: TTime iStartTime; williamr@2: TBool iCanStartTest; williamr@2: TInt iStepNumber; williamr@2: TInt iStartHandleCount; williamr@2: TBool iDoResourceLeakTest; williamr@2: TBool iScriptRunning; williamr@2: }; williamr@2: williamr@2: class CWapTestHarness::CTestInfo : public CBase williamr@2: williamr@2: /** williamr@2: Holds test number and name williamr@2: @publishedAll williamr@4: @deprecated williamr@2: */ williamr@2: { williamr@2: public: williamr@2: static CTestInfo* NewLC(const TDesC& aName, TInt aNumber, TInt aErrorCode); williamr@2: static CTestInfo* NewL(const TDesC& aName, TInt aNumber, TInt aErrorCode); williamr@2: ~CTestInfo(); williamr@2: williamr@2: void SetNameL(const TDesC& aName); williamr@2: void SetNumber(TInt aNumber); williamr@2: void SetErrorCode(TInt aErrorCode); williamr@2: williamr@2: inline TPtr Name() const; williamr@2: inline TInt Number() const; williamr@2: inline TInt ErrorCode() const; williamr@2: private: williamr@2: CTestInfo(); williamr@2: void ConstructL(const TDesC& aName, TInt aNumber, TInt aErrorCode); williamr@2: private: williamr@2: HBufC* iName; williamr@2: TInt iNumber; williamr@2: TInt iErrorCode; williamr@2: }; williamr@2: williamr@2: #include williamr@2: williamr@2: #endif // __WAPTESTUTILS_H__