diff -r 000000000000 -r 2f259fa3e83a lafagnosticuifoundation/uigraphicsutils/tef/TEgulAlignmentStep.cpp --- /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 +#include +#include +#include +#include + +#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(); + }