resourcemgmt/hwresourcesmgr/test/multiclient/common/tc_log.h
changeset 0 4e1aa6a622a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/resourcemgmt/hwresourcesmgr/test/multiclient/common/tc_log.h	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,160 @@
+/*
+* Copyright (c) 2007-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:
+*
+*/
+
+
+ 
+#ifndef TC_LOG_H
+#define TC_LOG_H
+
+//Includes
+
+#include "tc_config.h"
+
+// This class implements writing results to log files
+class Log : public CBase
+{
+public:
+
+	// this enumeration defines priorities of printed lines.
+    enum Priority
+    {
+
+        ZERO = 0,
+        PASS,              // priority of passed line
+        NOTIFY,            // priority of notification
+		SCHEDULER,         // priority of scheduler line
+		MONITOR,           // priority of monitor
+		WARNING,           // priority of warning line
+        FAIL,              // priority of failed line
+        COMMENT,           // priority of comment line
+        SUMMARY,           // priority of summary line
+		SESSION_MARK,      // priority of session line
+		BEGIN_TESTCASE,    // priority of beginning test case line
+		END_TESTCASE,      // priority of ending test case line
+    };
+
+
+	Log();
+	virtual ~Log();
+
+	void OpenL(const TDesC &aFileName, TBool aBatch, TBool aEchoOn, TBool aTimestamp, Priority aPriorityFilter);
+
+
+	// print EPOC descriptors
+	virtual void Printf(Priority priority, TRefByValue<const TDesC> aFmt, ...);
+
+	// some TSY wrappers use this function jlof 13-12-2001
+	virtual void Printf(TRefByValue<const TDesC>, ...);
+
+	// write descriptor
+	virtual void Write(Priority priority, const TDesC& aStr);
+
+	// print C -strings
+	virtual void Printf(Priority priority, const char *fmt, ...);
+
+	// prints summary report
+	virtual void SummaryReport(const TDesC& aTestCaseName);
+
+	// used to implement pause stuff..
+	virtual void  RequestKeyPress();
+	virtual TBool ReceiveKeyPress();
+	virtual void  WaitKeyPress();
+
+	// multiple choice
+	virtual TInt MultipleChoice(TInt aMin, TInt aMax);
+
+	// set console title
+	virtual void SetTitle(const TDesC& aTitle);
+
+private:
+
+    CConsoleBase*  iConsole;
+	TRequestStatus iConsoleKeyRequest;
+
+	// if true, dont ask anything from user
+	TBool iBatch;
+
+	// if true write timestamps to log
+	TBool iWriteTimestamp;
+
+	// log message priority filter
+    Priority iPriorityFilter;
+
+	// TBuf for log functions
+	TBuf<MAX_LEN*2> iStr;
+
+	// output to file
+	TBuf8<MAX_LEN*2> iOut8;
+
+	// log output buffer
+	TBuf<MAX_LEN*2> iLog_bufout; 
+
+	// TUint8 buffer
+	TUint8 iUint8[MAX_LEN*2];
+
+    // current time to log
+	TTime iTime;
+
+
+	// file pointer for log file
+	void* iFile; // using void* insteand of file to avoid including stdio.h
+
+	// helper class used for counting some statistics
+	class Counter
+	{
+		const TDesC& iName;
+		TInt         iCount;
+		TInt         iTotal;
+	public:
+		Counter(const TDesC& aName):iName(aName),iCount(0),iTotal(0)
+		{
+		}
+		void operator++(int)
+		{
+			iCount++;
+			iTotal++;
+		}
+		void Summary(Log& aLog)
+		{
+			TBuf<MAX_LEN> buf;
+			buf.AppendFormat(_L("%S: %d"), &iName, iCount);
+			aLog.Write(Log::SUMMARY, buf);
+			iCount = 0;
+		}
+		void Total(Log& aLog)
+		{
+			TBuf<MAX_LEN> buf;
+			buf.AppendFormat(_L("%S: %d"), &iName, iTotal);
+			aLog.Write(Log::SUMMARY, buf);
+			iCount = 0;
+			iTotal = 0;
+		}
+	};
+	friend class Log::Counter; // counter should be friend of log..
+
+	// line counters...
+	Counter iPassed;
+	Counter iFailed;
+	Counter iWarnings;
+	Counter iComments;
+};
+
+
+
+
+#endif // TC_LOG_H
+