X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-ControlImpl.cpp;h=a3ed82705955743c265124a5770751126eb1bd74;hp=d1f6925edf444fbdff2b0ddf801ffaa509e804af;hb=ca99959003c0445d5afb437e2be26361dff51623;hpb=2b2e29847f9b8a544f0629db0285347ad07b6994 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ControlImpl.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ControlImpl.cpp index d1f6925..a3ed827 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ControlImpl.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ControlImpl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 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. @@ -25,16 +25,12 @@ #include #include +#include #include #include -#include -#include -#include -#include #include #include -#include #include "dummy-control.h" @@ -76,19 +72,19 @@ int UtcDaliControlImplEnableGestureDetector(void) DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() ); - dummyImpl.EnableGestureDetection(Gesture::Pinch); + dummyImpl.EnableGestureDetection(GestureType::PINCH); DALI_TEST_CHECK( dummyImpl.GetPinchGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() ); - dummyImpl.EnableGestureDetection(Gesture::Pan); + dummyImpl.EnableGestureDetection(GestureType::PAN); DALI_TEST_CHECK( dummyImpl.GetPanGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() ); - dummyImpl.EnableGestureDetection(Gesture::Tap); + dummyImpl.EnableGestureDetection(GestureType::TAP); DALI_TEST_CHECK( dummyImpl.GetTapGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() ); - dummyImpl.EnableGestureDetection(Gesture::LongPress); + dummyImpl.EnableGestureDetection(GestureType::LONG_PRESS); DALI_TEST_CHECK( dummyImpl.GetLongPressGestureDetector() ); } @@ -102,7 +98,7 @@ int UtcDaliControlImplEnableGestureDetector(void) DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() ); - dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); + dummyImpl.EnableGestureDetection( GestureType::Value(GestureType::PINCH | GestureType::PAN | GestureType::TAP | GestureType::LONG_PRESS) ); DALI_TEST_CHECK( dummyImpl.GetPinchGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetPanGestureDetector() ); @@ -111,7 +107,7 @@ int UtcDaliControlImplEnableGestureDetector(void) // Enable when already enabled - dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); + dummyImpl.EnableGestureDetection( GestureType::Value(GestureType::PINCH | GestureType::PAN | GestureType::TAP | GestureType::LONG_PRESS) ); DALI_TEST_CHECK( dummyImpl.GetPinchGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetPanGestureDetector() ); @@ -130,22 +126,22 @@ int UtcDaliControlImplDisableGestureDetector(void) DummyControl dummy = DummyControl::New(); DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); - dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); + dummyImpl.EnableGestureDetection( GestureType::Value(GestureType::PINCH | GestureType::PAN | GestureType::TAP | GestureType::LONG_PRESS) ); DALI_TEST_CHECK( dummyImpl.GetPinchGestureDetector() ); - dummyImpl.DisableGestureDetection(Gesture::Pinch); + dummyImpl.DisableGestureDetection(GestureType::PINCH); DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetPanGestureDetector() ); - dummyImpl.DisableGestureDetection(Gesture::Pan); + dummyImpl.DisableGestureDetection(GestureType::PAN); DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetTapGestureDetector() ); - dummyImpl.DisableGestureDetection(Gesture::Tap); + dummyImpl.DisableGestureDetection(GestureType::TAP); DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetLongPressGestureDetector() ); - dummyImpl.DisableGestureDetection(Gesture::LongPress); + dummyImpl.DisableGestureDetection(GestureType::LONG_PRESS); DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() ); } @@ -154,14 +150,14 @@ int UtcDaliControlImplDisableGestureDetector(void) DummyControl dummy = DummyControl::New(); DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); - dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); + dummyImpl.EnableGestureDetection( GestureType::Value(GestureType::PINCH | GestureType::PAN | GestureType::TAP | GestureType::LONG_PRESS) ); DALI_TEST_CHECK( dummyImpl.GetPinchGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetPanGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetTapGestureDetector() ); DALI_TEST_CHECK( dummyImpl.GetLongPressGestureDetector() ); - dummyImpl.DisableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); + dummyImpl.DisableGestureDetection( GestureType::Value(GestureType::PINCH | GestureType::PAN | GestureType::TAP | GestureType::LONG_PRESS) ); DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() ); @@ -179,7 +175,7 @@ int UtcDaliControlImplDisableGestureDetector(void) DALI_TEST_CHECK( !dummyImpl.GetTapGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetLongPressGestureDetector() ); - dummyImpl.DisableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); + dummyImpl.DisableGestureDetection( GestureType::Value(GestureType::PINCH | GestureType::PAN | GestureType::TAP | GestureType::LONG_PRESS) ); DALI_TEST_CHECK( !dummyImpl.GetPinchGestureDetector() ); DALI_TEST_CHECK( !dummyImpl.GetPanGestureDetector() ); @@ -192,24 +188,24 @@ int UtcDaliControlImplDisableGestureDetector(void) DummyControl dummy = DummyControl::New(); DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); - dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); + dummyImpl.EnableGestureDetection( GestureType::Value(GestureType::PINCH | GestureType::PAN | GestureType::TAP | GestureType::LONG_PRESS) ); PinchGestureDetector pinch = dummyImpl.GetPinchGestureDetector(); PanGestureDetector pan = dummyImpl.GetPanGestureDetector(); TapGestureDetector tap = dummyImpl.GetTapGestureDetector(); LongPressGestureDetector longPress = dummyImpl.GetLongPressGestureDetector(); - DALI_TEST_EQUALS( pinch.GetAttachedActors().empty(), false, TEST_LOCATION ); - DALI_TEST_EQUALS( pan.GetAttachedActors().empty(), false, TEST_LOCATION ); - DALI_TEST_EQUALS( tap.GetAttachedActors().empty(), false, TEST_LOCATION ); - DALI_TEST_EQUALS( longPress.GetAttachedActors().empty(), false, TEST_LOCATION ); + DALI_TEST_EQUALS( 0 == pinch.GetAttachedActorCount(), false, TEST_LOCATION ); + DALI_TEST_EQUALS( 0 == pan.GetAttachedActorCount(), false, TEST_LOCATION ); + DALI_TEST_EQUALS( 0 == tap.GetAttachedActorCount(), false, TEST_LOCATION ); + DALI_TEST_EQUALS( 0 == longPress.GetAttachedActorCount(), false, TEST_LOCATION ); - dummyImpl.DisableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); + dummyImpl.DisableGestureDetection( GestureType::Value(GestureType::PINCH | GestureType::PAN | GestureType::TAP | GestureType::LONG_PRESS) ); - DALI_TEST_EQUALS( pinch.GetAttachedActors().empty(), true, TEST_LOCATION ); - DALI_TEST_EQUALS( pan.GetAttachedActors().empty(), true, TEST_LOCATION ); - DALI_TEST_EQUALS( tap.GetAttachedActors().empty(), true, TEST_LOCATION ); - DALI_TEST_EQUALS( longPress.GetAttachedActors().empty(), true, TEST_LOCATION ); + DALI_TEST_EQUALS( 0 == pinch.GetAttachedActorCount(), true, TEST_LOCATION ); + DALI_TEST_EQUALS( 0 == pan.GetAttachedActorCount(), true, TEST_LOCATION ); + DALI_TEST_EQUALS( 0 == tap.GetAttachedActorCount(), true, TEST_LOCATION ); + DALI_TEST_EQUALS( 0 == longPress.GetAttachedActorCount(), true, TEST_LOCATION ); } END_TEST; } @@ -221,10 +217,10 @@ int UtcDaliControlImplOnGestureMethods(void) // Check gesture actually happens { DummyControl dummy = DummyControl::New(true); - dummy.SetSize( Vector2(100.0f, 100.0f ) ); + dummy.SetProperty( Actor::Property::SIZE, Vector2(100.0f, 100.0f ) ); - dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(dummy); + dummy.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + application.GetScene().Add(dummy); // Render and notify a couple of times application.SendNotification(); @@ -232,111 +228,36 @@ int UtcDaliControlImplOnGestureMethods(void) application.SendNotification(); application.Render(); - DummyControlImplOverride& dummyImpl = static_cast(dummy.GetImplementation()); - dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); + Impl::DummyControl& dummyImpl = static_cast(dummy.GetImplementation()); + dummyImpl.EnableGestureDetection( GestureType::Value(GestureType::PINCH | GestureType::PAN | GestureType::TAP | GestureType::LONG_PRESS) ); DALI_TEST_CHECK( dummyImpl.pinchCalled == false ); - Integration::PinchGestureEvent pinch(Gesture::Started); - pinch.scale = 10.0f; - pinch.speed = 50.0f; - pinch.centerPoint = Vector2(20.0f, 20.0f); - application.ProcessEvent(pinch); + + TestGeneratePinch(application); + DALI_TEST_CHECK( dummyImpl.pinchCalled == true ); DALI_TEST_CHECK( dummyImpl.panCalled == false ); - Integration::PanGestureEvent pan(Gesture::Possible); - pan.previousPosition = Vector2(10.0f, 20.0f); - pan.currentPosition = Vector2(20.0f, 20.0f); - pan.timeDelta = 10; - pan.numberOfTouches = 1u; - application.ProcessEvent(pan); - pan.state = Gesture::Started; - application.ProcessEvent(pan); + + TestGenerateMiniPan(application); + DALI_TEST_CHECK( dummyImpl.panCalled == true ); DALI_TEST_CHECK( dummyImpl.tapCalled == false ); - Integration::TapGestureEvent tap(Gesture::Possible); - tap.numberOfTaps = 1u; - tap.numberOfTouches = 1u; - tap.point = Vector2(50.0f, 50.0f); - application.ProcessEvent(tap); - tap.state = Gesture::Started; - application.ProcessEvent(tap); - DALI_TEST_CHECK( dummyImpl.tapCalled == true ); - DALI_TEST_CHECK( dummyImpl.longPressCalled == false ); - Integration::LongPressGestureEvent longPress(Gesture::Possible); - longPress.numberOfTouches = 1u; - longPress.point = Vector2(50.0f, 50.0f); - application.ProcessEvent(longPress); - longPress.state = Gesture::Started; - application.ProcessEvent(longPress); - DALI_TEST_CHECK( dummyImpl.longPressCalled == true ); - longPress.state = Gesture::Finished; - application.ProcessEvent(longPress); - - Stage::GetCurrent().Remove(dummy); - } + TestGenerateTap(application); - // Ensure full code coverage - { - DummyControl dummy = DummyControl::New(); - dummy.SetSize( Vector2( 100.0f, 100.0f ) ); - - dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(dummy); + DALI_TEST_CHECK( dummyImpl.tapCalled == true ); - // Render and notify a couple of times - application.SendNotification(); - application.Render(); - application.SendNotification(); - application.Render(); + DALI_TEST_CHECK( dummyImpl.longPressCalled == false ); - DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); - dummyImpl.EnableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) ); + TestGenerateLongPress(application); - DALI_TEST_CHECK( dummy.GetCurrentScale().x != 10.0f ); - Integration::PinchGestureEvent pinch(Gesture::Started); - pinch.scale = 10.0f; - pinch.speed = 50.0f; - pinch.centerPoint = Vector2(20.0f, 20.0f); - application.ProcessEvent(pinch); + DALI_TEST_CHECK( dummyImpl.longPressCalled == true ); - // Render and notify a couple of times - application.SendNotification(); - application.Render(); - application.SendNotification(); - application.Render(); - DALI_TEST_CHECK( dummy.GetCurrentScale().x == 10.0f ); - - Integration::PanGestureEvent pan(Gesture::Possible); - pan.previousPosition = Vector2(10.0f, 20.0f); - pan.currentPosition = Vector2(20.0f, 20.0f); - pan.timeDelta = 10; - pan.numberOfTouches = 1u; - application.ProcessEvent(pan); - pan.state = Gesture::Started; - application.ProcessEvent(pan); - - Integration::TapGestureEvent tap(Gesture::Possible); - tap.numberOfTaps = 1u; - tap.numberOfTouches = 1u; - tap.point = Vector2(50.0f, 50.0f); - application.ProcessEvent(tap); - tap.state = Gesture::Started; - application.ProcessEvent(tap); - - Integration::LongPressGestureEvent longPress(Gesture::Possible); - longPress.numberOfTouches = 1u; - longPress.point = Vector2(50.0f, 50.0f); - application.ProcessEvent(longPress); - longPress.state = Gesture::Started; - application.ProcessEvent(longPress); - longPress.state = Gesture::Finished; - application.ProcessEvent(longPress); - - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } + END_TEST; } @@ -346,15 +267,15 @@ int UtcDaliControlImplChildAddAndRemove(void) { DummyControl dummy = DummyControl::New( true ); - Stage::GetCurrent().Add(dummy); - DummyControlImplOverride& dummyImpl = static_cast(dummy.GetImplementation()); + application.GetScene().Add(dummy); + Impl::DummyControl& dummyImpl = static_cast(dummy.GetImplementation()); application.Render(); application.SendNotification(); DALI_TEST_EQUALS( dummyImpl.childAddCalled, false, TEST_LOCATION ); DALI_TEST_EQUALS( dummy.GetChildCount(), 0u, TEST_LOCATION ); - Actor actor = RenderableActor::New(); + Actor actor = Actor::New(); dummy.Add(actor); DALI_TEST_EQUALS( dummyImpl.childAddCalled, true, TEST_LOCATION ); DALI_TEST_EQUALS( dummy.GetChildCount(), 1u, TEST_LOCATION ); @@ -370,19 +291,19 @@ int UtcDaliControlImplChildAddAndRemove(void) application.Render(); application.SendNotification(); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } // Ensure full code coverage { DummyControl dummy = DummyControl::New(); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); application.Render(); application.SendNotification(); DALI_TEST_EQUALS( dummy.GetChildCount(), 0u, TEST_LOCATION ); - Actor actor = RenderableActor::New(); + Actor actor = Actor::New(); dummy.Add(actor); DALI_TEST_EQUALS( dummy.GetChildCount(), 1u, TEST_LOCATION ); @@ -395,7 +316,7 @@ int UtcDaliControlImplChildAddAndRemove(void) application.Render(); application.SendNotification(); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } END_TEST; } @@ -406,16 +327,16 @@ int UtcDaliControlImplStageConnection(void) { DummyControl dummy = DummyControl::New( true ); - DummyControlImplOverride& dummyImpl = static_cast(dummy.GetImplementation()); + Impl::DummyControl& dummyImpl = static_cast(dummy.GetImplementation()); DALI_TEST_EQUALS( dummyImpl.stageConnectionCalled, false, TEST_LOCATION ); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); application.Render(); application.SendNotification(); DALI_TEST_EQUALS( dummyImpl.stageConnectionCalled, true, TEST_LOCATION ); DALI_TEST_EQUALS( dummyImpl.stageDisconnectionCalled, false, TEST_LOCATION ); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); application.Render(); application.SendNotification(); DALI_TEST_EQUALS( dummyImpl.stageDisconnectionCalled, true, TEST_LOCATION ); @@ -423,19 +344,19 @@ int UtcDaliControlImplStageConnection(void) // Ensure full code coverage { - unsigned int stageChildren = Stage::GetCurrent().GetLayer(0).GetChildCount(); + unsigned int stageChildren = application.GetScene().GetLayer(0).GetChildCount(); DummyControl dummy = DummyControl::New(); - DALI_TEST_EQUALS( Stage::GetCurrent().GetLayer(0).GetChildCount(), stageChildren, TEST_LOCATION ); - Stage::GetCurrent().Add(dummy); + DALI_TEST_EQUALS( application.GetScene().GetLayer(0).GetChildCount(), stageChildren, TEST_LOCATION ); + application.GetScene().Add(dummy); application.Render(); application.SendNotification(); - DALI_TEST_EQUALS( Stage::GetCurrent().GetLayer(0).GetChildCount(), stageChildren + 1, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetScene().GetLayer(0).GetChildCount(), stageChildren + 1, TEST_LOCATION ); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); application.Render(); application.SendNotification(); - DALI_TEST_EQUALS( Stage::GetCurrent().GetLayer(0).GetChildCount(), stageChildren, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetScene().GetLayer(0).GetChildCount(), stageChildren, TEST_LOCATION ); } END_TEST; } @@ -446,25 +367,25 @@ int UtcDaliControlImplSizeSetP(void) { DummyControl dummy = DummyControl::New( true ); - DummyControlImplOverride& dummyImpl = static_cast(dummy.GetImplementation()); + Impl::DummyControl& dummyImpl = static_cast(dummy.GetImplementation()); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); application.Render(); application.SendNotification(); DALI_TEST_EQUALS( dummyImpl.sizeSetCalled, false, TEST_LOCATION ); // Size not set, no onSizeSet called Vector2 size(100.0f, 200.0f); - dummy.SetSize( size ); + dummy.SetProperty( Actor::Property::SIZE, size ); DALI_TEST_EQUALS( dummyImpl.sizeSetCalled, false, TEST_LOCATION ); // Size is going to get negotiated, no onSizeSet called application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( size, dummy.GetCurrentSize().GetVectorXY(), TEST_LOCATION ); + DALI_TEST_EQUALS( size, dummy.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ).GetVectorXY(), TEST_LOCATION ); DALI_TEST_EQUALS( dummyImpl.sizeSetCalled, true, TEST_LOCATION ); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } END_TEST; @@ -476,22 +397,22 @@ int UtcDaliControlImplSizeSet2P(void) { DummyControl dummy = DummyControl::New(); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); Vector2 size(100.0f, 200.0f); - DALI_TEST_CHECK( size != dummy.GetCurrentSize().GetVectorXY() ); + DALI_TEST_CHECK( size != dummy.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ).GetVectorXY() ); application.SendNotification(); application.Render(); - dummy.SetSize(size); + dummy.SetProperty( Actor::Property::SIZE, size); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS(size, dummy.GetCurrentSize().GetVectorXY(), TEST_LOCATION); + DALI_TEST_EQUALS(size, dummy.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ).GetVectorXY(), TEST_LOCATION); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } END_TEST; } @@ -503,9 +424,9 @@ int UtcDaliControlImplSizeAnimation(void) { DummyControl dummy = DummyControl::New( true ); - DummyControlImplOverride& dummyImpl = static_cast(dummy.GetImplementation()); + Impl::DummyControl& dummyImpl = static_cast(dummy.GetImplementation()); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); DALI_TEST_EQUALS( dummyImpl.sizeAnimationCalled, false, TEST_LOCATION ); Animation animation = Animation::New(1.0f); @@ -519,14 +440,14 @@ int UtcDaliControlImplSizeAnimation(void) DALI_TEST_EQUALS( dummyImpl.sizeAnimationCalled, true, TEST_LOCATION ); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } // Ensure full code coverage { DummyControl dummy = DummyControl::New(); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); Animation animation = Animation::New(1.0f); animation.AnimateTo( Property( dummy, Actor::Property::SIZE ), Vector3( 100.0f, 150.0f, 200.0f ) ); @@ -537,125 +458,22 @@ int UtcDaliControlImplSizeAnimation(void) application.Render(); application.SendNotification(); - Stage::GetCurrent().Remove(dummy); - } - END_TEST; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////// - -int UtcDaliControlImplTouchEvent(void) -{ - ToolkitTestApplication application; - - { - DummyControl dummy = DummyControl::New( true ); - DummyControlImplOverride& dummyImpl = static_cast(dummy.GetImplementation()); - - dummy.SetSize( Vector2( 100.0f, 100.0f ) ); - dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(dummy); - - application.Render(); - application.SendNotification(); - application.Render(); - application.SendNotification(); - - DALI_TEST_EQUALS( dummyImpl.touchEventCalled, false, TEST_LOCATION ); - Integration::TouchEvent touchEvent(1); - TouchPoint point(1, TouchPoint::Down, 20.0f, 20.0f); - touchEvent.AddPoint(point); - application.ProcessEvent(touchEvent); - DALI_TEST_EQUALS( dummyImpl.touchEventCalled, true, TEST_LOCATION ); - - Stage::GetCurrent().Remove(dummy); - } - - // Ensure full code coverage - { - DummyControl dummy = DummyControl::New(); - - dummy.SetSize( Vector2( 100.0f, 100.0f ) ); - dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(dummy); - - application.Render(); - application.SendNotification(); - application.Render(); - application.SendNotification(); - - Integration::TouchEvent touchEvent(1); - TouchPoint point(1, TouchPoint::Down, 20.0f, 20.0f); - touchEvent.AddPoint(point); - application.ProcessEvent(touchEvent); - - Stage::GetCurrent().Remove(dummy); - } - END_TEST; -} - -int UtcDaliControlImplHoverEvent(void) -{ - ToolkitTestApplication application; - - { - DummyControl dummy = DummyControl::New( true ); - DummyControlImplOverride& dummyImpl = static_cast(dummy.GetImplementation()); - - dummy.SetSize( Vector2( 100.0f, 100.0f ) ); - dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(dummy); - - application.Render(); - application.SendNotification(); - application.Render(); - application.SendNotification(); - - DALI_TEST_EQUALS( dummyImpl.hoverEventCalled, false, TEST_LOCATION ); - Integration::HoverEvent event(1); - TouchPoint point( 1, TouchPoint::Motion, 20.0f, 20.0f ); - event.AddPoint( point ); - application.ProcessEvent( event ); - DALI_TEST_EQUALS( dummyImpl.hoverEventCalled, true, TEST_LOCATION ); - - Stage::GetCurrent().Remove(dummy); - } - - // Ensure full code coverage - { - DummyControl dummy = DummyControl::New(); - - dummy.SetSize( Vector2( 100.0f, 100.0f ) ); - dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(dummy); - - application.Render(); - application.SendNotification(); - application.Render(); - application.SendNotification(); - - Integration::HoverEvent event(1); - TouchPoint point( 1, TouchPoint::Motion, 20.0f, 20.0f ); - event.AddPoint( point ); - application.ProcessEvent( event ); - - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } END_TEST; } /////////////////////////////////////////////////////////////////////////////////////////////////// - int UtcDaliControlImplKeyEvent(void) { ToolkitTestApplication application; { DummyControl dummy = DummyControl::New( true ); - DummyControlImplOverride& dummyImpl = static_cast(dummy.GetImplementation()); + Impl::DummyControl& dummyImpl = static_cast(dummy.GetImplementation()); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); dummy.SetKeyInputFocus(); application.Render(); @@ -668,14 +486,14 @@ int UtcDaliControlImplKeyEvent(void) application.ProcessEvent(keyEvent); DALI_TEST_EQUALS( dummyImpl.keyEventCalled, true, TEST_LOCATION ); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } // Ensure full code coverage { DummyControl dummy = DummyControl::New(); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); dummy.SetKeyInputFocus(); application.Render(); @@ -686,7 +504,7 @@ int UtcDaliControlImplKeyEvent(void) Integration::KeyEvent keyEvent; application.ProcessEvent(keyEvent); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } END_TEST; } @@ -697,9 +515,9 @@ int UtcDaliControlImplKeyInputFocusGained(void) { DummyControl dummy = DummyControl::New( true ); - DummyControlImplOverride& dummyImpl = static_cast(dummy.GetImplementation()); + Impl::DummyControl& dummyImpl = static_cast(dummy.GetImplementation()); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); DALI_TEST_EQUALS( dummyImpl.keyInputFocusGained, false, TEST_LOCATION ); @@ -707,16 +525,16 @@ int UtcDaliControlImplKeyInputFocusGained(void) DALI_TEST_EQUALS( dummyImpl.keyInputFocusGained, true, TEST_LOCATION ); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } // Ensure full code coverage { DummyControl dummy = DummyControl::New(); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); dummy.SetKeyInputFocus(); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } END_TEST; } @@ -727,9 +545,9 @@ int UtcDaliControlImplKeyInputFocusLost(void) { DummyControl dummy = DummyControl::New( true ); - DummyControlImplOverride& dummyImpl = static_cast(dummy.GetImplementation()); + Impl::DummyControl& dummyImpl = static_cast(dummy.GetImplementation()); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); DALI_TEST_EQUALS( dummyImpl.keyInputFocusLost, false, TEST_LOCATION ); @@ -738,24 +556,23 @@ int UtcDaliControlImplKeyInputFocusLost(void) DALI_TEST_EQUALS( dummyImpl.keyInputFocusLost, true, TEST_LOCATION ); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } // Ensure full code coverage { DummyControl dummy = DummyControl::New(); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); dummy.SetKeyInputFocus(); dummy.ClearKeyInputFocus(); - DummyControlImplOverride& dummyImpl = static_cast(dummy.GetImplementation()); + Impl::DummyControl& dummyImpl = static_cast(dummy.GetImplementation()); - dummyImpl.OnAccessibilityValueChange( true ); dummyImpl.IsKeyboardNavigationSupported(); dummyImpl.IsKeyboardFocusGroup(); - Stage::GetCurrent().Remove(dummy); + application.GetScene().Remove(dummy); } END_TEST; } @@ -778,169 +595,583 @@ int UtcDaliControlImplTypeRegistry(void) /////////////////////////////////////////////////////////////////////////////////////////////////// -namespace + +int UtcDaliControlImplSetStyleName(void) +{ + ToolkitTestApplication application; + + { + DummyControl dummy = DummyControl::New( true ); + + dummy.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); + dummy.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + application.GetScene().Add(dummy); + + dummy.SetStyleName("TestStyle"); + + DALI_TEST_CHECK( dummy.GetStyleName() == "TestStyle" ); + + application.GetScene().Remove(dummy); + } + END_TEST; +} + +int UtcDaliControlImplOnStyleChangeN(void) { -static bool WheelEventCallback(Actor actor, const WheelEvent& event) + ToolkitTestApplication application; + Control dummy = Control::New(); + Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy ); + + // test that style manager is being used, passing an empty handle does nothing but does not crash either + Dali::Toolkit::StyleManager styleManager; + controlImpl.OnStyleChange( styleManager, StyleChange::THEME_CHANGE ); + // no crash so test passes + tet_result(TET_PASS); + + END_TEST; +} + + +int UtcDaliControlImplOnAccessibilityPanP(void) +{ + ToolkitTestApplication application; + Control dummy = Control::New(); + Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy ); + + PanGesture pan; + DALI_TEST_EQUALS( false, controlImpl.OnAccessibilityPan( pan ), TEST_LOCATION ); + + END_TEST; +} + + +int UtcDaliControlImplOnAccessibilityActivatedP(void) { - return false; + ToolkitTestApplication application; + + Control dummy = Control::New(); + Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy ); + DALI_TEST_EQUALS( false, controlImpl.OnAccessibilityActivated(), TEST_LOCATION ); + + // Invoke the control's activate action + TypeInfo type = TypeRegistry::Get().GetTypeInfo( "Control" ); + DALI_TEST_CHECK( type ); + + BaseHandle handle = type.CreateInstance(); + DALI_TEST_CHECK( handle ); + + Property::Map attributes; + DALI_TEST_EQUALS( false, handle.DoAction("accessibilityActivated", attributes), TEST_LOCATION ); + + END_TEST; } + +int UtcDaliControlImplGetNextKeyboardFocusableActorP(void) +{ + ToolkitTestApplication application; + Control dummy = Control::New(); + Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy ); + + Actor currentFocusedActor; + Actor result = controlImpl.GetNextKeyboardFocusableActor( currentFocusedActor, Control::KeyboardFocus::LEFT, false ); + + DALI_TEST_EQUALS( result, currentFocusedActor, TEST_LOCATION ); + + END_TEST; } -int UtcDaliControlImplWheelEvent(void) +int UtcDaliControlImplRegisterThenReRegisterVisual(void) { ToolkitTestApplication application; - { - DummyControl dummy = DummyControl::New( true ); - DummyControlImplOverride& dummyImpl = static_cast(dummy.GetImplementation()); + DummyControl dummy = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); - dummy.SetSize( Vector2( 100.0f, 100.0f ) ); - dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(dummy); + Property::Index index =1; - dummy.WheelEventSignal().Connect(&WheelEventCallback); + DALI_TEST_CHECK( !dummyImpl.GetVisual( index ) ); - application.Render(); - application.SendNotification(); - application.Render(); - application.SendNotification(); + Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); + Toolkit::Visual::Base visual; - DALI_TEST_EQUALS( dummyImpl.wheelEventCalled, false, TEST_LOCATION ); + Property::Map map; + map[Visual::Property::TYPE] = Visual::COLOR; + map[ColorVisual::Property::MIX_COLOR] = Color::RED; - // simulate a wheel event - Vector2 screenCoordinates( 10.0f, 10.0f ); - Integration::WheelEvent event( Integration::WheelEvent::MOUSE_WHEEL, 0, 0u, screenCoordinates, 1, 1000u ); - application.ProcessEvent( event ); - DALI_TEST_EQUALS( dummyImpl.wheelEventCalled, true, TEST_LOCATION ); + visual = visualFactory.CreateVisual( map ); + DALI_TEST_CHECK(visual); - Stage::GetCurrent().Remove(dummy); - } + // Register index with a color visual + dummyImpl.RegisterVisual( index, visual ); + + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + + Property::Map newMap; + newMap[Visual::Property::TYPE] = Visual::COLOR; + newMap[ColorVisual::Property::MIX_COLOR] = Color::BLUE; + + visual = visualFactory.CreateVisual( newMap ); + DALI_TEST_CHECK(visual); + + // ReRegister with altered color visual + dummyImpl.RegisterVisual( index, visual ); + + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + + tet_result(TET_PASS); + + END_TEST; +} + +int UtcDaliControlImplRegisterVisaulThenReRegisterToSelf(void) +{ + ToolkitTestApplication application; + + DummyControl dummy = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); + + Property::Index index =1; + + Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); + Toolkit::Visual::Base visual; + + Property::Map map; + map[Visual::Property::TYPE] = Visual::COLOR; + map[ColorVisual::Property::MIX_COLOR] = Color::RED; + + visual = visualFactory.CreateVisual( map ); + DALI_TEST_CHECK(visual); + + // Register index with a color visual + dummyImpl.RegisterVisual( index, visual ); + + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + + // ReRegister to self + dummyImpl.RegisterVisual( index, visual ); + + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + + END_TEST; +} + +int UtcDaliControlImplRegisterVisualToSelf(void) +{ + ToolkitTestApplication application; + + Test::ObjectDestructionTracker objectDestructionTracker( application.GetCore().GetObjectRegistry() ); - // Ensure full code coverage { DummyControl dummy = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); + objectDestructionTracker.Start( dummy ); - dummy.SetSize( Vector2( 100.0f, 100.0f ) ); - dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(dummy); + Property::Index index = 1; - dummy.WheelEventSignal().Connect(&WheelEventCallback); + Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); + Toolkit::Visual::Base visual; - application.Render(); - application.SendNotification(); - application.Render(); - application.SendNotification(); + Property::Map map; + map[Visual::Property::TYPE] = Visual::COLOR; + map[ColorVisual::Property::MIX_COLOR] = Color::RED; + + visual = visualFactory.CreateVisual( map ); + DALI_TEST_CHECK(visual); - // simulate a wheel event - Vector2 screenCoordinates( 20.0f, 20.0f ); - Integration::WheelEvent event( Integration::WheelEvent::MOUSE_WHEEL, 0, 0u, screenCoordinates, 1, 1000u ); - application.ProcessEvent( event ); + // Register to self + dummyImpl.RegisterVisual( index, visual ); - Stage::GetCurrent().Remove(dummy); + DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), false, TEST_LOCATION ); // Control not destroyed yet + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); } + + DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), true, TEST_LOCATION ); // Should be destroyed + END_TEST; } -int UtcDaliControlImplSetStyleName(void) +int UtcDaliControlImplRegisterTwoVisuals(void) { ToolkitTestApplication application; - { - DummyControl dummy = DummyControl::New( true ); + DummyControl dummy = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); - dummy.SetSize( Vector2( 100.0f, 100.0f ) ); - dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT); - Stage::GetCurrent().Add(dummy); + Property::Index index =1; + Property::Index index2 =2; - dummy.SetStyleName("TestStyle"); + Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); + Toolkit::Visual::Base visual; + Toolkit::Visual::Base secondVisual; - DALI_TEST_CHECK( dummy.GetStyleName() == "TestStyle" ); + Property::Map map; + map[Visual::Property::TYPE] = Visual::COLOR; + map[ColorVisual::Property::MIX_COLOR] = Color::RED; + + visual = visualFactory.CreateVisual( map ); + DALI_TEST_CHECK(visual); + + // Register index with a color visual + dummyImpl.RegisterVisual( index, visual ); + + Property::Map newMap; + newMap[Visual::Property::TYPE] = Visual::COLOR; + newMap[ColorVisual::Property::MIX_COLOR] = Color::BLUE; + + secondVisual = visualFactory.CreateVisual( newMap ); + DALI_TEST_CHECK( secondVisual ); + + // ReRegister with altered color visual + dummyImpl.RegisterVisual( index2, secondVisual ); + + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + DALI_TEST_CHECK( dummyImpl.GetVisual( index2 ) == secondVisual ); - Stage::GetCurrent().Remove(dummy); - } END_TEST; } -int UtcDaliControlImplOnStyleChangeN(void) +int UtcDaliControlImplRegisterUnregisterVisual(void) { ToolkitTestApplication application; - Control dummy = Control::New(); - Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy ); - // test that style manager is being used, passing an empty handle throws exception - try - { - Dali::Toolkit::StyleManager styleManager; - controlImpl.OnStyleChange( styleManager, StyleChange::THEME_CHANGE ); - tet_result(TET_FAIL); - } - catch (DaliException &exception) - { - tet_result(TET_PASS); - } + DummyControl dummy = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); + + Property::Index index =1; + + Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); + Toolkit::Visual::Base visual; + + Property::Map map; + map[Visual::Property::TYPE] = Visual::COLOR; + map[ColorVisual::Property::MIX_COLOR] = Color::RED; + + visual = visualFactory.CreateVisual( map ); + DALI_TEST_CHECK(visual); + + // Register index with a color visual + dummyImpl.RegisterVisual( index, visual ); + + tet_infoline( "Add control with visual to stage and check renderer count is 1" ); + application.GetScene().Add( dummy ); + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + DALI_TEST_EQUALS( dummy.GetRendererCount(), 1, TEST_LOCATION ); + + // Unregister visual + dummyImpl.UnregisterVisual( index ); + + tet_infoline( "Remove control with visual from stage and check renderer count is 0" ); + application.GetScene().Remove( dummy ); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( dummy.GetRendererCount(), 0, TEST_LOCATION ); + DALI_TEST_CHECK( !dummyImpl.GetVisual( index ) ); END_TEST; } +int UtcDaliControlImplRegisterDisabledVisual(void) +{ + ToolkitTestApplication application; + + DummyControl dummy = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); -int UtcDaliControlImplOnAccessibilityPanP(void) + Property::Index TEST_PROPERTY =1; + + Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); + Toolkit::Visual::Base visual; + + Property::Map map; + map[Visual::Property::TYPE] = Visual::COLOR; + map[ColorVisual::Property::MIX_COLOR] = Color::RED; + + visual = visualFactory.CreateVisual( map ); + DALI_TEST_CHECK(visual); + + // Register index with a color visual + dummyImpl.RegisterVisual( TEST_PROPERTY, visual, false ); + + DALI_TEST_CHECK( dummyImpl.GetVisual( TEST_PROPERTY ) == visual ); + DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == false ); + + application.GetScene().Add(dummy); + + // Render and notify + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == false ); + + DALI_TEST_CHECK( dummy.GetProperty< bool >( Actor::Property::CONNECTED_TO_SCENE ) == true ); + + dummyImpl.EnableVisual( TEST_PROPERTY, true ); + + DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == true ); + + END_TEST; +} + +int UtcDaliControlImplDisableRegisteredVisual(void) { ToolkitTestApplication application; - Control dummy = Control::New(); - Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy ); - PanGesture pan; - DALI_TEST_EQUALS( false, controlImpl.OnAccessibilityPan( pan ), TEST_LOCATION ); + DummyControl dummy = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); + + Property::Index TEST_PROPERTY =1; + + Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); + Toolkit::Visual::Base visual; + + Property::Map map; + map[Visual::Property::TYPE] = Visual::COLOR; + map[ColorVisual::Property::MIX_COLOR] = Color::RED; + + visual = visualFactory.CreateVisual( map ); + DALI_TEST_CHECK(visual); + + // Register index with a color visual + dummyImpl.RegisterVisual( TEST_PROPERTY, visual ); + + application.GetScene().Add(dummy); + + // Render and notify + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == true); + + DALI_TEST_CHECK( dummy.GetProperty< bool >( Actor::Property::CONNECTED_TO_SCENE ) == true ); + + dummyImpl.EnableVisual( TEST_PROPERTY, false ); + + DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == false ); END_TEST; } -int UtcDaliControlImplOnAccessibilityTouchP(void) +int UtcDaliControlImplEnabledVisualParentRemovedFromStage(void) { + // Visual enabled but then parent removed from stage, test ensures visual/renderer are also removed from stage. + // Then adding parent back to stage should automatically put visual/renderer back + ToolkitTestApplication application; - Control dummy = Control::New(); - Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy ); - TouchEvent touch; - DALI_TEST_EQUALS( false, controlImpl.OnAccessibilityTouch( touch ), TEST_LOCATION ); + + DummyControl dummy = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); + + Property::Index TEST_PROPERTY =1; + + Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); + Toolkit::Visual::Base visual; + + Property::Map map; + map[Visual::Property::TYPE] = Visual::COLOR; + map[ColorVisual::Property::MIX_COLOR] = Color::RED; + + visual = visualFactory.CreateVisual( map ); + DALI_TEST_CHECK(visual); + + // Register index with a color visual + dummyImpl.RegisterVisual( TEST_PROPERTY, visual, false ); + + application.GetScene().Add(dummy); + // Render and notify + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == false ); + DALI_TEST_CHECK( dummy.GetProperty< bool >( Actor::Property::CONNECTED_TO_SCENE ) == true ); + dummyImpl.EnableVisual( TEST_PROPERTY, true ); + + // Render and notify + application.SendNotification(); + application.Render(); + DALI_TEST_CHECK( dummy.GetRendererCount() == 1u ); + + // Remove control from stage, visual should be removed from stage too + application.GetScene().Remove(dummy); + // Render and notify + application.SendNotification(); + application.Render(); + DALI_TEST_CHECK( dummy.GetRendererCount() == 0u ); + + application.GetScene().Add(dummy); + // Render and notify + application.SendNotification(); + application.Render(); + DALI_TEST_CHECK( dummy.GetRendererCount() == 1u ); + + DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY ) == true ); END_TEST; } -int UtcDaliControlImplOnAccessibilityActivatedP(void) +int UtcDaliControlImplRegisterTwoVisualsAndEnableOnlyOne(void) { + // Register 2 visuals and enable by default + // Disable 1 visual + // Remove control from stage then put it back + // Check that only 1 visual/renderer is staged. + ToolkitTestApplication application; - Control dummy = Control::New(); - Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy ); - DALI_TEST_EQUALS( false, controlImpl.OnAccessibilityActivated(), TEST_LOCATION ); + DummyControl dummy = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); - // Invoke the control's activate action - TypeInfo type = TypeRegistry::Get().GetTypeInfo( "Control" ); - DALI_TEST_CHECK( type ); + Property::Index TEST_PROPERTY1 =1; + Property::Index TEST_PROPERTY2 =2; - BaseHandle handle = type.CreateInstance(); - DALI_TEST_CHECK( handle ); + Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); + Toolkit::Visual::Base visual1; + Toolkit::Visual::Base visual2; + + Property::Map map; + map[Visual::Property::TYPE] = Visual::COLOR; + map[ColorVisual::Property::MIX_COLOR] = Color::RED; + + Property::Map map2; + map[Visual::Property::TYPE] = Visual::COLOR; + map[ColorVisual::Property::MIX_COLOR] = Color::BLUE; - std::vector attributes; - DALI_TEST_EQUALS( false, handle.DoAction("control-activated", attributes), TEST_LOCATION ); + visual1 = visualFactory.CreateVisual( map ); + DALI_TEST_CHECK(visual1); + + visual2 = visualFactory.CreateVisual( map ); + DALI_TEST_CHECK(visual2); + + // Register index with a color visual + dummyImpl.RegisterVisual( TEST_PROPERTY1, visual1 ); + // Register second index with a color visual + dummyImpl.RegisterVisual( TEST_PROPERTY2, visual2 ); + + application.GetScene().Add(dummy); + // Render and notify + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK( dummy.GetRendererCount() == 2u ); + DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY1 ) == true ); + DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY1 ) == true); + DALI_TEST_CHECK( dummy.GetProperty< bool >( Actor::Property::CONNECTED_TO_SCENE ) == true ); + dummyImpl.EnableVisual( TEST_PROPERTY2, false ); + + // Render and notify + application.SendNotification(); + application.Render(); + DALI_TEST_CHECK( dummy.GetRendererCount() == 1u ); + + // Remove control from stage, visual should be removed from stage too + application.GetScene().Remove(dummy); + // Render and notify + application.SendNotification(); + application.Render(); + DALI_TEST_CHECK( dummy.GetRendererCount() == 0u ); + + application.GetScene().Add(dummy); + // Render and notify + application.SendNotification(); + application.Render(); + DALI_TEST_CHECK( dummy.GetRendererCount() == 1u ); + + DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY1 ) == true ); + DALI_TEST_CHECK( dummyImpl.IsVisualEnabled( TEST_PROPERTY2 ) == false ); END_TEST; } +int UtcDaliControlImplAutoClippingWithVisuals(void) +{ + ToolkitTestApplication application; -int UtcDaliControlImplGetNextKeyboardFocusableActorP(void) + tet_infoline( "Test to ensure a renderer does NOT get added when we've already registered a visual which we haven't enabled" ); + + DummyControl control = DummyControl::New(); + DummyControlImpl& controlImpl = static_cast( control.GetImplementation() ); + + Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); + Toolkit::Visual::Base visual; + Property::Map map; + map[Visual::Property::TYPE] = Visual::COLOR; + map[ColorVisual::Property::MIX_COLOR] = Color::RED; + visual = visualFactory.CreateVisual( map ); + DALI_TEST_CHECK(visual); + controlImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual, false ); + + DALI_TEST_EQUALS( 0, control.GetRendererCount(), TEST_LOCATION ); + + control.SetProperty( Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN ); + + application.GetScene().Add( control ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( 0, control.GetRendererCount(), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliControlImplAutoClippingWithVisualsAlreadyOnStage(void) { ToolkitTestApplication application; - Control dummy = Control::New(); - Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy ); - Actor currentFocusedActor; - Actor result = controlImpl.GetNextKeyboardFocusableActor( currentFocusedActor, Control::KeyboardFocus::LEFT, false ); + tet_infoline( "Test to ensure a renderer does NOT get added when we've already registered a visual which we haven't enabled and we're already on the stage" ); - DALI_TEST_EQUALS( result, currentFocusedActor, TEST_LOCATION ); + DummyControl control = DummyControl::New(); + DummyControlImpl& controlImpl = static_cast( control.GetImplementation() ); + + Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); + Toolkit::Visual::Base visual; + Property::Map map; + map[Visual::Property::TYPE] = Visual::COLOR; + map[ColorVisual::Property::MIX_COLOR] = Color::RED; + visual = visualFactory.CreateVisual( map ); + DALI_TEST_CHECK(visual); + controlImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual, false ); + + DALI_TEST_EQUALS( 0, control.GetRendererCount(), TEST_LOCATION ); + + application.GetScene().Add( control ); + + application.SendNotification(); + application.Render(); + + control.SetProperty( Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( 0, control.GetRendererCount(), TEST_LOCATION ); END_TEST; } +int UtcDaliControlImplOnPinch(void) +{ + ToolkitTestApplication application; + + Control control = Control::New(); + control.SetProperty( Actor::Property::SIZE, Vector2( 100.0f, 100.0f ) ); + control.SetProperty( Actor::Property::ANCHOR_POINT,AnchorPoint::TOP_LEFT); + application.GetScene().Add(control); + application.SendNotification(); + application.Render(); + Toolkit::Internal::Control& impl = Toolkit::Internal::GetImplementation(control); + impl.EnableGestureDetection(GestureType::PINCH); + // Scale becomes 0.6666666 + TestStartPinch( application, Vector2( 5.0f, 20.0f ), Vector2( 35.0f, 20.0f ), + Vector2( 10.0f, 20.0f ), Vector2( 30.0f, 20.0f ), 100 ); + + DALI_TEST_EQUALS(0.666f, control.GetProperty( Actor::Property::SCALE_X).Get(), 0.01f, TEST_LOCATION); + + END_TEST; + +}