sl@0: // Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // Header for window server auto test code sl@0: // sl@0: // sl@0: sl@0: #include sl@0: #include sl@0: #include "W32STD.H" sl@0: #include "../tlib/testbase.h" sl@0: sl@0: class TestClient; sl@0: sl@0: enum TestState sl@0: { sl@0: EInvalid, sl@0: ENext, sl@0: EContinue, sl@0: EFinished sl@0: }; sl@0: sl@0: enum TAutoPanics sl@0: { sl@0: ETManPanicPcFailed, sl@0: }; sl@0: sl@0: enum TAutoLeaves sl@0: { sl@0: ETestFailed=1, sl@0: }; sl@0: sl@0: class LogWindow : public CTWin sl@0: { sl@0: public: sl@0: LogWindow(); sl@0: void ConstructL(CTWinBase &parent); sl@0: void Draw(); sl@0: void LogTest(TDesC &aTitle,TInt aNum); sl@0: private: sl@0: TBuf<0x40> iTestTitle; sl@0: TInt iTitleHeight; sl@0: }; sl@0: sl@0: class CTestBase; sl@0: sl@0: class BorderWindow : public CTWin sl@0: { sl@0: public: sl@0: BorderWindow(); sl@0: void ConstructL(CTWinBase &parent); sl@0: void Draw(); sl@0: }; sl@0: sl@0: class TestWindow : public CTWin sl@0: { sl@0: public: sl@0: TestWindow(); sl@0: void Draw(); sl@0: void SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc); sl@0: private: sl@0: BorderWindow *iBorderWin; sl@0: friend class CTestBase; sl@0: }; sl@0: sl@0: class TestDriver : public CActive sl@0: { sl@0: public: sl@0: TestDriver(TestClient *aClient); sl@0: ~TestDriver(); sl@0: void DoCancel(); sl@0: void RunL(); sl@0: void Request(); sl@0: void TestComplete(); sl@0: void DestroyTest(); sl@0: TestClient *Client(); sl@0: public: sl@0: CTestBase *iTest; sl@0: private: sl@0: TInt iTestNum; sl@0: TestClient *iClient; sl@0: }; sl@0: sl@0: class CTestBase : public CActive sl@0: { sl@0: public: sl@0: CTestBase(const TDesC &aTitle); sl@0: ~CTestBase(); sl@0: void DoCancel(); sl@0: void RunL(); sl@0: void Request(); sl@0: void TestL(TInt aCondition); sl@0: void StartTest(TInt aNum, TestDriver *aDriver); sl@0: void LogSubTest(const TDesC &aTitle,TInt aNum); sl@0: void TestPanic(TThreadFunction aFunction, TAny *aPtr, TInt aExitReason, const TDesC &aCategory); sl@0: void TestWsPanic(TThreadFunction aFunction, TAny *aPtr, TInt aExitReason); sl@0: void TestWsPanic(TThreadFunction aFunction, TInt aInt, TInt aExitReason); sl@0: void TriggerFail(); sl@0: void LogLeave(TInt aErr); sl@0: void CheckRect(CTWin *aWin1,CTWin *aWin2,const TRect &aRect); sl@0: void CompareWindows(TRect &aRect); sl@0: void CompareWindows(); sl@0: void CheckBorder(); sl@0: void DrawTestBackground(TBool aInvertColours); sl@0: inline TestDriver *Driver(); sl@0: virtual TestState DoTestL()=0; sl@0: virtual void ConstructL()=0; sl@0: TestClient *Client(); sl@0: void AbortL(); sl@0: protected: sl@0: TestDriver *iDriver; sl@0: TAny *iBuf1; sl@0: TAny *iBuf2; sl@0: private: sl@0: TInt iTestNum; sl@0: TInt iSubTestNum; sl@0: TBuf<0x40> iTitle; sl@0: TBuf<0x40> iSubTitle; sl@0: TBool iFail; // Used to trigger failures to test test code. sl@0: }; sl@0: sl@0: class TestClient : public CTClient sl@0: { sl@0: public: sl@0: TestClient(); sl@0: ~TestClient(); sl@0: void ConstructL(); sl@0: void KeyL(const TKeyEvent &aKey,const TTime &aTime); sl@0: void Shutdown(); sl@0: TestDriver *Driver(); sl@0: private: sl@0: TestDriver *iDriver; sl@0: }; sl@0: sl@0: GLREF_D CWindowGc *TheGc; sl@0: GLREF_C void TManPanic(TInt aPanic); sl@0: sl@0: inline TestDriver *CTestBase::Driver() sl@0: {return(iDriver);}