lafagnosticuifoundation/uigraphicsutils/tef/TEgulAlignmentStep.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lafagnosticuifoundation/uigraphicsutils/tef/TEgulAlignmentStep.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,434 @@
+// Copyright (c) 2006-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 <e32keys.h>
+#include <basched.h>
+#include <coemain.h>
+#include <coeaui.h>
+#include <gulutil.h>
+
+#include "TEgulAlignmentStep.h"
+
+
+
+CTestAlignmentUi::CTestAlignmentUi(CTmsTestStep* aStep) :
+	CTestCoeAppUi(aStep)
+	{}
+
+CTestAlignmentUi::~CTestAlignmentUi()
+	{
+	}
+
+void CTestAlignmentUi::ConstructL()
+	{
+	CTestCoeAppUi::ConstructL();
+	AutoTestManager().StartAutoTest();
+	}
+
+
+void CTestAlignmentUi::RunTestStepL(TInt aStep)
+	{
+	TGulAlignment align(EHLeftVTop);
+	
+	switch(aStep)
+		{
+	case 1:
+		// Check that SetAbsoluteHAlignment() / HasAbsoluteHAlignment() works
+		INFO_PRINTF1(_L("Test SetAbsoluteHAlignment() / HasAbsoluteHAlignment()"));
+		TEST(!align.HasAbsoluteHAlignment());	// Make sure default value is false
+	
+		align.SetAbsoluteHAlignment(ETrue);		// Set to true
+		TEST(align.HasAbsoluteHAlignment());	// Verify true
+		
+		align.SetAbsoluteHAlignment(EFalse);	// Set to false
+		TEST(!align.HasAbsoluteHAlignment());	// Verify false
+		
+		// Check the operation of the implicitly called TGulAlignment(TGulAlignmentValue) constructor
+		align.SetAbsoluteHAlignment(ETrue);		// Set to true
+		align = EHRightVBottom;					// Change alignement to lower right...
+		TEST(!align.HasAbsoluteHAlignment());	// ...and verify that absolution is reset to false
+		break;
+	case 2:
+		// Check that HAlignment() swapps left and right for RightToLeft scripts, unless absolute alignment is set
+		INFO_PRINTF1(_L("Test HAlignment(TBidiText::TDirectionality)"));
+		
+		align = EHLeftVCenter;
+		TEST(align.HAlignment(TBidiText::ELeftToRight) == EHLeft);	// no swapping
+		TEST(align.HAlignment(TBidiText::ERightToLeft) == EHRight);	// swap!
+		align.SetAbsoluteHAlignment(ETrue);
+		TEST(align.HAlignment(TBidiText::ELeftToRight) == EHLeft);	// no swapping
+		TEST(align.HAlignment(TBidiText::ERightToLeft) == EHLeft);	// abs, no swapping
+		
+		align = EHCenterVCenter;
+		TEST(align.HAlignment(TBidiText::ELeftToRight) == EHCenter);
+		TEST(align.HAlignment(TBidiText::ERightToLeft) == EHCenter);
+		align.SetAbsoluteHAlignment(ETrue);
+		TEST(align.HAlignment(TBidiText::ELeftToRight) == EHCenter);
+		TEST(align.HAlignment(TBidiText::ERightToLeft) == EHCenter);
+		
+		align = EHRightVCenter;
+		TEST(align.HAlignment(TBidiText::ELeftToRight) == EHRight);	// no swapping
+		TEST(align.HAlignment(TBidiText::ERightToLeft) == EHLeft);	// swap!
+		align.SetAbsoluteHAlignment(ETrue);
+		TEST(align.HAlignment(TBidiText::ELeftToRight) == EHRight);	// no swapping
+		TEST(align.HAlignment(TBidiText::ERightToLeft) == EHRight);	// abs, no swapping
+		break;
+	case 3:
+		// Check the operator() allows comparation between TGulAlignment value (left side) and TGulAlignment (right side)
+		INFO_PRINTF1(_L("Test TAlignment::operator()"));
+		align = EHCenterVCenter;
+		TEST(!align.HasAbsoluteHAlignment());	// Verify false
+		
+		TEST(EHCenterVCenter == align);			// Test operator() with absolute alignment flag not set
+		align.SetAbsoluteHAlignment(ETrue);		// Set absolute alignment flag
+		TEST(EHCenterVCenter == align);			// Test operator() with absolute alignment flag set
+		break;
+	case 4:
+		// Check that setting the horizontal alignment resets the absolute alignment flag
+		align.SetAbsoluteHAlignment(ETrue);		// Set absolute horizontal alignment
+		align.SetHAlignment(EHLeft);			// Set the alignment
+		TEST(align.HAlignment() == EHLeft);		// Check set operation worked
+		TEST(!align.HasAbsoluteHAlignment());	// Check set operation reset the absolute alignment flag as expected
+		
+		align.SetAbsoluteHAlignment(ETrue);		// Same as above
+		align.SetHAlignment(EHCenter);
+		TEST(align.HAlignment() == EHCenter);
+		TEST(!align.HasAbsoluteHAlignment());
+		
+		align.SetAbsoluteHAlignment(ETrue);		// Same as above
+		align.SetHAlignment(EHRight);
+		TEST(align.HAlignment() == EHRight);
+		TEST(!align.HasAbsoluteHAlignment());
+		break;
+	case 5:
+		{
+		// Check that InnerTopLeft() and InnerRect() does not swap alignment for the inner object
+		// even though absolute horizontal alignment is ON
+		const TRect outerRect(10,10,110,110);
+		const TSize innerSize(20,20);
+		TPoint innerTopLeft;
+		TRect innerRect;
+		
+		align.SetHAlignment(EHLeft);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(10,10) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect == TRect(10,10,30,30) );
+		
+		align.SetHAlignment(EHCenter);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(50,10) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect  == TRect(50,10,70,30) );
+		
+		align.SetHAlignment(EHRight);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(90,10) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect == TRect(90,10,110,30) );
+		
+		
+		align.SetVAlignment(EVCenter);
+		
+		
+		align.SetHAlignment(EHLeft);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(10,50) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect == TRect(10,50,30,70) );
+		
+		align.SetHAlignment(EHCenter);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(50,50) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect  == TRect(50,50,70,70) );
+		
+		align.SetHAlignment(EHRight);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(90,50) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect == TRect(90,50,110,70) );
+		
+		
+		align.SetVAlignment(EVBottom);
+		
+		
+		align.SetHAlignment(EHLeft);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(10,90) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect == TRect(10,90,30,110) );
+		
+		align.SetHAlignment(EHCenter);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(50,90) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect  == TRect(50,90,70,110) );
+		
+		align.SetHAlignment(EHRight);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(90,90) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect == TRect(90,90,110,110) );
+		}
+		break;
+		
+	case 6:
+		{
+		// Check that InnerTopLeft(TBidiText::TDirectionality) and InnerRect(TBidiText::TDirectionality) 
+		// does NOT swap alignment for the inner object when scrip directionality is RightToLeft (only)
+		// when absolute alignment is ON
+		const TRect outerRect(10,10,110,110);
+		const TSize innerSize(20,20);
+		TPoint innerTopLeft;
+		TRect innerRect;
+		
+		align.SetHAlignment(EHLeft);
+		align.SetAbsoluteHAlignment(ETrue);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(10,10) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect == TRect(10,10,30,30) );
+		
+		align.SetHAlignment(EHCenter);
+		align.SetAbsoluteHAlignment(ETrue);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(50,10) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect  == TRect(50,10,70,30) );
+		
+		align.SetHAlignment(EHRight);
+		align.SetAbsoluteHAlignment(ETrue);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(90,10) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect == TRect(90,10,110,30) );
+		
+		
+		align.SetVAlignment(EVCenter);
+		
+		
+		align.SetHAlignment(EHLeft);
+		align.SetAbsoluteHAlignment(ETrue);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(10,50) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect == TRect(10,50,30,70) );
+		
+		align.SetHAlignment(EHCenter);
+		align.SetAbsoluteHAlignment(ETrue);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(50,50) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect  == TRect(50,50,70,70) );
+		
+		align.SetHAlignment(EHRight);
+		align.SetAbsoluteHAlignment(ETrue);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(90,50) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect == TRect(90,50,110,70) );
+		
+		
+		align.SetVAlignment(EVBottom);
+		
+		
+		align.SetHAlignment(EHLeft);
+		align.SetAbsoluteHAlignment(ETrue);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(10,90) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect == TRect(10,90,30,110) );
+		
+		align.SetHAlignment(EHCenter);
+		align.SetAbsoluteHAlignment(ETrue);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(50,90) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect  == TRect(50,90,70,110) );
+		
+		align.SetHAlignment(EHRight);
+		align.SetAbsoluteHAlignment(ETrue);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize);
+		TEST( innerTopLeft == TPoint(90,90) );
+		innerRect = align.InnerRect(outerRect, innerSize);
+		TEST( innerRect == TRect(90,90,110,110) );
+		}
+		break;
+	
+	case 7:
+		{
+		// Check that InnerTopLeft(TBidiText::TDirectionality) and InnerRect(TBidiText::TDirectionality) 
+		// DOES swap alignment for the inner object when scrip directionality is RightToLeft (only)
+		// when absolute alignment is OFF
+		const TRect outerRect(10,10,110,110);
+		const TSize innerSize(20,20);
+		TPoint innerTopLeft;
+		TRect innerRect;
+		
+		align.SetHAlignment(EHLeft);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerTopLeft == TPoint(90,10) );
+		innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerRect == TRect(90,10,110,30) );
+		
+		align.SetHAlignment(EHCenter);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerTopLeft == TPoint(50,10) );
+		innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerRect  == TRect(50,10,70,30) );
+		
+		align.SetHAlignment(EHRight);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerTopLeft == TPoint(10,10) );
+		innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerRect == TRect(10,10,30,30) );
+		
+		
+		align.SetVAlignment(EVCenter);
+		
+		
+		align.SetHAlignment(EHLeft);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerTopLeft == TPoint(90,50) );
+		innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerRect == TRect(90,50,110,70) );
+		
+		align.SetHAlignment(EHCenter);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerTopLeft == TPoint(50,50) );
+		innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerRect  == TRect(50,50,70,70) );
+		
+		align.SetHAlignment(EHRight);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerTopLeft == TPoint(10,50) );
+		innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerRect == TRect(10,50,30,70) );
+		
+		
+		align.SetVAlignment(EVBottom);
+		
+		
+		align.SetHAlignment(EHLeft);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerTopLeft == TPoint(90,90) );
+		innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerRect == TRect(90,90,110,110) );
+		
+		align.SetHAlignment(EHCenter);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerTopLeft == TPoint(50,90) );
+		innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerRect  == TRect(50,90,70,110) );
+		
+		align.SetHAlignment(EHRight);
+		innerTopLeft = align.InnerTopLeft(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerTopLeft == TPoint(10,90) );
+		innerRect = align.InnerRect(outerRect, innerSize, TBidiText::ERightToLeft);
+		TEST( innerRect == TRect(10,90,30,110) );
+		}
+		break;
+	
+	case 8:
+		// Check the operation of ParaAlign() and SetHAlignment(CParaFormat)
+		align.SetHAlignment(CParaFormat::ELeftAlign);
+		TEST(align.ParaAlign() == CParaFormat::ELeftAlign);
+		TEST(align.HAlignment() == EHLeft);
+		TEST(!align.HasAbsoluteHAlignment());
+				
+		align.SetHAlignment(CParaFormat::ERightAlign);
+		TEST(align.ParaAlign() == CParaFormat::ERightAlign);
+		TEST(align.HAlignment() == EHRight);
+		TEST(!align.HasAbsoluteHAlignment());
+		
+		align.SetHAlignment(CParaFormat::EAbsoluteLeftAlign);
+		TEST(align.ParaAlign() == CParaFormat::EAbsoluteLeftAlign);
+		TEST(align.HAlignment() == EHLeft);
+		TEST(align.HasAbsoluteHAlignment());
+		
+		align.SetHAlignment(CParaFormat::EAbsoluteRightAlign);
+		TEST(align.ParaAlign() == CParaFormat::EAbsoluteRightAlign);
+		TEST(align.HAlignment() == EHRight);
+		TEST(align.HasAbsoluteHAlignment());
+			
+		break;
+
+	default:
+		AutoTestManager().FinishAllTestCases(CAutoTestManager::EPass);
+		break;
+		}
+
+	}
+
+//
+// Main
+//
+
+void CTAlignmentStep::ConstructAppL(CCoeEnv* aCoeEnv)
+    { // runs inside a TRAP harness
+	aCoeEnv->ConstructL();
+	CTestAlignmentUi* appUi=new(ELeave) CTestAlignmentUi(this);
+	appUi->ConstructL();
+	aCoeEnv->SetAppUi(appUi);
+    }
+
+
+CTAlignmentStep::~CTAlignmentStep()
+/**
+   Destructor
+ */
+	{
+	}
+
+CTAlignmentStep::CTAlignmentStep()
+/**
+   Constructor
+ */
+	{
+	// Call base class method to set up the human readable name for logging
+	SetTestStepName(KTAlignmentStep);
+	}
+
+
+TVerdict CTAlignmentStep::doTestStepL()
+	{
+	INFO_PRINTF1(_L("Test Started"));
+
+	PreallocateHALBuffer();
+
+	__UHEAP_MARK;
+
+    CCoeEnv* coe=new(ELeave) CCoeEnv;
+    TRAPD(err,ConstructAppL(coe));
+    if (!err)
+        coe->ExecuteD();
+	else
+		{
+		SetTestStepResult(EFail);
+		delete coe;
+		}
+
+ 	INFO_PRINTF1(_L("Test Finished"));
+
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}