diff -r 2717213c588a -r 171fae344dd4 windowing/windowserver/tman/TMAN.CPP --- a/windowing/windowserver/tman/TMAN.CPP Tue Jun 22 15:21:29 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,490 +0,0 @@ -// Copyright (c) 1995-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: -// Manual window server tests -// Note: Wherever possible tests should be put into the TAUTO automatic test -// code test should only go here when manual operation is essential -// -// - -#include -#include "W32STD.H" -#include -#include "TMAN.H" - -#define LOG_TESTS - -class ErrorDialog : public CTDialog - { -public: - ErrorDialog(CTestBase *aTest); - void ButtonPressL(TInt aButton); -private: - CTestBase *iTest; - }; - -class TestWindowGroup : public CTWindowGroup - { -public: - TestWindowGroup(CTClient *aClient); - void ConstructL(); - void KeyL(const TKeyEvent &aKey,const TTime &aTime); - void KeyDownL(const TKeyEvent &aKey,const TTime &aTime); - void KeyUpL(const TKeyEvent &aKey,const TTime &aTime); - }; - -class CTManScheduler : public CActiveScheduler - { -public: - void SetClient(TestClient *aClient); - void Error(TInt anError) const; -private: - void doErrorL(TInt anError) const; -private: - TestClient *iClient; - }; - -typedef CTestBase *(*CTestBaseCreate)(); - -GLREF_C CTestBase *CreateScreenModeTest(); -GLREF_C CTestBase *CreateScaleTest(); -GLREF_C CTestBase *CreateTextTest(); -GLREF_C CTestBase *CreateDummyTest(); -GLREF_C CTestBase *CreateMultiConTest(); -GLREF_C CTestBase *CreateMultiCaptureKeyTest(); -GLREF_C CTestBase *CreateHotKeyTest(); -GLREF_C CTestBase *CreatePointerTest(); -GLREF_C CTestBase *CreatePointerCaptureTest(); -GLREF_C CTestBase *CreatePointerBufferTest(); -GLREF_C CTestBase *CreateModifiersChangedTest(); -GLREF_C CTestBase *CreatePointerKeyTest(); -GLREF_C CTestBase *CreatePasswordTest(); -GLREF_C CTestBase *CreatePointerCursorTest(); -GLREF_C CTestBase *CreateScreenModeTimes(); - -// Tests that have not been converted to tauto yet -CTestBaseCreate CreateTestClass[]={ - CreateScreenModeTimes, - CreatePointerCursorTest, - CreatePointerTest, //Mostly converted - CreatePointerKeyTest, //Mostly converted - CreateModifiersChangedTest, //Partially Conerted - CreatePointerBufferTest, - CreateTextTest, - CreateScaleTest, - CreateDummyTest, - }; - -LogWindow *LogWin; - -void TManPanic(TInt aPanic) - { - User::Panic(_L("Auto"),aPanic); - } - -// -// Log window, logs testing // -// - -LogWindow::LogWindow() : CTWin() - { - } - -void LogWindow::ConstructL(CTWinBase &parent) - { - CTWin::ConstructL(parent); - iTitleHeight=iFont->HeightInPixels()+4; - } - -void LogWindow::Draw() - { - iGc->SetPenColor(TRgb::Gray16(8)); - iGc->SetPenColor(TRgb::Gray16(0)); - DrawBorder(); - iGc->DrawLine(TPoint(0,iTitleHeight),TPoint(iSize.iWidth,iTitleHeight)); - iGc->DrawText(iTestTitle, TPoint((iSize.iWidth-iFont->TextWidthInPixels(iTestTitle))/2,iFont->AscentInPixels()+2)); - } - -void LogWindow::LogTest(TDesC &aTitle,TInt aNum) - { - iTestTitle.Format(TRefByValue(_L("Test %d,%S")),aNum,&aTitle); - iWin.Invalidate(); - Client()->iWs.Flush(); - } - -// -// Test window, simple window used to do test graphics in // -// -TestWindow::TestWindow() : CTWin() - { - } - -void TestWindow::SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc) - { - iBorderWin=new(ELeave) BorderWindow(); - iBorderWin->SetUpL(pos,size,parent,aGc); - CTWin::ConstructExtLD(*iBorderWin,TPoint(2,2),TSize(size.iWidth-4,size.iHeight-4)); - Activate(); - AssignGC(aGc); - } - -void TestWindow::Draw() - { - iGc->Clear(); - } - -// -BorderWindow::BorderWindow() : CTWin() - { - } - -void BorderWindow::ConstructL(CTWinBase &parent) - { - CTWin::ConstructL(parent); - } - -void BorderWindow::Draw() - { - iGc->SetBrushColor(TRgb::Gray16(0)); - iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); - iGc->SetPenStyle(CGraphicsContext::ENullPen); - iGc->DrawRect(TRect(Size())); - } - -// - -TestWindowGroup::TestWindowGroup(CTClient *aClient) : CTWindowGroup(aClient) - { - } - -void TestWindowGroup::ConstructL() - { - CTWindowGroup::ConstructL(); - GroupWin()->EnableScreenChangeEvents(); - } - -void TestWindowGroup::KeyDownL(const TKeyEvent &aKey,const TTime &aTime) - { - if (iCurWin) - iCurWin->KeyDownL(aKey,aTime); - } - -void TestWindowGroup::KeyUpL(const TKeyEvent &aKey,const TTime &aTime) - { - if (iCurWin) - iCurWin->KeyUpL(aKey,aTime); - } - -void TestWindowGroup::KeyL(const TKeyEvent &aKey,const TTime &aTime) - { - if (aKey.iModifiers&EModifierFunc) - { - switch(aKey.iCode) - { - case 'f': - ((TestClient *)Client())->Driver()->iTest->TriggerFail(); - break; - } - } - else if (iCurWin) - iCurWin->WinKeyL(aKey,aTime); - } - -// - -TestClient::TestClient() - { - } - -void TestClient::ConstructL() - { - CTClient::ConstructL(); - - iGroup=new(ELeave) TestWindowGroup(this); - iGroup->ConstructL(); - - TSize screenSize=iGroup->Size(); - TInt winWidth=(screenSize.iWidth/3)-10; - TInt winHeight=screenSize.iHeight-10; - LogWin=new(ELeave) LogWindow(); - LogWin->SetUpL(TPoint(5+winWidth*2,5),TSize(winWidth,winHeight),iGroup,*iGc); - iDriver=new(ELeave) TestDriver(this); - } - -TestClient::~TestClient() - { - delete iDriver; - } - -TestDriver *TestClient::Driver() - { - return(iDriver); - } - -// -// Error dialog // -// - -ErrorDialog::ErrorDialog(CTestBase *aTest) : CTDialog(), iTest(aTest) - {} - -void ErrorDialog::ButtonPressL(TInt aButton) - { - switch(aButton) - { - case 0: - { - CTestBase *test=iTest; - CTDialog::Delete(this); - if (test) - test->Driver()->DestroyTest(); - CActiveScheduler::Stop(); - User::Leave(0); // Signals RunL not to do another request - } - break; - case 1: - CTestBase *test=iTest; - CTDialog::Delete(this); - if (test) - { - test->Driver()->TestComplete(); - test->Driver()->DestroyTest(); - } - break; - } - } - -// -// TestDriver, drives the test code // -// - -TestDriver::TestDriver(TestClient *aClient) : CActive(-10), iClient(aClient) - { - CActiveScheduler::Add(this); - Request(); - } - -TestClient *TestDriver::Client() - { - return(iClient); - } - -TestDriver::~TestDriver() - { - Cancel(); - DestroyTest(); - } - -void TestDriver::DoCancel() - { - TRequestStatus *pStat= &iStatus; - RThread().RequestComplete(pStat,KErrCancel); - } - -void TestDriver::Request() - { - TRequestStatus *pStat= &iStatus; - RThread().RequestComplete(pStat,KErrNone); - SetActive(); - } - -void TestDriver::RunL() - { - iTest=(*CreateTestClass[iTestNum])(); - iTest->StartTest(iTestNum,this); - iTest->ConstructL(); - } - -void TestDriver::TestComplete() - { - iTestNum++; - if (iTestNum==sizeof(CreateTestClass)/sizeof(CreateTestClass[0])) - { - DisplayDialog(_L("Tests complete"),_L(""),_L("")); - CActiveScheduler::Stop(); - } - else - Request(); - } - -void TestDriver::DestroyTest() - { - delete iTest; - iTest=NULL; - } - -// CTestBase // - -CTestBase::CTestBase(const TDesC &aTitle) : CActive(-10) - { - CActiveScheduler::Add(this); - iTitle.Copy(aTitle); - } - -CTestBase::~CTestBase() - { - User::Free(iBuf1); - User::Free(iBuf2); - Cancel(); - } - -void CTestBase::DoCancel() - { - TRequestStatus *pStat= &iStatus; - RThread().RequestComplete(pStat,KErrCancel); - } - -void CTestBase::Request() - { - TRequestStatus *pStat= &iStatus; - RThread().RequestComplete(pStat,KErrNone); - SetActive(); - } - -void CTestBase::TriggerFail() - { - iFail=ETrue; - } - -TestClient *CTestBase::Client() - { - return(iDriver->Client()); - } - -void CTestBase::LogLeave(TInt aErr) - { -#if defined(LOG_TESTS) - TLogMessageText buf; - _LIT(KLeave,"MAN Left with error code %d in sub-test %d: "); - buf.AppendFormat(KLeave,aErr,iSubTestNum); - buf.Append(iSubTitle); - Client()->LogMessage(buf); -#else - aErr=KErrNone; //To stop a warning -#endif - } - -void CTestBase::RunL() - { - TInt ret=EInvalid; - TRAPD(err,ret=DoTestL()); - if (err!=KErrNone) - { - LogLeave(err); - if (err!=ETestFailed) - { - User::Leave(err); - } - } - else if (ret==EFinished) - { - iDriver->TestComplete(); - iDriver->DestroyTest(); - } - else if (ret==ENext) - Request(); - } - -void CTestBase::StartTest(TInt aNum, TestDriver *aDriver) - { - iDriver=aDriver; - iTestNum=aNum; - LogWin->LogTest(iTitle,aNum); -#if defined(LOG_TESTS) - TLogMessageText buf; - _LIT(ManNewTest,"MAN New Test %d: "); - buf.AppendFormat(ManNewTest,aNum); - buf.Append(iTitle); - Client()->LogMessage(buf); -#endif - Request(); - } - -void CTestBase::LogSubTest(const TDesC &aSubTitle,TInt aNum) - { - iSubTestNum=aNum; - iSubTitle=aSubTitle; -#if defined(LOG_TESTS) - TLogMessageText buf; - _LIT(ManSubTest,"MAN SubTest %d: "); - buf.AppendFormat(ManSubTest,iSubTestNum); - buf.Append(iSubTitle); - Client()->LogMessage(buf); -#endif - } - -void CTestBase::AbortL() - { - TestDriver *driver=iDriver; - iDriver->DestroyTest(); - driver->TestComplete(); - User::Leave(ETestFailed); - } - -void CTestBase::TestL(TInt aCondition) - { - if (!aCondition || iFail) - { - iFail=EFalse; - ErrorDialog *dialog=new ErrorDialog(this); - if (dialog) - { - dialog->SetTitle(_L("Test failed")); - dialog->SetNumButtons(2); - dialog->SetButtonText(0,_L("Abort all tests")); - dialog->SetButtonText(1,_L("Continue other tests")); - dialog->ConstructLD(*Client()->iGroup,*Client()->iGc); - dialog->Display(); - } - User::Leave(ETestFailed); - } - } - -void CTManScheduler::SetClient(TestClient *aClient) - { - iClient=aClient; - } - -void CTManScheduler::Error(TInt aError) const - { - TRAP_IGNORE(doErrorL(aError)); - CActiveScheduler::Stop(); - } - -void CTManScheduler::doErrorL(TInt aError) const - { - CTDialog *dialog=new(ELeave) CTDialog(); - if (dialog) - { - TWindowTitle title; - title.Format(TRefByValue(_L("Error %d")),aError); - dialog->SetTitle(title); - dialog->SetNumButtons(1); - dialog->SetButtonText(0,_L("Abort tests")); - dialog->ConstructLD(*iClient->iGroup,*iClient->iGc); - dialog->Display(); - } - } - -// - -GLDEF_C CTClient *CreateClientL() - { - return(new(ELeave) TestClient()); - } - - -GLDEF_C TInt E32Main() -{ -return(TestLibStartUp(CreateClientL)); -}