lafagnosticuifoundation/cone/tef/tconestateobs.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lafagnosticuifoundation/cone/tef/tconestateobs.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,249 @@
+// Copyright (c) 2007-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
+ @test
+*/
+
+#include <e32std.h>
+#include "COEAUI.H"
+#include "tconestateobs.h"
+#include "statecon.h"
+
+/**
+   Handles calls from the Mop interface on the control enviroment
+ */
+TInt CStepStateObsEnv::HandleControlStateChange(CCoeControl* aControl,MCoeControlStateObserver::TCoeState aState)
+	{
+	if (iPassOn)
+		return iPassOn->ControlStateChangePassOn(aControl,aState);
+	return KErrNone;
+	}
+
+/**
+   Returns the Mop interface provided by this control enviroment
+ */
+TTypeUid::Ptr CStepStateObsEnv::MopSupplyObject(TTypeUid aId)
+	{
+	if (aId.iUid==MCoeControlStateObserver::ETypeId && iRetObserver)
+		return aId.MakePtr(static_cast<MCoeControlStateObserver*>(this));
+	return CCoeEnv::MopSupplyObject(aId);
+	}
+
+/**
+   Constructor for the APP UI for this test
+ */
+CConeStateObsAppUi::CConeStateObsAppUi(CTmsTestStep* aStep,CStepStateObsEnv* aCoe)
+	: CTestCoeAppUi(aStep), iCoe(aCoe)
+	{}
+
+/** 
+   Destructor for the APP UI for this test
+ */
+CConeStateObsAppUi::~CConeStateObsAppUi()
+	{
+	delete iStateObCnt;
+	}
+
+/**
+   Creates font and control for this test and sets state need by all sub-tests
+ */
+void CConeStateObsAppUi::ConstructL()
+	{
+	CTestCoeAppUi::ConstructL();
+	AutoTestManager().StartAutoTest();
+	//Creating the first font allocates memory that is never deleted so must do this outside heap checks
+	CFbsFont* font=iCoe->CreateScreenFontL(CStateObserverControl::iFontSpec);
+	iCoe->ReleaseScreenFont(font);
+	iStateObCnt=new(ELeave) CStateObserverControl();
+	iStateObCnt->ConstructL();
+	iStateObCnt->SetEnv(iCoe);
+	iCoe->SetPassOn(iStateObCnt);
+	iCoe->SetReturnObserver(ETrue);
+	}
+
+/**
+   Do a sub test
+ */
+void CConeStateObsAppUi::DoStateObserverTest()
+	{
+	__UHEAP_MARK;
+	TInt failAt=iStateObCnt->DoTest();
+	if (failAt>0)
+		{
+		TEST(EFalse);
+		_LIT(KLog,"StateObserverTest failed on subtest: %d");
+		INFO_PRINTF2(KLog,failAt);
+		}
+	__UHEAP_MARKEND;
+	}
+
+/**
+   @SYMTestCaseID UIF-CONE-0029
+
+   @SYMCR CR1251
+
+   @SYMTestCaseDesc Tests calling MakeVisible or SetDimmed calls the new Mop interface
+   when only the control enviroment provides the relevant Mop interface
+
+   @SYMTestPriority High
+
+   @SYMTestStatus Implemented
+
+   @SYMTestActions Makes many calls to MakeVisible or SetDimmed in different situations 
+   and checks if the new Mop interface is called or not on each time.
+
+   @SYMTestExpectedResults The new interface is called if there is a change in the controls state
+
+   @SYMTestType : Unit Test
+ */
+void CConeStateObsAppUi::StateObserverTestEnvOnly()
+	{
+	iStateObCnt->SetReturnObserver(CStateObserverControl::ENoObserver);
+	iStateObCnt->SetRecievers(EFalse,ETrue);
+	DoStateObserverTest();
+	}
+
+/**
+   @SYMTestCaseID UIF-CONE-0030
+
+   @SYMCR CR1251
+
+   @SYMTestCaseDesc Tests calling MakeVisible or SetDimmed calls the new Mop interface
+   when both the control the control enviroment provides the relevant Mop interface
+
+   @SYMTestPriority High
+
+   @SYMTestStatus Implemented
+
+   @SYMTestActions Makes many calls to MakeVisible or SetDimmed in different situations 
+   and checks if the new Mop interface is called or not on each time.
+
+   @SYMTestExpectedResults The new interface is called if there is a change in the controls state
+
+   @SYMTestType : Unit Test
+ */
+void CConeStateObsAppUi::StateObserverTestBoth()
+	{
+	iStateObCnt->ResetCount();
+	iStateObCnt->SetReturnObserver(CStateObserverControl::EObserver);
+	iStateObCnt->SetRecievers(ETrue,ETrue);
+	DoStateObserverTest();
+	}
+
+/**
+   @SYMTestCaseID UIF-CONE-0031
+
+   @SYMCR CR1251
+
+   @SYMTestCaseDesc Tests calling MakeVisible or SetDimmed calls the new Mop interface
+   when both the control the control enviroment provides the relevant Mop interface but
+   do so using the same object
+
+   @SYMTestPriority High
+
+   @SYMTestStatus Implemented
+
+   @SYMTestActions Makes many calls to MakeVisible or SetDimmed in different situations 
+   and checks if the new Mop interface is called or not on each time.
+
+   @SYMTestExpectedResults The new interface is called if there is a change in the controls state
+
+   @SYMTestType : Unit Test
+ */
+void CConeStateObsAppUi::StateObserverTestBothAtEnv()
+	{
+	iStateObCnt->ResetCount();
+	iStateObCnt->SetReturnObserver(CStateObserverControl::ECoeEnvObserver);
+	iStateObCnt->SetRecievers(EFalse,ETrue);
+	DoStateObserverTest();
+	}
+
+/**
+   Function to call each of the tests in turn
+ */
+void CConeStateObsAppUi::RunTestStepL(TInt aStepNum)
+	{
+	_LIT(KTest1,"Test 1: MCoeControlStateObserver event recieved through control enviroment only");
+	_LIT(KTest2,"Test 2: MCoeControlStateObserver event recieved through both control enviroment and control");
+	_LIT(KTest3,"Test 3: MCoeControlStateObserver event recieved through both control enviroment and control but by the same object");
+	switch(aStepNum)
+		{
+	case 1:
+		SetTestStepID(_L("UIF-CONE-0029"));		
+		INFO_PRINTF1(KTest1);
+		StateObserverTestEnvOnly();
+		RecordTestResultL();		
+		break;
+	case 2:
+		SetTestStepID(_L("UIF-CONE-0030"));		
+		INFO_PRINTF1(KTest2);
+		StateObserverTestBoth();
+		RecordTestResultL();		
+		break;
+	case 3:
+		SetTestStepID(_L("UIF-CONE-0031"));		
+		INFO_PRINTF1(KTest3);
+		StateObserverTestBothAtEnv();
+		RecordTestResultL();
+		CloseTMSGraphicsStep();
+		break;
+	default:
+		AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass);
+		break;
+		}
+	}
+
+/**
+   Constructor for the main test class
+ */
+CTConeStateObs::CTConeStateObs()
+	{
+	SetTestStepName(KTConeStateObs);
+	}
+
+/**
+   Finish creating the Control Enviroment and create the App UI.
+ */
+void CTConeStateObs::ConstructL()
+	{
+	//Would like to do this line here but this gives a panic in the cleanup stack code.
+	//iCoe=new(ELeave) CStepStateObsEnv();
+	iCoe->ConstructL();
+	CConeStateObsAppUi* appUi=new(ELeave) CConeStateObsAppUi(this,iCoe);
+	iCoe->SetAppUi(appUi);
+	appUi->ConstructL();
+	}
+
+/**
+   Entry function for CTConeStateObs Test Step.
+ */
+TVerdict CTConeStateObs::doTestStepL()
+	{
+	INFO_PRINTF1(_L("Test Started"));
+	iCoe=new(ELeave) CStepStateObsEnv();
+	TRAPD(err,ConstructL());
+	if (!err)
+		iCoe->ExecuteD();
+	else
+		{
+		SetTestStepResult(EFail);
+		delete iCoe;
+		}
+	INFO_PRINTF1(_L("Test Finished"));
+	return TestStepResult();
+	}