windowing/windowserver/tman/TKREPEAT.CPP
changeset 116 171fae344dd4
parent 103 2717213c588a
--- a/windowing/windowserver/tman/TKREPEAT.CPP	Tue Jun 22 15:21:29 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,348 +0,0 @@
-// Copyright (c) 1996-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:
-// Keyboard repeat test
-// 
-//
-
-#include <e32std.h>
-#include <e32svr.h>
-#include "W32STD.H"
-#include "../tlib/testbase.h"
-#include "TMAN.H"
-
-class CRKWindow;
-
-class TKRepeatTest : public CTestBase
-	{
-public:
-	TKRepeatTest();
-	~TKRepeatTest();
-	TestState DoTestL();
-	void ConstructL();
-	void TestKeyboardRepeatRateL(const TTimeIntervalMicroSeconds32 &aInitialTime, const TTimeIntervalMicroSeconds32 &aTime);
-	TBool CheckReportL();
-public:
-	TBool iAbort;
-private:
-	TTimeIntervalMicroSeconds32 iOldInitialTime;
-	TTimeIntervalMicroSeconds32 iOldTime;
-	CRKWindow *iWin;
-	TSize iWinSize;
-	TInt iState;
-	};
-
-class CRKWindow : public CTWin
-	{
-	enum TRKStates {
-		EStateWaitingForKeyDown,
-		EStateWaitingForKeyCode,
-		EStateWaitingForFirstRepeat,
-		EStateWaitingForNthRepeat,
-		EStateWaitingForKeyUp,
-		EStateInactive,
-		EStateError,
-		};
-public:
-	CRKWindow(TKRepeatTest *aTest);
-	void SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc);
-	void SetState(TRKStates aState);
-	void SetKeyboardRepeatRate(const TTimeIntervalMicroSeconds32 &aInitialTime, const TTimeIntervalMicroSeconds32 &aTime);
-	void WinKeyL(const TKeyEvent &,const TTime &);
-	void KeyUpL(const TKeyEvent &aKey,const TTime &aTime);
-	void KeyDownL(const TKeyEvent &aKey,const TTime &aTime);
-	void Draw();
-	TDesC& Report();
-	TBool CheckResults();
-protected:
-	TInt iConnIndex;
-	TKRepeatTest *iTest;
-	TRgb iBack;
-	TRKStates iState;
-	TInt iDownCode;
-	TInt iRepCount;
-	TTimeIntervalMicroSeconds32 iInitialRepeatSet;
-	TTimeIntervalMicroSeconds32 iRepeatSet;
-	TTime iPrevTime;
-	TTimeIntervalMicroSeconds32 iInitialGap;
-	TTimeIntervalMicroSeconds32 iTotalGap;
-	TTimeIntervalMicroSeconds32 iMinGap;
-	TTimeIntervalMicroSeconds32 iMaxGap;
-	TBuf<0x40> iReport;
-	};
-
-GLDEF_C CTestBase *CreateKRepeatTest()
-	{
-	return(new(ELeave) TKRepeatTest());
-	}
-
-//
-// CRKWindow, class //
-//
-
-CRKWindow::CRKWindow(TKRepeatTest *aTest) : CTWin(), iTest(aTest)
-	{
-	}
-
-void CRKWindow::SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc)
-	{
-	ConstructExtLD(*parent,pos,size);
-	iWin.SetBackgroundColor(TRgb::Gray256(230));
-	Activate();
-	AssignGC(aGc);
-	}
-
-void CRKWindow::Draw()
-	{
-	iGc->Clear();
-	switch(iState)
-		{
-		case EStateWaitingForKeyDown:
-			iGc->DrawText(_L("Press and hold the space bar"), TPoint(10,20));
-			break;
-		case EStateWaitingForFirstRepeat:
-		case EStateWaitingForNthRepeat:
-			{
-			TBuf<0x40> buf;
-			buf.Format(TRefByValue<const TDesC>(_L("Keep space bar down (%d repeats so far)")),iRepCount);
-			iGc->DrawText(buf, TPoint(10,20));
-			}
-			break;
-		case EStateWaitingForKeyUp:
-			iGc->DrawText(_L("Release space bar"), TPoint(10,20));
-		default:
-			break;
-		}
-	}
-
-void CRKWindow::SetState(TRKStates aState)
-	{
-	iState=aState;
-	DrawNow();
-	}
-
-TBool CRKWindow::CheckResults()
-	{
-//
-// Checks repeat results, first convert everything to 10th's as that what is actually used 
-// for the timer in the window server.
-//
-// Return ETrue if the inacuracy in the average time is greater than 1/10th either way
-// Allow initial 2/10ths either
-// Allow min 2/10ths below
-// Allow max 2/10ths above
-//
-	if (iState!=EStateInactive)
-		return(ETrue);
-	TInt initial=iInitialGap.Int()/100000;
-	TInt initialX=iInitialRepeatSet.Int()/100000;
-	if (initialX==0)
-		initialX=1;
-	TInt average=(iTotalGap.Int()/100000)/(iRepCount-1);
-	TInt repeatX=iRepeatSet.Int()/100000;
-	if (repeatX==0)
-		repeatX=1;
-	TInt min=iMinGap.Int()/100000;
-	TInt max=iMaxGap.Int()/100000;
-	if (average>(repeatX+1) || average<(repeatX-1))
-		return(ETrue);
-	if (initial>(initialX+2) || initial<(initialX-2))
-		return(ETrue);
-	if (min>(repeatX+1) || min<(repeatX-2))
-		return(ETrue);
-	if (max>(repeatX+3) || max<repeatX)
-		return(ETrue);
-	return(EFalse);
-	}
-
-TDesC& CRKWindow::Report()
-	{
-	if (iState!=EStateInactive)
-		{
-		iReport.Format(_L("Error, test not completed"));
-		}
-	else
-		{
-		TInt initial=iInitialGap.Int()/10000;
-		TInt initialX=iInitialRepeatSet.Int()/10000;
-		TInt average=(iTotalGap.Int()/10000/(iRepCount-1));
-		TInt repeatX=iRepeatSet.Int()/10000;
-		TInt min=iMinGap.Int()/10000;
-		TInt max=iMaxGap.Int()/10000;
-		iReport.Format(TRefByValue<const TDesC>(_L("Initial=%d [%d], Av=%d [%d], Min=%d, Max=%d")),initial,initialX,average,repeatX,min,max);
-		}
-	return(iReport);
-	}
-
-void CRKWindow::KeyDownL(const TKeyEvent &aKey,const TTime &)
-	{
-	switch(iState)
-		{
-		case EStateWaitingForKeyDown:
-			SetState(EStateWaitingForKeyCode);
-			iDownCode=aKey.iScanCode;
-			break;
-		default:;
-		}
-	}
-
-void CRKWindow::KeyUpL(const TKeyEvent &aKey,const TTime &)
-	{
-	if (aKey.iScanCode==iDownCode)
-		{
-		switch(iState)
-			{
-			case EStateWaitingForKeyUp:
-				SetState(EStateInactive);
-				break;
-			default:
-				SetState(EStateError);
-				break;
-			}
-		CActiveScheduler::Stop();
-		}
-	}
-
-void CRKWindow::WinKeyL(const TKeyEvent &aKey,const TTime &aTime)
-	{
-	if (aKey.iCode==EKeyEscape)
-		{
-		CActiveScheduler::Stop();
-		iTest->iAbort=ETrue;
-		}
-	if (aKey.iCode==32)
-		{
-		switch(iState)
-			{
-			case EStateWaitingForKeyCode:
-				SetState(EStateWaitingForFirstRepeat);
-				iPrevTime=aTime;
-				break;
-			case EStateWaitingForFirstRepeat:
-				iRepCount=1;
-				iInitialGap = I64LOW(aTime.MicroSecondsFrom(iPrevTime).Int64());
-				SetState(EStateWaitingForNthRepeat);
-				break;
-			case EStateWaitingForNthRepeat:
-				if (iRepCount==5)
-					SetState(EStateWaitingForKeyUp);
-				else
-					{
-					TTimeIntervalMicroSeconds32 gap(I64LOW(aTime.MicroSecondsFrom(iPrevTime).Int64()));
-					if (gap<iMinGap)
-						iMinGap=gap;
-					if (gap>iMaxGap)
-						iMaxGap=gap;
-					iTotalGap=iTotalGap.Int()+gap.Int();	// Horrible way to do a +=
-					iRepCount++;
-					SetState(EStateWaitingForNthRepeat);
-					}
-			case EStateWaitingForKeyUp: 	// Do nothing here
-				break;
-			default:
-				iTest->TestL(EFalse);
-			}
-		iPrevTime=aTime;
-		}
-	}
-
-void CRKWindow::SetKeyboardRepeatRate(const TTimeIntervalMicroSeconds32 &aInitialTime, const TTimeIntervalMicroSeconds32 &aTime)
-	{
-	iInitialRepeatSet=aInitialTime;
-	iRepeatSet=aTime;
-	iMinGap=TTimeIntervalMicroSeconds32(100000000);	// Any very big number will do
-	iMaxGap=TTimeIntervalMicroSeconds32(0);
-	iTotalGap=TTimeIntervalMicroSeconds32(0);
-	SetState(EStateWaitingForKeyDown);
-	Client()->iWs.Flush();
-	}
-
-//
-
-TKRepeatTest::TKRepeatTest() : CTestBase(_L("KRepeat"))
-	{}
-
-TKRepeatTest::~TKRepeatTest()
-	{
-	CTWin::Delete(iWin);
-	Client()->iWs.SetKeyboardRepeatRate(iOldInitialTime, iOldTime);
-	}
-
-void TKRepeatTest::ConstructL()
-	{
-	iWin=new(ELeave) CRKWindow(this);
-	TSize screenSize=Client()->iGroup->Size();
-	iWin->SetUpL(TPoint(5,5),TSize(screenSize.iWidth/2,screenSize.iHeight-10),Client()->iGroup,*Client()->iGc);
-	Client()->iGroup->SetCurrentWindow(iWin);
-	Client()->iWs.GetKeyboardRepeatRate(iOldInitialTime, iOldTime);
-	}
-
-TInt TKRepeatTest::CheckReportL()
-	{
-	if (iWin->CheckResults())
-		{
-		CTDialog *dialog=new(ELeave) CTDialog();
-		dialog->SetTitle(_L("Keyboard repeat innacuracies"));
-		dialog->SetLine1(iWin->Report());
-		dialog->SetNumButtons(2);
-		dialog->SetButtonText(0,_L("Okay"));
-		dialog->SetButtonText(1,_L("Retest"));
-		dialog->SetButtonText(2,_L("Fail"));
-		dialog->ConstructLD(*Client()->iGroup,*Client()->iGc);
-		switch(dialog->Display())
-			{
-			case 0:
-				break;
-			case 1:
-				return(ETrue);	// Redo test
-			case 2:
-				TestL(EFalse);
-				break;
-			}
-		}
-	return(EFalse);
-	}
-
-void TKRepeatTest::TestKeyboardRepeatRateL(const TTimeIntervalMicroSeconds32 &aInitialTime, const TTimeIntervalMicroSeconds32 &aTime)
-	{
-	do
-		{
-		Client()->iWs.SetKeyboardRepeatRate(aInitialTime, aTime);
-		iWin->SetKeyboardRepeatRate(aInitialTime, aTime);
-		CActiveScheduler::Start();
-		if (iAbort)
-			AbortL();
-		} while(CheckReportL());
-	}
-
-TestState TKRepeatTest::DoTestL()
-	{
-	switch(iState)
-		{
-		case 0:
-			LogSubTest(_L("Keyboard Repeat"),1);
-			TestKeyboardRepeatRateL(TTimeIntervalMicroSeconds32(1000000), TTimeIntervalMicroSeconds32(500000));
-			LogSubTest(_L("Keyboard Repeat"),2);
-			TestKeyboardRepeatRateL(TTimeIntervalMicroSeconds32(200000), TTimeIntervalMicroSeconds32(100000));
-			LogSubTest(_L("Keyboard Repeat"),3);
-			TestKeyboardRepeatRateL(TTimeIntervalMicroSeconds32(0), TTimeIntervalMicroSeconds32(100000));
-			LogSubTest(_L("Keyboard Repeat"),4);
-			TestKeyboardRepeatRateL(TTimeIntervalMicroSeconds32(100000), TTimeIntervalMicroSeconds32(100000));
-			iState++;
-			break;
-		default:
-			return(EFinished);
-		}
-	return(ENext);
-	}
-