lafagnosticuifoundation/animation/tef/TBasic.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lafagnosticuifoundation/animation/tef/TBasic.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,409 @@
+// Copyright (c) 2005-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
+ @internalComponent - Internal Symbian test code  
+*/
+
+#include "TBasic.h"
+#include "AnimationConfig.h"
+#include "AnimationTestServer.h"
+
+_LIT(KSymBallFile, "Z:\\Private\\10204F5B\\symball.gif");
+_LIT(KSymWaveFile, "Z:\\Private\\10204F5B\\symwave.gif");
+
+//
+// Windows:
+//
+CBasicAnimationWindow::CBasicAnimationWindow(RWsSession& aWsSession, CTestWindowGroup& aGroup, CWindowGc& aGc) : CTestWindow(aWsSession, aGroup, aGc)
+	{
+	}
+
+void CBasicAnimationWindow::SetAnimation(CBasicAnimation* aAnimation)
+	{
+	iAnimation = aAnimation;
+	}
+	
+void CBasicAnimationWindow::DrawL()
+	{
+	if(iAnimation)
+		iAnimation->Draw(iGc);
+	}
+	
+CSpriteAnimationWindow::CSpriteAnimationWindow(RWsSession& aWsSession, CTestWindowGroup& aGroup, CWindowGc& aGc) : CTestWindow(aWsSession, aGroup, aGc)
+	{
+	}
+
+//
+// The test:
+//
+CBasic::CBasic()
+	{
+	SetTestStepName(KBasicStep);
+	}
+	
+CBasic::~CBasic()
+	{
+	delete iAnimationGroup;
+	delete iBasicAnimation;
+	delete iSpriteAnimation;
+	delete iBasicWin;
+	delete iSpriteWin;
+	}
+
+void CBasic::InitialiseL()
+	{
+	CAnimationTestStep::InitialiseL();
+	
+	ANIM_INFO1(_L("Begin test BASIC"));
+
+	TInt winborder = 2;
+	iWinSize = Screen()->SizeInPixels();
+	iWinSize.iWidth /= 2;
+	iWinSize.iHeight /= 2;
+	iBasicWinPosition = TPoint(iWinSize.iWidth + winborder, winborder);
+	iSpriteWinPosition = TPoint(iWinSize.iWidth + winborder, iWinSize.iHeight + winborder);
+	iWinSize.iWidth -= winborder * 2;
+	iWinSize.iHeight -= winborder * 2;
+
+	iBasicWin = new (ELeave) CBasicAnimationWindow(Ws(), *GroupWin(), *Gc());
+	iBasicWin->Window()->SetRequiredDisplayMode(EColor256);
+	iBasicWin->Window()->SetExtent(iBasicWinPosition, iWinSize);
+	iBasicWin->Window()->SetBackgroundColor(iBackgroundColor1);
+	iBasicWin->Window()->SetVisible(ETrue);
+	iBasicWin->Window()->Activate();
+
+	iSpriteWin = new (ELeave) CSpriteAnimationWindow(Ws(), *GroupWin(), *Gc());
+	iSpriteWin->Window()->SetRequiredDisplayMode(EColor256);
+	iSpriteWin->Window()->SetExtent(iSpriteWinPosition, iWinSize);
+	iSpriteWin->Window()->SetBackgroundColor(iBackgroundColor1);
+	iSpriteWin->Window()->SetVisible(ETrue);
+	iSpriteWin->Window()->Activate();
+
+	CICLAnimationDataProvider* dataProvider;
+	dataProvider=new(ELeave)CICLAnimationDataProvider;
+	CleanupStack::PushL(dataProvider);
+	dataProvider->SetFileL(iFs, KSymBallFile());
+	CleanupStack::Pop(dataProvider);
+	iBasicAnimation = CBasicAnimation::NewL(dataProvider, TPoint(0,0), Ws(), *iBasicWin->Window(), this);
+	iBasicWin->SetAnimation(iBasicAnimation);
+
+	dataProvider=new(ELeave)CICLAnimationDataProvider;
+	CleanupStack::PushL(dataProvider);
+	dataProvider->SetFileL(iFs, KSymBallFile());
+	CleanupStack::Pop(dataProvider);
+	iSpriteAnimation = CSpriteAnimation::NewL(dataProvider, TPoint(0,0), Ws(), *iSpriteWin->Window(), this);
+
+	iAnimationGroup = CAnimationGroup::NewL();
+	iAnimationGroup->Animations().Append(iBasicAnimation);
+	iAnimationGroup->Animations().Append(iSpriteAnimation);
+	}
+
+// Although this function doesn't leave, it is the intention that it will do
+// in future, since it is supposed to be verifying the output:
+void CBasic::StartStopL(const TAnimationConfig& aConfig)
+	{
+	iAnimationGroup->Start(aConfig);
+	Wait(5000000);
+	iAnimationGroup->Stop();
+	Wait(500000);
+	}
+/**
+	@SYMTestCaseID UIF-animation-TBasic-TestLoopsForeverL-0001
+*/
+/**
+	@SYMTestCaseID UIF-animation-TBasic-TestLoopsForeverL-0002
+
+	@SYMPREQ 269
+	
+	@SYMTestCaseDesc 
+	This runs an animation loop forever (actual run time 5 seconds).
+
+	@SYMTestStatus Implemented
+
+	@SYMTestPriority High
+
+	@SYMTestActions 
+	The animation must be initialised, and this test is called with an animation
+	group with basic and sprite animations.
+
+	@SYMTestExpectedResults Animation displayed.
+
+*/
+void CBasic::TestLoopsForeverL()
+	{
+	TAnimationConfig config;
+	config.iFlags = TAnimationConfig::ELoop;
+	config.iData = -1;
+
+	StartStopL(config);
+	}
+	
+/**
+	@SYMTestCaseID UIF-animation-TBasic-TestLoopsNumberedL
+
+	@SYMTestCaseDesc 
+	This runs an animation loop twice.
+
+	@SYMPREQ 269
+
+	@SYMTestStatus Implemented
+
+	@SYMTestPriority High
+
+	@SYMTestActions 
+	The animation must be initialised, and this test is called with an animation
+	group with basic and sprite animations.
+
+	@SYMTestExpectedResults Animation displayed.
+
+*/
+void CBasic::TestLoopsNumberedL()
+	{
+	TAnimationConfig config;
+	config.iFlags = TAnimationConfig::ELoop;
+	config.iData = 2;
+
+	StartStopL(config);
+	}
+	
+/**
+	@SYMTestCaseID UIF-animation-TBasic-TestNotLoopedL
+
+	@SYMTestCaseDesc 
+	This runs an animation displayed without looping.
+
+	@SYMPREQ 269
+
+	@SYMTestStatus Implemented
+
+	@SYMTestPriority High
+
+	@SYMTestActions 
+	The animation must be initialised, and this test is called with an animation
+	group with basic and sprite animations.
+
+	@SYMTestExpectedResults Animation displayed.
+*/
+void CBasic::TestNotLoopedL()
+	{
+	TAnimationConfig config;
+
+	StartStopL(config);
+	}
+	
+/**
+	@SYMTestCaseID UIF-animation-TBasic-TestControlL
+
+	@SYMTestCaseDesc 
+	This tests animation operations such as start, pause, resume and stop.  
+
+	@SYMPREQ 269
+
+	@SYMTestStatus Implemented
+
+	@SYMTestPriority High
+
+	@SYMTestActions 
+	The animation must be initialised, and this test is called with an animation
+	group with basic and sprite animations.  After a straightforward sequence of 
+	operations: start, pause, resume and stop, invalid operations for the current 
+	state are tested, such as stop when already stopped, and resume when stopped.
+
+	@SYMTestExpectedResults Animation displayed.
+*/
+void CBasic::TestControlL()
+	{
+	TAnimationConfig config;
+	config.iFlags = TAnimationConfig::ELoop;
+	config.iData = -1;
+	
+	// Start, Pause, Resume, Stop:
+	iAnimationGroup->Start(config);
+	Wait(500000);
+	iAnimationGroup->Pause();
+	Wait(1000000);
+	iAnimationGroup->Resume();
+	Wait(700000);
+	iAnimationGroup->Stop();
+	Wait(500000);
+	
+	// Start again:
+	iAnimationGroup->Start(config);
+	Wait(500000);
+	iAnimationGroup->Stop();
+	
+	// Commands for wrong state (stop when already stopped etc):
+	iAnimationGroup->Start(config);
+	Wait(500000);
+	iAnimationGroup->Start(config);
+	Wait(500000);
+	iAnimationGroup->Resume();
+	Wait(500000);
+	iAnimationGroup->Stop();
+	iAnimationGroup->Stop();
+	Wait(500000);	
+	iAnimationGroup->Resume();
+	Wait(500000);	
+	}
+	
+/**
+	@SYMTestCaseID UIF-animation-TBasic-TestMovingL
+
+	@SYMTestCaseDesc 
+	This test starts an animation and then moves its position multiple times.  
+	The animation is then stopped.
+
+	@SYMPREQ 269
+
+	@SYMTestStatus Implemented
+
+	@SYMTestPriority High
+
+	@SYMTestActions 
+	The animation must be initialised, and this test is called with an animation
+	group with basic and sprite animations.  After the animation is started it is 
+	moved horizontally five pixels to the right for a length of 200 pixels, 
+	with a 50ms pause between each step.
+
+	@SYMTestExpectedResults Animation displayed moving to the right.
+*/
+void CBasic::TestMovingL()
+	{
+	TAnimationConfig config;
+	config.iFlags = TAnimationConfig::ELoop;
+	config.iData = -1;
+	
+	iAnimationGroup->Start(config);
+
+	TInt y = 0;	
+	for (TInt x = 0; x < 200; x += 5)
+		{
+		iAnimationGroup->SetPosition(TPoint(x, y));
+		Ws().Flush();
+		Wait(50000);
+		y += 1;
+		}
+	iAnimationGroup->Stop();
+	}
+
+/**
+	@SYMTestCaseID UIF-animation-TBasic-TestDataChangeL
+
+	@SYMTestCaseDesc 
+	This test changes the data provider file.
+
+	@SYMPREQ 269
+
+	@SYMTestStatus Implemented
+
+	@SYMTestPriority High
+
+	@SYMTestActions 
+	The animation must be initialised, and the data provider for a basic animation and
+	a sprite animation are changed.
+
+	@SYMTestExpectedResults 
+	No output changed.  The animation test TestLoopsForeverL is run afterwards.
+*/
+void CBasic::TestDataChangeL()
+	{
+	static_cast<CICLAnimationDataProvider*>(iBasicAnimation->DataProvider())->SetFileL(iFs, KSymWaveFile());
+	static_cast<CICLAnimationDataProvider*>(iSpriteAnimation->DataProvider())->SetFileL(iFs, KSymWaveFile());
+	Wait(2000000);
+	}
+
+TVerdict CBasic::doActiveTestStepL()
+	{
+	_LIT(KLoopsForever, "Loops forever");
+	_LIT(KLoopsNumbered, "Loops numbered");
+	_LIT(KNotLooped, "Not looped");
+	_LIT(KControl, "Control");
+	_LIT(KMoving, "Moving");
+	_LIT(KDataChange, "Data Change");
+	
+	InitialiseL();
+
+	Wait(2000000);
+
+	TInt stage = 0;
+	TBool finished = EFalse;
+	while((TestStepResult() == EPass) && !finished)
+		{
+		switch(stage)
+			{
+			case 0:
+				SetTestStepID(_L("UIF-animation-TBasic-TestLoopsForeverL-0001"));
+				ANIM_INFO1(KLoopsForever);
+				TestLoopsForeverL();
+				RecordTestResultL();
+				break;
+			case 1:
+				SetTestStepID(_L("UIF-animation-TBasic-TestLoopsNumberedL"));
+				ANIM_INFO1(KLoopsNumbered);
+				TestLoopsNumberedL();
+				RecordTestResultL();
+				break;
+			case 2:
+				SetTestStepID(_L("UIF-animation-TBasic-TestNotLoopedL"));
+				ANIM_INFO1(KNotLooped);
+				TestNotLoopedL();
+				RecordTestResultL();
+				break;
+			case 3:
+				SetTestStepID(_L("UIF-animation-TBasic-TestControlL"));
+				ANIM_INFO1(KControl);
+				TestControlL();
+				RecordTestResultL();
+				break;
+			case 4:
+				SetTestStepID(_L("UIF-animation-TBasic-TestMovingL"));
+				ANIM_INFO1(KMoving);
+				TestMovingL();
+				RecordTestResultL();
+				break;
+			case 5:
+				SetTestStepID(_L("UIF-animation-TBasic-TestDataChangeL"));
+				ANIM_INFO1(KDataChange);
+				TestDataChangeL();
+				RecordTestResultL();
+				break;
+			case 6:
+				SetTestStepID(_L("UIF-animation-TBasic-TestLoopsForeverL-0002"));
+				ANIM_INFO1(KLoopsForever);
+				TestLoopsForeverL();
+				RecordTestResultL();
+				CloseTMSGraphicsStep();
+				break;
+			default:
+				finished = ETrue;
+			}
+		++stage;
+		}
+	return TestStepResult();
+	}
+	
+void CBasic::AnimationEvent(CAnimation& /*aSender*/, TInt aEvent, TAny* aData)
+	{
+	switch(aEvent)
+		{
+		case MAnimationObserver::EDataProviderError:
+			ANIMTESTERR(*static_cast<TInt*>(aData));
+			break;
+		default:
+			break;
+		}
+	}