/** Copyright (c) 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: This file contains the header file of the CTestReport.**/#ifndef TEST_REPORT_H#define TEST_REPORT_H// INCLUDES#include <e32std.h>#include <e32base.h>#include "TestEngineClient.h"#include "TestEngine.h"// CONSTANTS// Maximum length for date or time definitions 'Thursday 06th November 2003'const TInt KMaxDateAndTimeStamp = 30;// MACROS// None// DATA TYPES// None// FUNCTION PROTOTYPES// None// FORWARD DECLARATIONSclass CStifLogger;// CLASS DECLARATION// None// DESCRIPTION// CTestReport is a class that can generate different test reports.class CTestReport : public CBase { public: // Enumerations // TTestReportMode defines the mode of test report enum TTestReportMode { ETestReportBlank = 0x00000000, ETestReportSummary = 0x00000001, ETestReportEnvironment = 0x00000002, ETestReportCases = 0x00000004, ETestReportFull = ETestReportSummary | ETestReportEnvironment | ETestReportCases }; // TTestReportOutput defines the type of test report output enum TTestReportOutput { ETestReportNone = 0x00000000, ETestReportDebug = 0x00000001, ETestReportPlainText = 0x00000002, ETestReportHtml = 0x00000004, ETestReportAll = ETestReportDebug | ETestReportPlainText | ETestReportHtml }; public: // Structured classes /** * TTestReportHeader includes header information for test report. * */ struct THwInfo { TInt iManufacturer; TInt iMachineUid; TInt iModel; TInt iHwRev; TInt iCpu; TInt iCpuSpeed; TInt iLanguage; }; struct TSwInfo { TInt iSwRev; TInt iSwBuild; }; struct TMemoryInfo { TInt iRAM; TInt iRAMFree; }; class TTestHWInfo { public: // New functions TTestHWInfo(); public: // Data // HW Info THwInfo iHwInfo; // SW Info TSwInfo iSwInfo; // Memory Info TMemoryInfo iMemoryInfo; }; /** * TTestCaseSummary includes information for summary of test cases. */ class TTestCaseSummary { public: // New functions TTestCaseSummary(); public: // Data // Test Info TTestInfo iTestInfo; // Test Result TFullTestResult iFullTestResult; }; /** * TTestSummary includes information for test report summary. */ class TTestSummary { public: // New functions TTestSummary( const TName& aName ); public: // Data // Name (e.g. test module name ) const TName iName; // Count of passed test cases TInt iPassedCases; // Count of failed test cases TInt iFailedCases; // Count of crashed cases TInt iCrashedCases; // Count of timed out cases TInt iTimeoutCases; }; private: // Enumerations public: // Constructors and destructor /** * Two-phased constructor. */ static CTestReport* NewL( TTestReportSettings& aTestReportSettings, const TTestReportMode aReportMode ); /** * Destructor. */ ~CTestReport(); public: // New functions /** * Add test case result. */ void AddTestCaseResultL( const TTestInfo& aTestInfo, const TFullTestResult& aTestResult, const TInt aError ); /** * Generate result reports. */ void GenerateReportL(); /** * Update result reports. */ void UpdateReportSummaryL(); /** * Adds version of test module to RPointerArray */ void AddTestModuleVersion(TTestModuleVersionInfo& aVersion); public: // Functions from base classes protected: // New functions protected: // Functions from base classes private: /** * By default Symbian OS constructor is private. */ void ConstructL( TTestReportSettings& aTestReportSettings ); /** * Default C++ constructor. */ CTestReport( const TTestReportMode aReportMode ); /** * Write result file header. */ void WriteHeaderL(); /** * Write result file trailer. */ void WriteTrailerL(); /** * Write data to file. */ void WriteLineL( TRefByValue<const TDesC> aStr,... ); /** * Write delimiter line. */ void WriteDelimiterL( const TDesC& aDelimiter, TInt aCount ); /** * Adds needed tags to get valid xml file. */ void CloseXMLTagsInUnfinishedFileL(void); public: // Data protected: // Data private: // Data // Report file handles RFs iFs; RFile iFile; CStifLogger::TLoggerType iFormat; CStifLogger::TOutput iOutput; // Report Mode TTestReportMode iReportMode; // Report HW info TTestHWInfo iReportHWInfo; // Total summary TTestSummary* iTotalSummary; // Test summary array RPointerArray<TTestSummary> iTestSummaries; // Summary start position TInt iSummaryPos; // Versions of test modules position TInt iModulesVersionsPos; // Test modules versions RPointerArray<TTestModuleVersionInfo> iTestModulesVersionsInfo; // Will report be written in xml format TBool iXML; public: // Friend classes protected: // Friend classes private: // Friend classes };#endif // TEST_REPORT_H// End of File