diff -r e880629062dd -r e4a7b1cbe40c kerneltest/e32test/digitiser/t_userdigitisertest.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kerneltest/e32test/digitiser/t_userdigitisertest.cpp Mon May 10 11:40:53 2010 +0100 @@ -0,0 +1,267 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "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: +// e32test\digitiser\t_userdigitisertest.cpp +// Overview: +// Test the TRawEvent APIS and events associated with the Digitiser and also verify the BTRACEs (manually) +// Test HAL digitiser orientation attribute +// API Information: +// UserSvr +// Details: +// - Test the following 6 Events types +// 1. EPointerMove +// 2. EPointer3DInRange, +// 3. EPointer3DOutOfRange, +// 4. EPointer3DTilt, +// 5. EPointer3DRotation, +// 6. EPointer3DTiltAndMove, +// Platforms/Drives/Compatibility: +// All. +// Assumptions/Requirement/Pre-requisites: +// Failures and causes: +// +// + +#define __E32TEST_EXTENSION__ +#include +#include +#include +#include +#include + +#ifndef E32TEST_NOCAPS +LOCAL_D RTest test(_L("T_UserDigitiserTest")); +#else +LOCAL_D RTest test(_L("T_UserDigitiserNoCaps")); +#endif + +class TestTRawDigitiserEvent + { +public: + TestTRawDigitiserEvent(TRawEvent::TType aType,TInt aX,TInt aY,TInt aZ,TInt aScanCode,TInt aPhi,TInt aTheta,TInt aAlpha,TUint8 aPointerNumber,TUint8 iTip); + void TestEvents(); +private: + TRawEvent::TType iType; + TInt iX; + TInt iY; + TInt iZ; + TInt iScanCode; + TInt iPhi; + TInt iTheta; + TInt iAlpha; + TUint8 iPointerNumber; + TUint8 iTip; + TRawEvent iDigitiser3DEvent; + }; + + +TestTRawDigitiserEvent::TestTRawDigitiserEvent(TRawEvent::TType aType,TInt aX,TInt aY,TInt aZ,TInt aScanCode,TInt aPhi,TInt aTheta,TInt aAlpha,TUint8 aPointerNumber,TUint8 aTip):iType(aType),iX(aX),iY(aY),iZ(aZ),iScanCode(aScanCode),iPhi(aPhi),iTheta(aTheta),iAlpha(aAlpha),iPointerNumber(aPointerNumber),iTip(aTip) + {} + + +void TestTRawDigitiserEvent::TestEvents() + { + static TInt count = 0; + count++; + test.Printf(_L("TestTRawDigitiserEvent test case %2d\n"), count); + + test(iDigitiser3DEvent.Type()==0); + iDigitiser3DEvent.Set(iType); + test(iDigitiser3DEvent.Type()==iType); + iDigitiser3DEvent.SetPointerNumber(iPointerNumber); + test(iPointerNumber == iDigitiser3DEvent.PointerNumber()); + iDigitiser3DEvent.Set(iType,iScanCode); + //Set the Type temporarily to get through the assertion + iDigitiser3DEvent.Set(TRawEvent::EKeyDown); + test(iScanCode==iDigitiser3DEvent.ScanCode()); + iDigitiser3DEvent.Set(iType,iX,iY); + //Set the Type temporarily to get through the assertion + iDigitiser3DEvent.Set(TRawEvent::EPointerMove); + test(TPoint(iX,iY)==iDigitiser3DEvent.Pos()); + iDigitiser3DEvent.Set(iType,iX,iY,iZ); + //Set the Type temporarily to get through the assertion + iDigitiser3DEvent.Set(TRawEvent::EPointerMove); + test(TPoint3D(iX,iY,iZ)==iDigitiser3DEvent.Pos3D()); + iDigitiser3DEvent.SetTip(iTip); + test(TBool(iTip) == iDigitiser3DEvent.IsTip()); + iDigitiser3DEvent.SetTilt(iType,iPhi,iTheta); + //Set the Type temporarily to get through the assertion + iDigitiser3DEvent.Set(TRawEvent::EPointer3DTilt); + TAngle3D rawEventAnge3D=iDigitiser3DEvent.Tilt(); + test((rawEventAnge3D.iPhi==iPhi) && (rawEventAnge3D.iTheta==iTheta)) ; + + + iDigitiser3DEvent.SetRotation(iType,iAlpha); + //Set the Type temporarily to get through the assertion + iDigitiser3DEvent.Set(TRawEvent::EPointer3DRotation); + test(iAlpha == iDigitiser3DEvent.Rotation()); + iDigitiser3DEvent.Set(iType,iX+1,iY+1,iZ+1,iPhi+1,iTheta+1,iAlpha+1); + //Set the Type temporarily to get through the assertion + iDigitiser3DEvent.Set(TRawEvent::EPointer3DTiltAndMove); + test(TPoint3D(iX+1,iY+1,iZ+1)==iDigitiser3DEvent.Pos3D()); + rawEventAnge3D=iDigitiser3DEvent.Tilt(); + test((rawEventAnge3D.iPhi==iPhi+1) &&(rawEventAnge3D.iTheta==iTheta+1)); + test((iAlpha+1) == iDigitiser3DEvent.Rotation()); + iDigitiser3DEvent.Set(iType,iX+2,iY+2,iZ+2,static_cast(iPointerNumber+1)); + //Set the Type temporarily to get through the assertion + iDigitiser3DEvent.Set(TRawEvent::EPointer3DTiltAndMove); + test(TPoint3D(iX+2,iY+2,iZ+2)==iDigitiser3DEvent.Pos3D()); + test((iPointerNumber+1) == iDigitiser3DEvent.PointerNumber()); + + UserSvr::AddEvent(iDigitiser3DEvent); + } + + +struct HalAttribute_TestCase + { + HALData::TAttribute iAttr; + TInt iValueIn; + TInt iSetRC; // Set to KMaxTInt to skip set test case + TInt iGetRC; // Set to KMaxTInt to skip get test case + + }; + +static HalAttribute_TestCase gHalAttributeTests[] = + { +#ifndef E32TEST_NOCAPS + // Normal all pass tests + { HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_000, KErrNone, KErrNone}, + { HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_090, KErrNone, KErrNone}, + { HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_180, KErrNone, KErrNone}, + { HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_270, KErrNone, KErrNone}, + { HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_default, KErrNone, KErrNone}, + + // Negative tests + { HALData::EDigitiserOrientation, -1, KErrArgument, KMaxTInt}, + { HALData::EDigitiserOrientation, 100, KErrArgument, KMaxTInt}, + +#else + // Platsec tests for no capabilities executable. + { HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_default, KMaxTInt, KErrNone}, // Get, No caps needed + { HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_default, KErrPermissionDenied, KMaxTInt}, // Set WDD cap needed +#endif + }; + +static TInt gNumHalAttributeTests = sizeof(gHalAttributeTests)/sizeof(HalAttribute_TestCase); + +void DoTestDigitiserHalAttributes() + { + __UHEAP_MARK; +#ifndef E32TEST_NOCAPS + test.Start(_L("DoTestDigitiserHalAttributes tests")); +#else + test.Start(_L("DoTestDigitiserHalAttributes NO CAPS tests")); + + // Skip No Caps testing for WDD caps when enforcement is not enabled on the + // platform i.e. when a emulator epoc.ini is missing. + if (!PlatSec::IsCapabilityEnforced(ECapabilityWriteDeviceData)) + { + test.Printf(_L("Platform security enforcement off, skipping\n")); + test.End(); + __UHEAP_MARKEND; + return; + } +#endif + + TInt i = 0; + TInt origValue = -1; + TInt r = HAL::Get(HALData::EDigitiserOrientation, origValue); + if (r == KErrNotSupported) + { + test.Printf(_L("Platform doesn't support EDigitiserOrientation, skipping\n")); + test.End(); + __UHEAP_MARKEND; + return; + } + test_KErrNone(r); + + // Attribute supported on platform, proceed with test. + TInt value = -1; + for (i=0; i < gNumHalAttributeTests; i++) + { + test.Printf(_L("DoTestDigitiserHalAttributes - step/row %2d\n"), i+1); + + if (gHalAttributeTests[i].iSetRC != KMaxTInt) // Skip set test? + { + r = HAL::Set(gHalAttributeTests[i].iAttr, gHalAttributeTests[i].iValueIn); + test_Equal( gHalAttributeTests[i].iSetRC, r); + } + + if (gHalAttributeTests[i].iGetRC != KMaxTInt) // Skip get test? + { + r = HAL::Get(gHalAttributeTests[i].iAttr, value); + test_Equal(gHalAttributeTests[i].iGetRC, r); + test_Equal(gHalAttributeTests[i].iValueIn, value); + } + } + +#ifndef E32TEST_NOCAPS + // Return system state back to before the test + r = HAL::Set(HALData::EDigitiserOrientation, origValue); + test_KErrNone(r); +#endif + + test.Printf(_L("DoTestDigitiserHalAttributes - complete\n")); + test.End(); + __UHEAP_MARKEND; + } + +#ifndef E32TEST_NOCAPS +void DoTestRawDigitiserEvent() + { + __UHEAP_MARK; + test.Start(_L("DoTestRawDigitiserEvent tests")); + + TestTRawDigitiserEvent digitiserEvent1(TRawEvent::EPointerMove, -890,-123, -823,455,2563,156,62,3,1); + TestTRawDigitiserEvent digitiserEvent2(TRawEvent::EPointer3DInRange, 23,45,23,1,2,6,4,2,1); + TestTRawDigitiserEvent digitiserEvent3(TRawEvent::EPointer3DOutOfRange, 23,45,23,1,2,6,4,2,0); + TestTRawDigitiserEvent digitiserEvent4(TRawEvent::EPointer3DTilt, 23,45,23,1,2,6,4,2,1); + TestTRawDigitiserEvent digitiserEvent5(TRawEvent::EPointer3DRotation, 23,45,23,1,2,6,4,2,1); + TestTRawDigitiserEvent digitiserEvent6(TRawEvent::EPointer3DTiltAndMove, 23,45,23,1,2,6,4,2,0); + + digitiserEvent1.TestEvents(); + digitiserEvent2.TestEvents(); + digitiserEvent3.TestEvents(); + digitiserEvent4.TestEvents(); + digitiserEvent5.TestEvents(); + digitiserEvent6.TestEvents(); + + test.End(); + __UHEAP_MARKEND; + } +#endif + + +GLDEF_C TInt E32Main() +// +// + { + __UHEAP_MARK; + + test.Title(); + test.Start(_L("User-side Digitiser Testing Events/HAL")); + + DoTestDigitiserHalAttributes(); + +#ifndef E32TEST_NOCAPS + DoTestRawDigitiserEvent(); +#endif + + test.Printf(_L("\n")); + test.End(); + test.Close(); + + __UHEAP_MARKEND; + return KErrNone; + } +