author | Gareth Stockwell <gareth.stockwell@accenture.com> |
Fri, 22 Oct 2010 11:38:29 +0100 | |
branch | bug235_bringup_0 |
changeset 206 | c170e304623f |
parent 0 | 5d03bc08d59c |
permissions | -rw-r--r-- |
// Copyright (c) 2008-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: // Advanced pointer event unit tests // // /** @file @test @internalComponent - Internal Symbian test code */ #include "tadvancedpointerevent.h" CTAdvancedPointerEvent::CTAdvancedPointerEvent(CTestStep* aStep) : CTWsGraphicsBase(aStep) {} CTAdvancedPointerEvent::~CTAdvancedPointerEvent() {} void CTAdvancedPointerEvent::TestPointerEventInit() { // Test size of class with hard coded values to prevent regression failure TEST(sizeof(TPointerEvent) == 24); TPointerEvent ptrEvent1 = TPointerEvent(); ptrEvent1.iType = TPointerEvent::EButton1Down; TPoint initCoords(10,10); ptrEvent1.iPosition = initCoords; ptrEvent1.iParentPosition = initCoords; ptrEvent1.iModifiers = 0; // Construct two TPointerEvent objects. The first using default constructor, the second using the copy constructor. T { TPointerEvent ptrEvent2 = TPointerEvent(ptrEvent1); TEST(0==Mem::Compare(reinterpret_cast<TUint8*>(&ptrEvent1),sizeof(TPointerEvent),reinterpret_cast<TUint8*>(&ptrEvent2),sizeof(TPointerEvent))); } { TPointerEvent ptrEvent2(TPointerEvent::EButton1Down, 0, initCoords, initCoords); TEST(0==Mem::Compare(reinterpret_cast<TUint8*>(&ptrEvent1),sizeof(TPointerEvent),reinterpret_cast<TUint8*>(&ptrEvent2),sizeof(TPointerEvent))); } } void AdvancedPointerInit(TWsEvent& aEvent1, TWsEvent& aEvent2, const TPointerEvent::TType aType, const TPoint3D& aPoint3D, const TUint8 aPointerNumber) { // init first event TAdvancedPointerEvent& ptrEvent = *aEvent1.Pointer(); ptrEvent.iType = aType; ptrEvent.iModifiers = EModifierAdvancedPointerEvent; // done implicitly by TAdvancedPointerEvent::Init method ptrEvent.iPosition.iX = aPoint3D.iX; ptrEvent.iPosition.iY = aPoint3D.iY; aEvent1.SetPointerNumber(aPointerNumber); aEvent1.SetPointerZ(aPoint3D.iZ); // init 2nd event aEvent2.InitAdvancedPointerEvent(aType,0,aPoint3D,aPointerNumber); } void CTAdvancedPointerEvent::TestAdvancedPointerInit() { // Test size of class with hard coded values to prevent regression failure TEST(sizeof(TAdvancedPointerEvent) == 32); TWsEvent event1; TWsEvent event2; // low value coords, lowest value event type { TPoint3D point3D(1,2,3); AdvancedPointerInit(event1, event2, TPointerEvent::EButton1Down, point3D, 1); } TEST(0==Mem::Compare(reinterpret_cast<TUint8*>(&event1),sizeof(TWsEvent),reinterpret_cast<TUint8*>(&event2),sizeof(TWsEvent))); // high value coords, highest value event type and pointer number { TPoint3D point3D(KMaxTInt, KMaxTInt-1, KMaxTInt-3); AdvancedPointerInit(event1, event2, TPointerEvent::EOutOfRange, point3D, KMaxTUint8); } TEST(0==Mem::Compare(reinterpret_cast<TUint8*>(&event1),sizeof(TWsEvent),reinterpret_cast<TUint8*>(&event2),sizeof(TWsEvent))); // high negative value coords, highest value event type and pointer number { TPoint3D point3D(KMinTInt, KMinTInt+1, KMinTInt+3); AdvancedPointerInit(event1, event2, TPointerEvent::EOutOfRange, point3D, KMaxTUint8); } TEST(0==Mem::Compare(reinterpret_cast<TUint8*>(&event1),sizeof(TWsEvent),reinterpret_cast<TUint8*>(&event2),sizeof(TWsEvent))); } void CTAdvancedPointerEvent::TestAdvancedPointerGetPointerId() { TWsEvent event; TAdvancedPointerEvent& ptrEvent = *event.Pointer(); const TPoint3D point3D(1,2,3); const TUint8 MaxLikelyCommonPointerNumber = 10; // Likely Common Values TUint8 pointerNumber = 0; for(;pointerNumber<=MaxLikelyCommonPointerNumber;pointerNumber++) { event.InitAdvancedPointerEvent(TPointerEvent::EMove,0,point3D,pointerNumber); TEST(ptrEvent.PointerNumber()==pointerNumber); } // mid-range value pointerNumber = 127; event.InitAdvancedPointerEvent(TPointerEvent::EMove,0,point3D,pointerNumber); TEST(ptrEvent.PointerNumber()==pointerNumber); // highest value pointerNumber = 255; // KMaxTUint8 is there was one defined. event.InitAdvancedPointerEvent(TPointerEvent::EMove,0,point3D,pointerNumber); TEST(ptrEvent.PointerNumber()==pointerNumber); } /** helper method for TestAdvancedPointerGetPressureAndProximity() */ void CTAdvancedPointerEvent::TestAdvancedPointerGetPressureAndProximity(const TPoint3D aPoint3D) { TWsEvent event; event.InitAdvancedPointerEvent(TPointerEvent::EMove, 0, aPoint3D, 0); TAdvancedPointerEvent ptrEvent = *event.Pointer(); const TPoint3D positionAndPressure3D = ptrEvent.PositionAndPressure3D(); TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&aPoint3D),sizeof(TPoint3D),reinterpret_cast<TUint8 const*>(&positionAndPressure3D),sizeof(TPoint3D))); TInt proximityAndPressure = ptrEvent.ProximityAndPressure(); TEST(aPoint3D.iZ==proximityAndPressure); } void CTAdvancedPointerEvent::TestAdvancedPointerGetPressureAndProximity() { { // middle value TPoint3D point3D(0,0,0); TestAdvancedPointerGetPressureAndProximity(point3D); } { // Typical value TPoint3D point3D(10,9,8); TestAdvancedPointerGetPressureAndProximity(point3D); } { // Typical value TPoint3D point3D(10,9,-8); TestAdvancedPointerGetPressureAndProximity(point3D); } { // max values TPoint3D point3D(KMaxTInt-2,KMaxTInt-1,KMaxTInt); TestAdvancedPointerGetPressureAndProximity(point3D); } { // min values TPoint3D point3D(KMinTInt+2,KMinTInt+1,KMinTInt); TestAdvancedPointerGetPressureAndProximity(point3D); } } void CTAdvancedPointerEvent::TestAdvancedPointerGetPressure() { { // middle value const TPoint3D point3D(0,0,0); TWsEvent event; event.InitAdvancedPointerEvent(TPointerEvent::EMove, 0, point3D, 0); TAdvancedPointerEvent ptrEvent = *event.Pointer(); const TPoint3D pressure3D = ptrEvent.Pressure3D(); TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&point3D),sizeof(TPoint3D),reinterpret_cast<TUint8 const*>(&pressure3D),sizeof(TPoint3D))); TInt pressure = ptrEvent.Pressure(); TEST(point3D.iZ==pressure); } { // Typical value const TPoint3D point3D(10,9,8); TWsEvent event; event.InitAdvancedPointerEvent(TPointerEvent::EMove, 0, point3D, 0); TAdvancedPointerEvent ptrEvent = *event.Pointer(); const TPoint3D pressure3D = ptrEvent.Pressure3D(); TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&point3D),sizeof(TPoint3D),reinterpret_cast<TUint8 const*>(&pressure3D),sizeof(TPoint3D))); TInt pressure = ptrEvent.Pressure(); TEST(point3D.iZ==pressure); } { // max value const TPoint3D point3D(KMaxTInt-2,KMaxTInt-1,KMaxTInt); TWsEvent event; event.InitAdvancedPointerEvent(TPointerEvent::EMove, 0, point3D, 0); TAdvancedPointerEvent ptrEvent = *event.Pointer(); const TPoint3D pressure3D = ptrEvent.Pressure3D(); TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&point3D),sizeof(TPoint3D),reinterpret_cast<TUint8 const*>(&pressure3D),sizeof(TPoint3D))); TInt pressure = ptrEvent.Pressure(); TEST(point3D.iZ==pressure); } { // min value TPoint3D point3D(KMinTInt+2,KMinTInt+1,KMinTInt); TWsEvent event; event.InitAdvancedPointerEvent(TPointerEvent::EMove, 0, point3D, 0); TAdvancedPointerEvent ptrEvent = *event.Pointer(); const TPoint3D pressure3D = ptrEvent.Pressure3D(); point3D.iZ=0; // pressure can't be negative TEST(0==Mem::Compare(reinterpret_cast<TUint8*>(&point3D),sizeof(TPoint3D),reinterpret_cast<TUint8 const*>(&pressure3D),sizeof(TPoint3D))); TInt pressure = ptrEvent.Pressure(); TEST(0==pressure); } } void CTAdvancedPointerEvent::TestAdvancedPointerGetPosition() { { // middle value const TPoint3D point3D(0,0,0); TWsEvent event; event.InitAdvancedPointerEvent(TPointerEvent::EMove, 0, point3D, 0); TAdvancedPointerEvent ptrEvent = *event.Pointer(); const TPoint3D position3D = ptrEvent.Position3D(); TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&point3D),sizeof(TPoint3D),reinterpret_cast<TUint8 const*>(&position3D),sizeof(TPoint3D))); TInt proximity = ptrEvent.Proximity(); TEST(point3D.iZ==proximity); } { // typical value const TPoint3D point3D(10,9,-8); TWsEvent event; event.InitAdvancedPointerEvent(TPointerEvent::EMove, 0, point3D, 0); TAdvancedPointerEvent ptrEvent = *event.Pointer(); const TPoint3D position3D = ptrEvent.Position3D(); TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&point3D),sizeof(TPoint3D),reinterpret_cast<TUint8 const*>(&position3D),sizeof(TPoint3D))); TInt proximity = ptrEvent.Proximity(); TEST(point3D.iZ==proximity); } { // highest value TPoint3D point3D(KMaxTInt-2,KMaxTInt-1,KMaxTInt); TWsEvent event; event.InitAdvancedPointerEvent(TPointerEvent::EMove, 0, point3D, 0); TAdvancedPointerEvent ptrEvent = *event.Pointer(); const TPoint3D position3D = ptrEvent.Position3D(); point3D.iZ=0; // proximity can't be positive TEST(0==Mem::Compare(reinterpret_cast<TUint8*>(&point3D),sizeof(TPoint3D),reinterpret_cast<TUint8 const*>(&position3D),sizeof(TPoint3D))); TInt proximity = ptrEvent.Proximity(); TEST(0==proximity); } { // lowest value const TPoint3D point3D(KMinTInt+2,KMinTInt+1,KMinTInt); TWsEvent event; event.InitAdvancedPointerEvent(TPointerEvent::EMove, 0, point3D, 0); TAdvancedPointerEvent ptrEvent = *event.Pointer(); const TPoint3D position3D = ptrEvent.Position3D(); TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&point3D),sizeof(TPoint3D),reinterpret_cast<TUint8 const*>(&position3D),sizeof(TPoint3D))); TInt proximity = ptrEvent.Proximity(); TEST(point3D.iZ==proximity); } } void CTAdvancedPointerEvent::TestPointerEventCopying() { TWsEvent event; event.InitAdvancedPointerEvent(TPointerEvent::EMove, 0, TPoint3D(2,3,4),1); TPointerEvent testPointerEvent; testPointerEvent.iModifiers =0; testPointerEvent.iParentPosition=TPoint(0,0); testPointerEvent.iPosition = TPoint(2,3); testPointerEvent.iType=TPointerEvent::EMove; // TPointerEvent to TPointerEvent // Copy Constructor { TPointerEvent* pointerEventPtr = event.Pointer(); TPointerEvent pointerEvent = *pointerEventPtr; TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&pointerEvent),sizeof(TPointerEvent),reinterpret_cast<TUint8 const*>(&testPointerEvent),sizeof(TPointerEvent))); } // Assignment operator { TPointerEvent* pointerEventPtr = event.Pointer(); TPointerEvent pointerEvent; pointerEvent = *pointerEventPtr; TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&pointerEvent),sizeof(TPointerEvent),reinterpret_cast<TUint8 const*>(&testPointerEvent),sizeof(TPointerEvent))); } // TAdvancedPointerEvent to TPointerEvent // Copy Constructor { TAdvancedPointerEvent* advancedPointerEventPtr = event.Pointer(); TPointerEvent pointerEvent = *advancedPointerEventPtr; TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&pointerEvent),sizeof(TPointerEvent),reinterpret_cast<TUint8 const*>(&testPointerEvent),sizeof(TPointerEvent))); } // Assignment operator { TAdvancedPointerEvent* advancedPointerEventPtr = event.Pointer(); TPointerEvent pointerEvent; pointerEvent = *advancedPointerEventPtr; TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&pointerEvent),sizeof(TPointerEvent),reinterpret_cast<TUint8 const*>(&testPointerEvent),sizeof(TPointerEvent))); } // TPointerEvent to TPointerEvent // Copy Method { TPointerEvent* pointerEventPtr = event.Pointer(); TPointerEvent pointerEvent; pointerEvent.Copy(*pointerEventPtr); TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&pointerEvent),sizeof(TPointerEvent),reinterpret_cast<TUint8 const*>(&testPointerEvent),sizeof(TPointerEvent))); } // TAdvancedPointerEvent to TPointerEvent // Copy Constructor { TAdvancedPointerEvent* advancedPointerEventPtr = event.Pointer(); TPointerEvent pointerEvent; pointerEvent.Copy(*advancedPointerEventPtr); TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&pointerEvent),sizeof(TPointerEvent),reinterpret_cast<TUint8 const*>(&testPointerEvent),sizeof(TPointerEvent))); } // Assignment operator { TAdvancedPointerEvent* advancedPointerEventPtr = event.Pointer(); TAdvancedPointerEvent advancedPointerEventPtr2; advancedPointerEventPtr2 = *advancedPointerEventPtr; TEST(0==Mem::Compare(reinterpret_cast<TUint8 const*>(&advancedPointerEventPtr2),sizeof(TAdvancedPointerEvent),reinterpret_cast<TUint8 const*>(event.Pointer()),sizeof(TAdvancedPointerEvent))); } } void CTAdvancedPointerEvent::RunTestCaseL(TInt /*aCurTestCase*/) { _LIT(KTest1,"PointerEventInit"); _LIT(KTest2,"AdvancedPointerEventInit"); _LIT(KTest3,"PointerEventCopying"); _LIT(KTest4,"AdvancedPointerEventGetPointerId"); _LIT(KTest5,"AdvancedPointerEventGetPressureAndProximity"); _LIT(KTest6,"AdvancedPointerEventGetPressure"); _LIT(KTest7,"AdvancedPointerEventGetPosition"); ((CTAdvancedPointerEventStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); switch(++iTest->iState) { case 1: /** @SYMTestCaseID GRAPHICS-WSERV-0542 */ ((CTAdvancedPointerEventStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0542")); iTest->LogSubTest(KTest1); TestPointerEventInit(); break; case 2: /** @SYMTestCaseID GRAPHICS-WSERV-0543 */ ((CTAdvancedPointerEventStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0543")); iTest->LogSubTest(KTest2); TestAdvancedPointerInit(); break; case 3: /** @SYMTestCaseID GRAPHICS-WSERV-0544 */ ((CTAdvancedPointerEventStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0544")); iTest->LogSubTest(KTest3); TestPointerEventCopying(); break; case 4: /** @SYMTestCaseID GRAPHICS-WSERV-0545 */ ((CTAdvancedPointerEventStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0545")); iTest->LogSubTest(KTest4); TestAdvancedPointerGetPointerId(); break; case 5: /** @SYMTestCaseID GRAPHICS-WSERV-0546 */ ((CTAdvancedPointerEventStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0546")); iTest->LogSubTest(KTest5); TestAdvancedPointerGetPressureAndProximity(); break; case 6: /** @SYMTestCaseID GRAPHICS-WSERV-0547 */ ((CTAdvancedPointerEventStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0547")); iTest->LogSubTest(KTest6); TestAdvancedPointerGetPressure(); break; case 7: /** @SYMTestCaseID GRAPHICS-WSERV-0548 */ ((CTAdvancedPointerEventStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0548")); iTest->LogSubTest(KTest7); TestAdvancedPointerGetPosition(); break; default: ((CTAdvancedPointerEventStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); ((CTAdvancedPointerEventStep*)iStep)->CloseTMSGraphicsStep(); TestComplete(); break; } ((CTAdvancedPointerEventStep*)iStep)->RecordTestResultL(); } __WS_CONSTRUCT_STEP__(AdvancedPointerEvent)