windowing/windowserver/test/t_stress/inc/utils.h
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/test/t_stress/inc/utils.h	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,146 @@
+// Copyright (c) 2008-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:
+//
+
+/**
+ @file
+ @test
+ @internalComponent
+*/
+
+#ifndef UTILS_H
+#define UTILS_H
+
+#include <e32math.h>
+#include <w32std.h>
+
+/*******************************************************************************
+ This is a wrapper round the horrific Math::Rand interface
+ *******************************************************************************/
+
+const TInt KPosLimit = 350;
+
+_LIT(KLogFileName, "logging.log"); //to be used to replay the same testrun
+_LIT(KAnimDllName, "a0005924.dll");
+
+class CTestExecWatchCat;
+
+class CExecutionContext : public CBase
+	{
+	friend class CTestExecWatchCat;
+	
+public:
+	class CLogMediator : public CBase
+		{
+	public:
+		TInt PlaybackInt ();
+		void RecordInt (TInt aIntToBeRecorded);
+		static CLogMediator* NewLC (CExecutionContext& aExecutionContext, RFs& aFs,	const TDesC& aFileName);
+		~CLogMediator ();
+	
+	private:
+		CLogMediator (CExecutionContext& aExecutionContext);
+		void ConstructL (RFs& aFs, const TDesC& aFileName);
+	
+	private:
+		RFile iLog;
+		CExecutionContext& iExecutionContext;
+		TInt64 iEntryNo;
+		TBool iStalled;
+		};
+	
+	enum TExecutionMode
+		{
+		ECtxRandom,
+		ECtxRandomAndRecord,
+		ECtxPlayback
+		};
+
+	static CExecutionContext* NewL (TExecutionMode aExecutionMode, CTestExecWatchCat& aWatchCat);
+	TExecutionMode ContextMode ();
+	~CExecutionContext ();
+	void MediatorDestroyed (CLogMediator* aMediator);
+	void MediatorEmptied (CLogMediator* aMediator);
+
+private:
+	CExecutionContext (TExecutionMode aExecutionMode, CTestExecWatchCat& aWatchCat);
+	void ConstructL ();
+	CLogMediator& CreateLogMediatorL (const TDesC& aLogName);
+
+private:
+	RFs iFs;
+	RPointerArray<CLogMediator> iMediators;
+	CTestExecWatchCat& iWatchCat;
+	TExecutionMode iContextMode;
+	};
+
+class CTestExecWatchCat : public CBase
+	{
+	friend class CExecutionContext;
+	
+public:
+	static CTestExecWatchCat* NewL (CExecutionContext::TExecutionMode aExecutionMode);
+	void SetLoggingPathL(const TDesC& aPath);
+
+private:
+	CTestExecWatchCat ( );
+	~CTestExecWatchCat ( );
+
+	void ConstructL (CExecutionContext::TExecutionMode aExecutionMode );
+	void ExecutionContextRunOut (CExecutionContext* aContext );
+
+private:
+	CExecutionContext* iExecutionContext;
+	};
+
+class TRnd
+	{
+public:
+	static TInt rnd ( TInt x = 0 );
+	static TInt64 Seed();
+	static void SetSeed(TInt64 aSeed);
+	static void SetLogMediator(CExecutionContext::CLogMediator* aMediator);
+	static void SetExecutionContext(CExecutionContext* aExecutionContext);
+private:
+	static TInt GenRand (TInt x );
+
+private:
+	static CExecutionContext::CLogMediator* iMediator;
+	static CExecutionContext* iExecutionContext;
+	static TInt64 iSeed;
+	
+	friend class CTestExecWatchCat;
+	};
+
+class TTickUtils
+	{
+public:
+	static TUint32 CalcTickDelta (TUint32 tick1, TUint32 tick2 );
+
+	};
+
+/*******************************************************************************
+ This is a small helper function for drawing regions
+ *******************************************************************************/
+static void DrawRegion (const TRegion& aRegion, CGraphicsContext& aGc)
+	{
+	const TRect * rect = aRegion.RectangleList ();
+	for (TInt r = 0; r < aRegion.Count (); ++r)
+		{
+		aGc.DrawRect (*rect);
+		++rect;
+		}
+	}
+
+#endif // UTILS_H