X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-TouchDataProcessing.cpp;h=99c98269c811c4a02a1a8be23bc3aa8c3e327c24;hb=f329cb924a9525c4e268872c993d66fbec822b97;hp=36e8488735779591a3f357382c18422c86de91e1;hpb=01e2bff4fdf8b6212f71f7e38d87a7bb1ceff14f;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-TouchDataProcessing.cpp b/automated-tests/src/dali/utc-Dali-TouchDataProcessing.cpp old mode 100644 new mode 100755 index 36e8488..99c9826 --- a/automated-tests/src/dali/utc-Dali-TouchDataProcessing.cpp +++ b/automated-tests/src/dali/utc-Dali-TouchDataProcessing.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,6 +50,8 @@ struct TestPoint Vector2 ellipseRadius; float pressure; Degree angle; + Device::Class::Type deviceClass; + Device::Subclass::Type deviceSubclass; TestPoint() : deviceId(-1), state(PointState::FINISHED), radius(0), pressure(0) @@ -139,6 +141,8 @@ struct TouchDataFunctor p.ellipseRadius = touchData.GetEllipseRadius(i); p.pressure = touchData.GetPressure(i); p.angle = touchData.GetAngle(i); + p.deviceClass = touchData.GetDeviceClass(i); + p.deviceSubclass = touchData.GetDeviceSubclass(i); signalData.touchData.points.push_back(p); } @@ -281,6 +285,8 @@ Integration::TouchEvent GenerateSingleTouch( PointState::Type state, const Vecto Integration::Point point; point.SetState( state ); point.SetScreenPosition( screenPosition ); + point.SetDeviceClass( Device::Class::TOUCH ); + point.SetDeviceSubclass( Device::Subclass::NONE ); touchEvent.points.push_back( point ); return touchEvent; } @@ -1526,41 +1532,55 @@ int UtcDaliTouchDataLeaveActorReadded(void) END_TEST; } -int UtcDaliTouchDataStencilNonRenderableActor(void) +int UtcDaliTouchDataClippedActor(void) { TestApplication application; Stage stage = Stage::GetCurrent(); Actor actor = Actor::New(); - actor.SetSize(100.0f, 100.0f); - actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); - stage.Add(actor); + actor.SetSize( 100.0f, 100.0f ); + actor.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + stage.Add( actor ); - Actor stencil = Actor::New(); - stencil.SetSize(50.0f, 50.0f); - stencil.SetAnchorPoint(AnchorPoint::TOP_LEFT); - stencil.SetDrawMode( DrawMode::STENCIL ); - stage.Add(stencil); + Actor clippingActor = Actor::New(); + clippingActor.SetSize( 50.0f, 50.0f ); + clippingActor.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + clippingActor.SetProperty( Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN ); + stage.Add( clippingActor ); - // Render and notify + // Add a child to the clipped region. + Actor clippingChild = Actor::New(); + clippingChild.SetSize( 50.0f, 50.0f ); + clippingChild.SetPosition( 25.0f, 25.0f ); + clippingChild.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + clippingActor.Add( clippingChild ); + + // Render and notify. application.SendNotification(); application.Render(); - // Connect to actor's touched signal + // Connect to actor's touch signal. SignalData data; TouchDataFunctor functor( data ); actor.TouchSignal().Connect( &application, functor ); - // Emit an event within stencil area + // Emit an event within clipped area - no hit. application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ) ); - DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + DALI_TEST_EQUALS( false, data.functorCalled, TEST_LOCATION ); data.Reset(); - // Emit an event outside the stencil area but within the actor area, we should have a hit! + // Emit an event outside the clipped area but within the actor area, we should have a hit. application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 60.0f, 60.0f ) ) ); DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); data.Reset(); + clippingChild.TouchSignal().Connect( &application, functor ); + + // Emit an event inside part of the child which is within the clipped area, we should have a hit. + application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, Vector2( 30.0f, 30.0f ) ) ); + DALI_TEST_EQUALS( true, data.functorCalled, TEST_LOCATION ); + data.Reset(); + END_TEST; } @@ -1958,6 +1978,95 @@ int UtcDaliTouchDataAndEventUsage(void) DALI_TEST_EQUALS( true, touchEventFunctorCalled, TEST_LOCATION ); END_TEST; +} + +int UtcDaliTouchDataGetDeviceAPINegative(void) +{ + TestApplication application; + + Actor actor = Actor::New(); + actor.SetSize(100.0f, 100.0f); + actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); + Stage::GetCurrent().Add(actor); + // Render and notify + application.SendNotification(); + application.Render(); + + // Connect to actor's touched signal + HandleData handleData; + TouchDataHandleFunctor functor( handleData ); + actor.TouchSignal().Connect( &application, functor ); + + Vector2 screenCoordinates( 10.0f, 10.0f ); + Vector2 localCoordinates; + actor.ScreenToLocal( localCoordinates.x, localCoordinates.y, screenCoordinates.x, screenCoordinates.y ); + + // Emit a down signal + application.ProcessEvent( GenerateSingleTouch( PointState::DOWN, screenCoordinates ) ); + TouchData data = handleData.touchData; + DALI_TEST_EQUALS( data.GetDeviceClass( -1 ), Device::Class::NONE, TEST_LOCATION ); + DALI_TEST_EQUALS( data.GetDeviceSubclass( -1 ), Device::Subclass::NONE, TEST_LOCATION ); + END_TEST; } + +int UtcDaliTouchDataGetMouseButtonPositive(void) +{ + TestApplication application; + + Actor actor = Actor::New(); + actor.SetSize(100.0f, 100.0f); + actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); + Stage::GetCurrent().Add(actor); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Connect to actor's touched signal + HandleData handleData; + TouchDataHandleFunctor functor( handleData ); + actor.TouchSignal().Connect( &application, functor ); + + // Emit a down signal with MouseButton + Integration::TouchEvent touchEvent = GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ); + touchEvent.points[ 0 ].SetMouseButton( static_cast< MouseButton::Type >( 3 ) ); + application.ProcessEvent( touchEvent ); + + TouchData data = handleData.touchData; + DALI_TEST_EQUALS( data.GetMouseButton( 0 ), MouseButton::SECONDARY, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliTouchDataGetMouseButtonNagative(void) +{ + TestApplication application; + + Actor actor = Actor::New(); + actor.SetSize(100.0f, 100.0f); + actor.SetAnchorPoint(AnchorPoint::TOP_LEFT); + Stage::GetCurrent().Add(actor); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Connect to actor's touched signal + HandleData handleData; + TouchDataHandleFunctor functor( handleData ); + actor.TouchSignal().Connect( &application, functor ); + + // Emit a down signal with MouseButton + Integration::TouchEvent touchEvent = GenerateSingleTouch( PointState::DOWN, Vector2( 10.0f, 10.0f ) ); + touchEvent.points[ 0 ].SetMouseButton( static_cast< MouseButton::Type >( 2 ) ); + application.ProcessEvent( touchEvent ); + + TouchData data = handleData.touchData; + DALI_TEST_EQUALS( data.GetMouseButton( 0 ), MouseButton::TERTIARY, TEST_LOCATION ); + DALI_TEST_EQUALS( data.GetMouseButton( 3 ), MouseButton::INVALID, TEST_LOCATION ); + + END_TEST; +} +