windowing/windowserver/test/FadeCount.cpp
changeset 0 5d03bc08d59c
child 110 7f25ef56562d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/test/FadeCount.cpp	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,291 @@
+// 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:
+// TFADECOUNT.CPP
+// Testing counted or absolute fade
+// 
+//
+
+#include <e32std.h>
+#include "W32STD.H"
+#include <e32svr.h>
+#include "../tlib/testbase.h"
+
+const TInt ETestFailed = 1;
+
+class CFadeCountClient;
+
+class CFadeCountWindow : public CTTitledWindow
+	{
+public:
+	CFadeCountWindow(CFadeCountClient* aClient);
+	~CFadeCountWindow();
+	void ConstructL(CTWinBase &aParent);
+	void Draw();
+	void SetWindowSize();
+	void WinKeyL(const TKeyEvent &aKey,const TTime& aTime);
+public:
+	CFadeCountClient* iClient;
+	TBool iAbsoluteFading;
+	TBool iPass;
+	TBool iComplete;
+	};
+
+
+class CFadeCountClient : public CTClient
+	{
+public:
+	CFadeCountClient();
+	~CFadeCountClient();
+	void ConstructL();
+	void KeyL(const TKeyEvent &aKey,const TTime &aTime);
+	void Exit();
+	void TestL();
+	void TestL(TInt aCondition);
+	void CreateTestWindowsL(CTWinBase &aParent);
+	TBool IsAbsoluteFadingOnL();
+	void TestFadeL(CTWin* aWin, TBool aAbs, TBool aCounted);
+private:
+	TInt iNum;
+	CFadeCountWindow *iFadeCountWin;
+	CTWin* iWin1;
+	CTWin* iWin2;
+	TBool iAbsoluteFading;
+	};
+
+
+//
+// Individual window sub-classes
+//
+
+CFadeCountWindow::CFadeCountWindow(CFadeCountClient* aClient) 
+: CTTitledWindow(), iClient(aClient)
+	{
+	}
+
+CFadeCountWindow::~CFadeCountWindow()
+	{
+	}
+
+void CFadeCountWindow::ConstructL(CTWinBase &aParent)
+	{
+	CTTitledWindow::ConstructL(aParent);
+	SetWindowSize();
+	TSize screenSize=Client()->iScreen->SizeInPixels();
+	TSize dif(screenSize-Size());
+	iWin.SetPosition(TPoint(dif.iWidth/2,dif.iHeight/2));
+
+	Invalidate();
+	}
+
+void CFadeCountWindow::Draw()
+	{
+	CTTitledWindow::Draw();
+	TInt lineSpacing = iFont->AscentInPixels()+3;
+	TPoint pos(3,iTitleHeight+lineSpacing);
+	iGc->DrawText(_L("Fade count tests"),pos);
+
+	pos.iY += lineSpacing;
+	if (iAbsoluteFading)
+		iGc->DrawText(_L("ABSOLUTEFADING is ON"),pos);
+	else
+		iGc->DrawText(_L("ABSOLUTEFADING is OFF"),pos);
+
+	if (iComplete)
+		{
+		pos.iY += lineSpacing;
+		if (iPass)
+			iGc->DrawText(_L("Tests have passed"),pos);
+		else
+			iGc->DrawText(_L("Tests have failed"),pos);
+
+		pos.iY += lineSpacing;
+		iGc->DrawText(_L("Press any key to exit"),pos);
+		}
+	}
+
+void CFadeCountWindow::SetWindowSize()
+	{
+	TSize size(400,200);
+	SetSize(size);
+	}
+
+void CFadeCountWindow::WinKeyL(const TKeyEvent &/*aKey*/,const TTime& )
+	{
+	iClient->Exit();
+	}
+
+
+//
+// End of CFadeCountWindow class //
+//
+
+
+CFadeCountClient::CFadeCountClient()
+	{
+	}
+
+CFadeCountClient::~CFadeCountClient()
+	{
+	delete iWin2;
+	delete iWin1;
+	delete iFadeCountWin;
+	}
+
+void CFadeCountClient::ConstructL()
+	{
+	CTClient::ConstructL();
+
+	iGroup=new(ELeave) CTWindowGroup(this);
+	iGroup->ConstructL();
+
+	CreateTestWindowsL(*iGroup);
+
+	iFadeCountWin=new(ELeave) CFadeCountWindow(this);
+	iFadeCountWin->iAbsoluteFading = iAbsoluteFading;
+	iFadeCountWin->ConstructL(*iGroup);
+	iFadeCountWin->Activate();
+	iFadeCountWin->AssignGC(*iGc);
+	iGroup->SetCurrentWindow(iGroup->Child());
+
+	TRAP_IGNORE(TestL());
+	iFadeCountWin->iComplete = ETrue;
+	}
+
+void CFadeCountClient::Exit()
+	{
+	CActiveScheduler::Stop();
+	}
+
+void CFadeCountClient::TestL()
+	{
+	// start condition - after absolute fade has been established
+	TestFadeL(iWin1, EFalse, EFalse);
+	TestFadeL(iWin2, EFalse, EFalse);
+	TestFadeL(iFadeCountWin, EFalse, EFalse);
+	
+	// System fade and repeated fade
+	// positive fade
+	TInt ii;
+	const TInt KFadeRepeat = 4;
+	for (ii=0; ii<KFadeRepeat; ii++)
+		{
+		iWs.SetSystemFaded(ETrue);
+		TestFadeL(iWin1, ETrue, ETrue);
+		TestFadeL(iWin2, ETrue, ETrue);
+		TestFadeL(iFadeCountWin, ETrue, ETrue);
+		}
+
+	for (ii=KFadeRepeat-1; ii>=0; ii--)
+		{
+		iWs.SetSystemFaded(EFalse);
+		TestFadeL(iWin1, EFalse, ii);
+		TestFadeL(iWin2, EFalse, ii);
+		TestFadeL(iFadeCountWin, EFalse, ii);
+		}
+
+	// negative fade is not counted
+	for (ii=0; ii<KFadeRepeat-1; ii++)
+		{
+		iWs.SetSystemFaded(EFalse);
+		TestFadeL(iWin1, EFalse, EFalse);
+		TestFadeL(iWin2, EFalse, EFalse);
+		TestFadeL(iFadeCountWin, EFalse, EFalse);
+		}
+
+	iWs.SetSystemFaded(ETrue);
+	TestFadeL(iWin1, ETrue, ETrue);
+	TestFadeL(iWin2, ETrue, ETrue);
+	TestFadeL(iFadeCountWin, ETrue, ETrue);
+
+	iWs.SetSystemFaded(EFalse);
+	TestFadeL(iWin1, EFalse, EFalse);
+	TestFadeL(iWin2, EFalse, EFalse);
+	TestFadeL(iFadeCountWin, EFalse, EFalse);
+
+	// child fading
+	// nested
+	iWin2->WinTreeNode()->SetFaded(ETrue, RWindowTreeNode::EFadeIncludeChildren);
+	TestFadeL(iWin1, EFalse, EFalse);
+	TestFadeL(iWin2, ETrue, ETrue);
+	iWin1->WinTreeNode()->SetFaded(ETrue, RWindowTreeNode::EFadeIncludeChildren);
+	TestFadeL(iWin1, ETrue, ETrue);
+	TestFadeL(iWin2, ETrue, ETrue);
+	iWin1->WinTreeNode()->SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren);
+	TestFadeL(iWin1, EFalse, EFalse);
+	TestFadeL(iWin2, EFalse, ETrue);
+	iWin2->WinTreeNode()->SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren);
+	TestFadeL(iWin1, EFalse, EFalse);
+	TestFadeL(iWin2, EFalse, EFalse);
+	
+	// interlaced
+	iWin2->WinTreeNode()->SetFaded(ETrue, RWindowTreeNode::EFadeIncludeChildren);
+	TestFadeL(iWin1, EFalse, EFalse);
+	TestFadeL(iWin2, ETrue, ETrue);
+	iWin1->WinTreeNode()->SetFaded(ETrue, RWindowTreeNode::EFadeIncludeChildren);
+	TestFadeL(iWin1, ETrue, ETrue);
+	TestFadeL(iWin2, ETrue, ETrue);
+	iWin2->WinTreeNode()->SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren);
+	TestFadeL(iWin1, ETrue, ETrue);
+	TestFadeL(iWin2, EFalse, ETrue);
+	iWin1->WinTreeNode()->SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren);
+	TestFadeL(iWin1, EFalse, EFalse);
+	TestFadeL(iWin2, EFalse, EFalse);
+
+	iFadeCountWin->iPass = ETrue;
+	}
+
+void CFadeCountClient::CreateTestWindowsL(CTWinBase &aParent)
+	{
+	iWin1 = new(ELeave) CTWin();
+	iWin1->ConstructL(aParent);
+	iWin1->SetSize(TSize(20,20));
+
+	iWin2 = new(ELeave) CTWin();
+	iWin2->ConstructL(*iWin1);
+	iWin2->SetSize(TSize(10,10));
+
+	iAbsoluteFading = IsAbsoluteFadingOnL();
+	}
+
+TBool CFadeCountClient::IsAbsoluteFadingOnL()
+	{
+	iWin1->WinTreeNode()->SetFaded(ETrue, RWindowTreeNode::EFadeWindowOnly);
+	iWin1->WinTreeNode()->SetFaded(ETrue, RWindowTreeNode::EFadeWindowOnly);
+	iWin1->WinTreeNode()->SetFaded(EFalse, RWindowTreeNode::EFadeWindowOnly);
+	TBool absoluteFading = !iWin1->BaseWin()->IsFaded();
+	iWin1->WinTreeNode()->SetFaded(EFalse, RWindowTreeNode::EFadeWindowOnly);
+	return absoluteFading;
+	}
+
+void CFadeCountClient::TestL(TInt aCondition)
+	{
+	if (!aCondition)
+		User::Leave(ETestFailed);
+	}
+
+void CFadeCountClient::TestFadeL(CTWin* aWin, TBool aAbs, TBool aCounted)
+	{
+	TestL(!aWin->BaseWin()->IsFaded() == !(iAbsoluteFading ? aAbs : aCounted));
+	}
+
+
+GLDEF_C CTClient *CreateClientL()
+	{
+	return(new(ELeave) CFadeCountClient());
+	}
+	
+GLDEF_C TInt E32Main()
+	{
+	return(TestLibStartUp(CreateClientL));
+	}