diff -r 000000000000 -r bde4ae8d615e os/graphics/windowing/windowserver/test/tauto/tadvancedpointerevent.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/graphics/windowing/windowserver/test/tauto/tadvancedpointerevent.cpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,411 @@ +// 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(&ptrEvent1),sizeof(TPointerEvent),reinterpret_cast(&ptrEvent2),sizeof(TPointerEvent))); + } + + { + TPointerEvent ptrEvent2(TPointerEvent::EButton1Down, 0, initCoords, initCoords); + TEST(0==Mem::Compare(reinterpret_cast(&ptrEvent1),sizeof(TPointerEvent),reinterpret_cast(&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(&event1),sizeof(TWsEvent),reinterpret_cast(&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(&event1),sizeof(TWsEvent),reinterpret_cast(&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(&event1),sizeof(TWsEvent),reinterpret_cast(&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(&aPoint3D),sizeof(TPoint3D),reinterpret_cast(&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(&point3D),sizeof(TPoint3D),reinterpret_cast(&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(&point3D),sizeof(TPoint3D),reinterpret_cast(&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(&point3D),sizeof(TPoint3D),reinterpret_cast(&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(&point3D),sizeof(TPoint3D),reinterpret_cast(&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(&point3D),sizeof(TPoint3D),reinterpret_cast(&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(&point3D),sizeof(TPoint3D),reinterpret_cast(&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(&point3D),sizeof(TPoint3D),reinterpret_cast(&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(&point3D),sizeof(TPoint3D),reinterpret_cast(&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(&pointerEvent),sizeof(TPointerEvent),reinterpret_cast(&testPointerEvent),sizeof(TPointerEvent))); + } + // Assignment operator + { + TPointerEvent* pointerEventPtr = event.Pointer(); + TPointerEvent pointerEvent; + pointerEvent = *pointerEventPtr; + TEST(0==Mem::Compare(reinterpret_cast(&pointerEvent),sizeof(TPointerEvent),reinterpret_cast(&testPointerEvent),sizeof(TPointerEvent))); + } + // TAdvancedPointerEvent to TPointerEvent + // Copy Constructor + { + TAdvancedPointerEvent* advancedPointerEventPtr = event.Pointer(); + TPointerEvent pointerEvent = *advancedPointerEventPtr; + TEST(0==Mem::Compare(reinterpret_cast(&pointerEvent),sizeof(TPointerEvent),reinterpret_cast(&testPointerEvent),sizeof(TPointerEvent))); + } + // Assignment operator + { + TAdvancedPointerEvent* advancedPointerEventPtr = event.Pointer(); + TPointerEvent pointerEvent; + pointerEvent = *advancedPointerEventPtr; + TEST(0==Mem::Compare(reinterpret_cast(&pointerEvent),sizeof(TPointerEvent),reinterpret_cast(&testPointerEvent),sizeof(TPointerEvent))); + } + + // TPointerEvent to TPointerEvent + // Copy Method + { + TPointerEvent* pointerEventPtr = event.Pointer(); + TPointerEvent pointerEvent; + pointerEvent.Copy(*pointerEventPtr); + TEST(0==Mem::Compare(reinterpret_cast(&pointerEvent),sizeof(TPointerEvent),reinterpret_cast(&testPointerEvent),sizeof(TPointerEvent))); + } + + // TAdvancedPointerEvent to TPointerEvent + // Copy Constructor + { + TAdvancedPointerEvent* advancedPointerEventPtr = event.Pointer(); + TPointerEvent pointerEvent; + pointerEvent.Copy(*advancedPointerEventPtr); + TEST(0==Mem::Compare(reinterpret_cast(&pointerEvent),sizeof(TPointerEvent),reinterpret_cast(&testPointerEvent),sizeof(TPointerEvent))); + } + + // Assignment operator + { + TAdvancedPointerEvent* advancedPointerEventPtr = event.Pointer(); + TAdvancedPointerEvent advancedPointerEventPtr2; + advancedPointerEventPtr2 = *advancedPointerEventPtr; + TEST(0==Mem::Compare(reinterpret_cast(&advancedPointerEventPtr2),sizeof(TAdvancedPointerEvent),reinterpret_cast(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)