--- /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();
+ }