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-ControlWrapper.cpp;h=f1b934b6055e28d168cfa5c2949a14d0c6e1c328;hp=3ea0786a7c1f329b1fb2bae7bddeadec5cbc20b1;hb=HEAD;hpb=eb3641c5f89d0ad118aff7862b1e7669ea9828d9 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ControlWrapper.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ControlWrapper.cpp index 3ea0786..d346395 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ControlWrapper.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ControlWrapper.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -15,20 +15,23 @@ * */ -#include #include +#include // Need to override adaptor classes for toolkit test harness, so include // test harness headers before dali headers. #include -#include -#include #include -#include +#include #include -#include +#include #include +#include +#include +#include +#include +#include using namespace Dali; using namespace Dali::Toolkit; @@ -48,6 +51,15 @@ void utc_dali_toolkit_control_wrapper_cleanup(void) namespace { bool gOnRelayout = false; + +static bool gKeyInputFocusCallBackCalled; + +static void TestKeyInputFocusCallback(Control control) +{ + tet_infoline(" TestKeyInputFocusCallback"); + + gKeyInputFocusCallBackCalled = true; +} } // namespace /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -57,26 +69,30 @@ namespace Impl struct TestCustomControl : public Toolkit::Internal::ControlWrapper { /** - * Constructor - */ - TestCustomControl() : Toolkit::Internal::ControlWrapper( CustomControlBehaviour( Toolkit::Internal::ControlWrapper::DISABLE_STYLE_CHANGE_SIGNALS | - Toolkit::Internal::ControlWrapper::REQUIRES_KEYBOARD_NAVIGATION_SUPPORT )) , - mDaliProperty( Property::INVALID_INDEX ), - mSizeSet( Vector3::ZERO ), - mTargetSize( Vector3::ZERO ), - mNego( false ), - mDepth( 0u ) + * Constructor + */ + TestCustomControl() + : Toolkit::Internal::ControlWrapper(CustomControlBehaviour(Toolkit::Internal::ControlWrapper::DISABLE_STYLE_CHANGE_SIGNALS | + Toolkit::Internal::ControlWrapper::REQUIRES_KEYBOARD_NAVIGATION_SUPPORT)), + mDaliProperty(Property::INVALID_INDEX), + mSizeSet(Vector3::ZERO), + mTargetSize(Vector3::ZERO), + mNego(false), + mDepth(0u) { } - TestCustomControl(bool nego) : Toolkit::Internal::ControlWrapper( CustomControlBehaviour( Toolkit::Internal::ControlWrapper::DISABLE_STYLE_CHANGE_SIGNALS | - Toolkit::Internal::ControlWrapper::REQUIRES_KEYBOARD_NAVIGATION_SUPPORT ) ), - mDaliProperty( Property::INVALID_INDEX ), - mSizeSet( Vector3::ZERO ), - mTargetSize( Vector3::ZERO ), - mNego( nego ) + TestCustomControl(bool nego) + : Toolkit::Internal::ControlWrapper(CustomControlBehaviour(Toolkit::Internal::ControlWrapper::DISABLE_STYLE_CHANGE_SIGNALS | + Toolkit::Internal::ControlWrapper::REQUIRES_KEYBOARD_NAVIGATION_SUPPORT)), + mDaliProperty(Property::INVALID_INDEX), + mSizeSet(Vector3::ZERO), + mTargetSize(Vector3::ZERO), + mNego(nego), + mDepth(0u) { } + /** * Destructor */ @@ -84,53 +100,59 @@ struct TestCustomControl : public Toolkit::Internal::ControlWrapper { } - void Initialize( const char* name = NULL ) + void Initialize(const char* name = NULL) { - mDaliProperty = Self().RegisterProperty( "Dali", std::string("no"), Property::READ_WRITE ); + mDaliProperty = Self().RegisterProperty("Dali", std::string("no"), Property::READ_WRITE); - OnInitialize( name ); + OnInitialize(name); } - virtual void OnInitialize( const char* name ) {} + using Control::OnInitialize; ///< To tell the compiler that we really do want to overload OnInitialize in this class & were not trying to override it + virtual void OnInitialize(const char* name) + { + } // From Toolkit::Internal::ControlWrapper - virtual void OnStageConnection( int depth ) + virtual void OnSceneConnection(int depth) { mDepth = depth; + Control::OnSceneConnection(depth); } - virtual void OnStageDisconnection() + virtual void OnSceneDisconnection() { + Control::OnSceneDisconnection(); } - virtual void OnChildAdd( Actor& child ) + virtual void OnChildAdd(Actor& child) { + Control::OnChildAdd(child); } - virtual void OnChildRemove( Actor& child ) + virtual void OnChildRemove(Actor& child) { + Control::OnChildRemove(child); } - virtual void OnPropertySet( Property::Index index, Property::Value propertyValue ) + virtual void OnPropertySet(Property::Index index, const Property::Value& propertyValue) { + Control::OnPropertySet(index, propertyValue); } - virtual void OnSizeSet( const Vector3& targetSize ) + virtual void OnSizeSet(const Vector3& targetSize) { mSizeSet = targetSize; + Control::OnSizeSet(targetSize); } - virtual void OnSizeAnimation( Animation& animation, const Vector3& targetSize ) + virtual void OnSizeAnimation(Animation& animation, const Vector3& targetSize) { mTargetSize = targetSize; + Control::OnSizeAnimation(animation, targetSize); } - virtual bool OnTouchEvent( const TouchEvent& event ) - { - return true; - } - virtual bool OnHoverEvent( const HoverEvent& event ) + virtual bool OnHoverEvent(const HoverEvent& event) { return true; } - virtual bool OnWheelEvent( const WheelEvent& event ) + virtual bool OnWheelEvent(const WheelEvent& event) { return true; } - virtual bool OnKeyEvent( const KeyEvent& event ) + virtual bool OnKeyEvent(const KeyEvent& event) { return true; } @@ -142,42 +164,60 @@ struct TestCustomControl : public Toolkit::Internal::ControlWrapper } virtual Vector3 GetNaturalSize() { - return Vector3( 0.0f, 0.0f, 0.0f ); + return Vector3(0.0f, 0.0f, 0.0f); } - virtual float GetHeightForWidth( float width ) + virtual float GetHeightForWidth(float width) { return 0.0f; } - virtual float GetWidthForHeight( float height ) + virtual float GetWidthForHeight(float height) { return 0.0f; } - virtual void OnRelayout( const Vector2& size, RelayoutContainer& container ) + void TestRegisterVisual(Property::Index index, Toolkit::Visual::Base visual) + { + ControlWrapper::RegisterVisual(index, visual); + + VisualIndices::iterator iter = std::find(mRegisteredVisualIndices.begin(), mRegisteredVisualIndices.end(), index); + if(iter == mRegisteredVisualIndices.end()) + { + mRegisteredVisualIndices.push_back(index); + } + } + + virtual void OnRelayout(const Vector2& size, RelayoutContainer& container) { gOnRelayout = true; + + for(VisualIndices::iterator iter = mRegisteredVisualIndices.begin(); iter != mRegisteredVisualIndices.end(); ++iter) + { + Visual::Base visual = GetVisual(*iter); + Property::Map map; // empty map enforces defaults + visual.SetTransformAndSize(map, size); + } } - virtual void OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension ) + virtual void OnSetResizePolicy(ResizePolicy::Type policy, Dimension::Type dimension) { } - virtual void OnCalculateRelayoutSize( Dimension::Type dimension ) + virtual void OnCalculateRelayoutSize(Dimension::Type dimension) { } - virtual float CalculateChildSize( const Dali::Actor& child, Dimension::Type dimension ) + virtual float CalculateChildSize(const Dali::Actor& child, Dimension::Type dimension) { return 0.0f; } - virtual void OnLayoutNegotiated( float size, Dimension::Type dimension ) + virtual void OnLayoutNegotiated(float size, Dimension::Type dimension) { } - virtual bool RelayoutDependentOnChildren( Dimension::Type dimension = Dimension::ALL_DIMENSIONS ) + virtual bool RelayoutDependentOnChildren(Dimension::Type dimension = Dimension::ALL_DIMENSIONS) { return false; } @@ -191,180 +231,187 @@ struct TestCustomControl : public Toolkit::Internal::ControlWrapper RelayoutRequest(); } - float TestGetHeightForWidthBase( float width ) + float TestGetHeightForWidthBase(float width) { - return GetHeightForWidthBase( width ); + return GetHeightForWidthBase(width); } - float TestGetWidthForHeightBase( float height ) + float TestGetWidthForHeightBase(float height) { - return GetWidthForHeightBase( height ); + return GetWidthForHeightBase(height); } - float TestCalculateChildSizeBase( const Dali::Actor& child, Dimension::Type dimension ) + float TestCalculateChildSizeBase(const Dali::Actor& child, Dimension::Type dimension) { - return CalculateChildSizeBase( child, dimension ); + return CalculateChildSizeBase(child, dimension); } - bool TestRelayoutDependentOnChildrenBase( Dimension::Type dimension ) + bool TestRelayoutDependentOnChildrenBase(Dimension::Type dimension) { - return RelayoutDependentOnChildrenBase( dimension ); + return RelayoutDependentOnChildrenBase(dimension); } Property::Index mDaliProperty; - Vector3 mSizeSet; - Vector3 mTargetSize; - bool mNego; - unsigned int mDepth; + Vector3 mSizeSet; + Vector3 mTargetSize; + bool mNego; + unsigned int mDepth; + + typedef std::vector VisualIndices; + VisualIndices mRegisteredVisualIndices; }; -} +} // namespace Impl -static std::string customControlTypeName = "TestCustomControl"; -static TypeRegistration customControl( customControlTypeName, typeid(Dali::Toolkit::Control), NULL ); +static std::string customControlTypeName = "MyTestCustomControl"; +static TypeRegistration customControl(customControlTypeName, typeid(Dali::Toolkit::Control), NULL); int UtcDaliControlWrapperConstructor(void) { - ToolkitTestApplication application; // Exceptions require ToolkitTestApplication + ToolkitTestApplication application; // Exceptions require ToolkitTestApplication + + Toolkit::Internal::ControlWrapper* controlWrapperImpl = new Toolkit::Internal::ControlWrapper(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper; - Toolkit::Internal::ControlWrapper* controlWrapperImpl = new Toolkit::Internal::ControlWrapper( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper; + DALI_TEST_CHECK(!ControlWrapper::DownCast(controlWrapper)); - DALI_TEST_CHECK( !ControlWrapper::DownCast( controlWrapper ) ); + controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); - controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + DALI_TEST_CHECK(ControlWrapper::DownCast(controlWrapper)); - DALI_TEST_CHECK( ControlWrapper::DownCast( controlWrapper ) ); + Dali::TypeInfo typeInfo = DevelCustomActor::GetTypeInfo(controlWrapper); + + DALI_TEST_EQUALS(typeInfo.GetName(), customControlTypeName, TEST_LOCATION); END_TEST; } int UtcDaliControlWrapperDestructor(void) { - TestApplication application; + ToolkitTestApplication application; - ControlWrapper control = ControlWrapper::New( customControlTypeName, *( new Toolkit::Internal::ControlWrapper( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ) ) ); + ControlWrapper control = ControlWrapper::New(customControlTypeName, *(new Toolkit::Internal::ControlWrapper(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT))); - ControlWrapper control2( control ); + ControlWrapper control2(control); - DALI_TEST_CHECK( control ); + DALI_TEST_CHECK(control); control.Reset(); - DALI_TEST_CHECK( !control ); + DALI_TEST_CHECK(!control); - DALI_TEST_CHECK( control2 ); + DALI_TEST_CHECK(control2); control2.Reset(); - DALI_TEST_CHECK( !control2 ); + DALI_TEST_CHECK(!control2); END_TEST; } int UtcDaliControlWrapperRelayoutRequest(void) { - TestApplication application; + ToolkitTestApplication application; - DALI_TEST_EQUALS( gOnRelayout, false, TEST_LOCATION ); + DALI_TEST_EQUALS(gOnRelayout, false, TEST_LOCATION); - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); - Stage::GetCurrent().Add( controlWrapper ); + application.GetScene().Add(controlWrapper); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( gOnRelayout, true, TEST_LOCATION ); + DALI_TEST_EQUALS(gOnRelayout, true, TEST_LOCATION); gOnRelayout = false; controlWrapperImpl->TestRelayoutRequest(); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( gOnRelayout, true, TEST_LOCATION ); + DALI_TEST_EQUALS(gOnRelayout, true, TEST_LOCATION); END_TEST; } int UtcDaliControlWrapperImplGetHeightForWidthBase(void) { - TestApplication application; + ToolkitTestApplication application; - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); float width = 300.0f; - float v = 0.0f; + float v = 0.0f; application.SendNotification(); application.Render(); - v = controlWrapperImpl->TestGetHeightForWidthBase( width ); + v = controlWrapperImpl->TestGetHeightForWidthBase(width); - DALI_TEST_EQUALS( width, v, TEST_LOCATION ); + DALI_TEST_EQUALS(width, v, TEST_LOCATION); END_TEST; } int UtcDaliControlWrapperGetWidthForHeightBase(void) { - TestApplication application; + ToolkitTestApplication application; - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); float height = 300.0f; - float v = 0.0f; + float v = 0.0f; application.SendNotification(); application.Render(); - v = controlWrapperImpl->TestGetWidthForHeightBase( height ); + v = controlWrapperImpl->TestGetWidthForHeightBase(height); - DALI_TEST_EQUALS( height, v, TEST_LOCATION ); + DALI_TEST_EQUALS(height, v, TEST_LOCATION); END_TEST; } int UtcDaliControlWrapperCalculateChildSizeBase(void) { - TestApplication application; + ToolkitTestApplication application; - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); Actor child = Actor::New(); - child.SetResizePolicy( Dali::ResizePolicy::FIXED, Dali::Dimension::ALL_DIMENSIONS ); - child.SetSize(150, 150); + child.SetResizePolicy(Dali::ResizePolicy::FIXED, Dali::Dimension::ALL_DIMENSIONS); + child.SetProperty(Actor::Property::SIZE, Vector2(150, 150)); application.SendNotification(); application.Render(); float v = 9.99f; - v = controlWrapperImpl->TestCalculateChildSizeBase( child, Dali::Dimension::ALL_DIMENSIONS ); - DALI_TEST_EQUALS( v, 0.0f, TEST_LOCATION ); + v = controlWrapperImpl->TestCalculateChildSizeBase(child, Dali::Dimension::ALL_DIMENSIONS); + DALI_TEST_EQUALS(v, 0.0f, TEST_LOCATION); END_TEST; } int UtcDaliControlWrapperRelayoutDependentOnChildrenBase(void) { - TestApplication application; + ToolkitTestApplication application; - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); bool v = false; - v = controlWrapperImpl->TestRelayoutDependentOnChildrenBase( Dali::Dimension::ALL_DIMENSIONS ); + v = controlWrapperImpl->TestRelayoutDependentOnChildrenBase(Dali::Dimension::ALL_DIMENSIONS); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( v, true, TEST_LOCATION ); + DALI_TEST_EQUALS(v, true, TEST_LOCATION); - controlWrapper.SetResizePolicy( Dali::ResizePolicy::FIXED, Dali::Dimension::ALL_DIMENSIONS ); - v = controlWrapperImpl->TestRelayoutDependentOnChildrenBase( Dali::Dimension::WIDTH ); + controlWrapper.SetResizePolicy(Dali::ResizePolicy::FIXED, Dali::Dimension::ALL_DIMENSIONS); + v = controlWrapperImpl->TestRelayoutDependentOnChildrenBase(Dali::Dimension::WIDTH); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( v, false, TEST_LOCATION ); + DALI_TEST_EQUALS(v, false, TEST_LOCATION); END_TEST; } @@ -373,34 +420,34 @@ int UtcDaliControlWrapperRegisterVisualToSelf(void) { ToolkitTestApplication application; - Test::ObjectDestructionTracker objectDestructionTracker; + Test::ObjectDestructionTracker objectDestructionTracker(application.GetCore().GetObjectRegistry()); { - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); - objectDestructionTracker.Start( controlWrapper ); + objectDestructionTracker.Start(controlWrapper); Property::Index index = 1; Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); - Toolkit::Visual::Base visual; + Toolkit::Visual::Base visual; Property::Map map; - map[Visual::Property::TYPE] = Visual::COLOR; + map[Visual::Property::TYPE] = Visual::COLOR; map[ColorVisual::Property::MIX_COLOR] = Color::RED; - visual = visualFactory.CreateVisual( map ); - DALI_TEST_CHECK( visual ); + visual = visualFactory.CreateVisual(map); + DALI_TEST_CHECK(visual); // Register to self - controlWrapperImpl->RegisterVisual( index, visual ); + controlWrapperImpl->RegisterVisual(index, visual); - DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), false, TEST_LOCATION ); // Control not destroyed yet - DALI_TEST_EQUALS( controlWrapperImpl->GetVisual( index ), visual, TEST_LOCATION ); + DALI_TEST_EQUALS(objectDestructionTracker.IsDestroyed(), false, TEST_LOCATION); // Control not destroyed yet + DALI_TEST_EQUALS(controlWrapperImpl->GetVisual(index), visual, TEST_LOCATION); } - DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), true, TEST_LOCATION ); // Should be destroyed + DALI_TEST_EQUALS(objectDestructionTracker.IsDestroyed(), true, TEST_LOCATION); // Should be destroyed END_TEST; } @@ -409,35 +456,35 @@ int UtcDaliControlWrapperRegisterVisualWithDepthIndexToSelf(void) { ToolkitTestApplication application; - Test::ObjectDestructionTracker objectDestructionTracker; + Test::ObjectDestructionTracker objectDestructionTracker(application.GetCore().GetObjectRegistry()); { - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); - objectDestructionTracker.Start( controlWrapper ); + objectDestructionTracker.Start(controlWrapper); Property::Index index = 1; Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); - Toolkit::Visual::Base visual; + Toolkit::Visual::Base visual; Property::Map map; - map[Visual::Property::TYPE] = Visual::COLOR; + map[Visual::Property::TYPE] = Visual::COLOR; map[ColorVisual::Property::MIX_COLOR] = Color::RED; - visual = visualFactory.CreateVisual( map ); - DALI_TEST_CHECK( visual ); + visual = visualFactory.CreateVisual(map); + DALI_TEST_CHECK(visual); // Register to self - controlWrapperImpl->RegisterVisual( index, visual, 4 ); + controlWrapperImpl->RegisterVisual(index, visual, 4); - DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), false, TEST_LOCATION ); // Control not destroyed yet - DALI_TEST_EQUALS( controlWrapperImpl->GetVisual( index ), visual, TEST_LOCATION ); - DALI_TEST_EQUALS( visual.GetDepthIndex(), 4, TEST_LOCATION ); + DALI_TEST_EQUALS(objectDestructionTracker.IsDestroyed(), false, TEST_LOCATION); // Control not destroyed yet + DALI_TEST_EQUALS(controlWrapperImpl->GetVisual(index), visual, TEST_LOCATION); + DALI_TEST_EQUALS(visual.GetDepthIndex(), 4, TEST_LOCATION); } - DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), true, TEST_LOCATION ); // Should be destroyed + DALI_TEST_EQUALS(objectDestructionTracker.IsDestroyed(), true, TEST_LOCATION); // Should be destroyed END_TEST; } @@ -446,40 +493,40 @@ int UtcDaliControlWrapperRegisterDisabledVisual(void) { ToolkitTestApplication application; - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); Property::Index TEST_PROPERTY = 1; Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); - Toolkit::Visual::Base visual; + Toolkit::Visual::Base visual; Property::Map map; - map[Visual::Property::TYPE] = Visual::COLOR; + map[Visual::Property::TYPE] = Visual::COLOR; map[ColorVisual::Property::MIX_COLOR] = Color::RED; - visual = visualFactory.CreateVisual( map ); + visual = visualFactory.CreateVisual(map); DALI_TEST_CHECK(visual); // Register index with a color visual - controlWrapperImpl->RegisterVisual( TEST_PROPERTY, visual, false ); + controlWrapperImpl->RegisterVisual(TEST_PROPERTY, visual, false); - DALI_TEST_EQUALS( controlWrapperImpl->GetVisual( TEST_PROPERTY ), visual, TEST_LOCATION ); - DALI_TEST_EQUALS( controlWrapperImpl->IsVisualEnabled( TEST_PROPERTY ), false, TEST_LOCATION ); + DALI_TEST_EQUALS(controlWrapperImpl->GetVisual(TEST_PROPERTY), visual, TEST_LOCATION); + DALI_TEST_EQUALS(controlWrapperImpl->IsVisualEnabled(TEST_PROPERTY), false, TEST_LOCATION); - Stage::GetCurrent().Add( controlWrapper ); + application.GetScene().Add(controlWrapper); // Render and notify application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( controlWrapperImpl->IsVisualEnabled( TEST_PROPERTY ), false, TEST_LOCATION ); + DALI_TEST_EQUALS(controlWrapperImpl->IsVisualEnabled(TEST_PROPERTY), false, TEST_LOCATION); - DALI_TEST_EQUALS( controlWrapper.OnStage(), true, TEST_LOCATION ); + DALI_TEST_EQUALS(controlWrapper.GetProperty(Actor::Property::CONNECTED_TO_SCENE), true, TEST_LOCATION); - controlWrapperImpl->EnableVisual( TEST_PROPERTY, true ); + controlWrapperImpl->EnableVisual(TEST_PROPERTY, true); - DALI_TEST_EQUALS( controlWrapperImpl->IsVisualEnabled( TEST_PROPERTY ), true, TEST_LOCATION ); + DALI_TEST_EQUALS(controlWrapperImpl->IsVisualEnabled(TEST_PROPERTY), true, TEST_LOCATION); END_TEST; } @@ -488,41 +535,41 @@ int UtcDaliControlWrapperRegisterDisabledVisualWithDepthIndex(void) { ToolkitTestApplication application; - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); Property::Index TEST_PROPERTY = 1; Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); - Toolkit::Visual::Base visual; + Toolkit::Visual::Base visual; Property::Map map; - map[Visual::Property::TYPE] = Visual::COLOR; + map[Visual::Property::TYPE] = Visual::COLOR; map[ColorVisual::Property::MIX_COLOR] = Color::RED; - visual = visualFactory.CreateVisual( map ); + visual = visualFactory.CreateVisual(map); DALI_TEST_CHECK(visual); // Register index with a color visual - controlWrapperImpl->RegisterVisual( TEST_PROPERTY, visual, false, 10 ); + controlWrapperImpl->RegisterVisual(TEST_PROPERTY, visual, false, 10); - DALI_TEST_EQUALS( controlWrapperImpl->GetVisual( TEST_PROPERTY ), visual, TEST_LOCATION ); - DALI_TEST_EQUALS( controlWrapperImpl->IsVisualEnabled( TEST_PROPERTY ), false, TEST_LOCATION ); - DALI_TEST_EQUALS( visual.GetDepthIndex(), 10, TEST_LOCATION ); + DALI_TEST_EQUALS(controlWrapperImpl->GetVisual(TEST_PROPERTY), visual, TEST_LOCATION); + DALI_TEST_EQUALS(controlWrapperImpl->IsVisualEnabled(TEST_PROPERTY), false, TEST_LOCATION); + DALI_TEST_EQUALS(visual.GetDepthIndex(), 10, TEST_LOCATION); - Stage::GetCurrent().Add( controlWrapper ); + application.GetScene().Add(controlWrapper); // Render and notify application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( controlWrapperImpl->IsVisualEnabled( TEST_PROPERTY ), false, TEST_LOCATION ); + DALI_TEST_EQUALS(controlWrapperImpl->IsVisualEnabled(TEST_PROPERTY), false, TEST_LOCATION); - DALI_TEST_EQUALS( controlWrapper.OnStage(), true, TEST_LOCATION ); + DALI_TEST_EQUALS(controlWrapper.GetProperty(Actor::Property::CONNECTED_TO_SCENE), true, TEST_LOCATION); - controlWrapperImpl->EnableVisual( TEST_PROPERTY, true ); + controlWrapperImpl->EnableVisual(TEST_PROPERTY, true); - DALI_TEST_EQUALS( controlWrapperImpl->IsVisualEnabled( TEST_PROPERTY ), true, TEST_LOCATION ); + DALI_TEST_EQUALS(controlWrapperImpl->IsVisualEnabled(TEST_PROPERTY), true, TEST_LOCATION); END_TEST; } @@ -531,96 +578,94 @@ int UtcDaliControlWrapperRegisterUnregisterVisual(void) { ToolkitTestApplication application; - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); Property::Index index = 1; Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); - Toolkit::Visual::Base visual; + Toolkit::Visual::Base visual; Property::Map map; - map[Visual::Property::TYPE] = Visual::COLOR; + map[Visual::Property::TYPE] = Visual::COLOR; map[ColorVisual::Property::MIX_COLOR] = Color::RED; - visual = visualFactory.CreateVisual( map ); + visual = visualFactory.CreateVisual(map); DALI_TEST_CHECK(visual); // Register index with a color visual - controlWrapperImpl->RegisterVisual( index, visual ); + controlWrapperImpl->RegisterVisual(index, visual); - DALI_TEST_EQUALS( controlWrapperImpl->GetVisual( index ), visual, TEST_LOCATION ); + DALI_TEST_EQUALS(controlWrapperImpl->GetVisual(index), visual, TEST_LOCATION); // Unregister visual - controlWrapperImpl->UnregisterVisual( index ); + controlWrapperImpl->UnregisterVisual(index); - DALI_TEST_CHECK( !controlWrapperImpl->GetVisual( index ) ); + DALI_TEST_CHECK(!controlWrapperImpl->GetVisual(index)); END_TEST; } int UtcDaliControlWrapperTransitionDataMap1N(void) { - TestApplication application; + ToolkitTestApplication application; Property::Map map; - map["target"] = "Actor1"; - map["property"] = "randomProperty"; + map["target"] = "Actor1"; + map["property"] = "randomProperty"; map["initialValue"] = Color::MAGENTA; - map["targetValue"] = Color::RED; - map["animator"] = Property::Map() - .Add("alphaFunction", "EASE_OUT") - .Add("timePeriod", Property::Map() - .Add("delay", 0.5f) - .Add("duration", 1.0f)); + map["targetValue"] = Color::RED; + map["animator"] = Property::Map() + .Add("alphaFunction", "EASE_OUT") + .Add("timePeriod", Property::Map().Add("delay", 0.5f).Add("duration", 1.0f)); - Dali::Toolkit::TransitionData transition = TransitionData::New( map ); + Dali::Toolkit::TransitionData transition = TransitionData::New(map); - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); //DummyControl actor = DummyControl::New(); controlWrapper.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); - controlWrapper.SetName("Actor1"); - controlWrapper.SetColor(Color::CYAN); - Stage::GetCurrent().Add(controlWrapper); + controlWrapper.SetProperty(Dali::Actor::Property::NAME, "Actor1"); + controlWrapper.SetProperty(Actor::Property::COLOR, Color::CYAN); + application.GetScene().Add(controlWrapper); - Animation anim = controlWrapperImpl->CreateTransition( transition ); - DALI_TEST_CHECK( ! anim ); + Animation anim = controlWrapperImpl->CreateTransition(transition); + DALI_TEST_CHECK(!anim); Property::Map returnedMap = transition.GetAnimatorAt(0); Property::Value* value = returnedMap.Find("property"); - DALI_TEST_CHECK( value != NULL); - DALI_TEST_EQUALS( "randomProperty", value->Get(), TEST_LOCATION ); + DALI_TEST_CHECK(value != NULL); + DALI_TEST_EQUALS("randomProperty", value->Get(), TEST_LOCATION); value = returnedMap.Find("initialValue"); - DALI_TEST_CHECK( value != NULL); - DALI_TEST_EQUALS( Color::MAGENTA, value->Get(), TEST_LOCATION ); + DALI_TEST_CHECK(value != NULL); + DALI_TEST_EQUALS(Color::MAGENTA, value->Get(), TEST_LOCATION); value = returnedMap.Find("targetValue"); - DALI_TEST_CHECK( value != NULL); - DALI_TEST_EQUALS( Color::RED, value->Get(), TEST_LOCATION ); + DALI_TEST_CHECK(value != NULL); + DALI_TEST_EQUALS(Color::RED, value->Get(), TEST_LOCATION); value = returnedMap.Find("animator"); - DALI_TEST_CHECK( value != NULL); + DALI_TEST_CHECK(value != NULL); Property::Map returnedAnimatorMap = value->Get(); value = returnedAnimatorMap.Find("alphaFunction"); - DALI_TEST_CHECK( value != NULL); - DALI_TEST_EQUALS( "EASE_OUT", value->Get(), TEST_LOCATION ); + DALI_TEST_CHECK(value != NULL); + DALI_TEST_EQUALS("EASE_OUT", value->Get(), TEST_LOCATION); value = returnedAnimatorMap.Find("timePeriod"); - DALI_TEST_CHECK( value != NULL); + DALI_TEST_CHECK(value != NULL); Property::Map returnedTimePeriodMap = value->Get(); value = returnedTimePeriodMap.Find("delay"); - DALI_TEST_CHECK( value != NULL); - DALI_TEST_EQUALS( 0.5f, value->Get(), TEST_LOCATION ); + DALI_TEST_CHECK(value != NULL); + DALI_TEST_EQUALS(0.5f, value->Get(), TEST_LOCATION); value = returnedTimePeriodMap.Find("duration"); - DALI_TEST_CHECK( value != NULL); - DALI_TEST_EQUALS( 1.0f, value->Get(), TEST_LOCATION ); + DALI_TEST_CHECK(value != NULL); + DALI_TEST_EQUALS(1.0f, value->Get(), TEST_LOCATION); END_TEST; } @@ -629,12 +674,12 @@ int UtcDaliControlWrapperApplyThemeStyle(void) { ToolkitTestApplication application; - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); controlWrapperImpl->ApplyThemeStyle(); - DALI_TEST_CHECK( true ); + DALI_TEST_CHECK(true); END_TEST; } @@ -642,30 +687,30 @@ int UtcDaliControlWrapperTestControlProperties(void) { ToolkitTestApplication application; - Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl( Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT ); - ControlWrapper controlWrapper = ControlWrapper::New( customControlTypeName, *controlWrapperImpl ); + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); - Stage::GetCurrent().Add( controlWrapper ); + application.GetScene().Add(controlWrapper); // "background" property Property::Map rendererMap; - rendererMap[Visual::Property::TYPE] = Visual::COLOR; + rendererMap[Visual::Property::TYPE] = Visual::COLOR; rendererMap[ColorVisual::Property::MIX_COLOR] = Color::RED; - controlWrapper.SetProperty( Control::Property::BACKGROUND, rendererMap ); - Property::Value propertyValue = controlWrapper.GetProperty( Control::Property::BACKGROUND ); - Property::Map* resultMap = propertyValue.GetMap(); - DALI_TEST_CHECK( resultMap->Find( Visual::Property::TYPE ) ); - DALI_TEST_EQUALS( resultMap->Find( Visual::Property::TYPE )->Get(), (int)Visual::COLOR, TEST_LOCATION ); - DALI_TEST_CHECK( resultMap->Find( ColorVisual::Property::MIX_COLOR ) ); - DALI_TEST_EQUALS( resultMap->Find( ColorVisual::Property::MIX_COLOR )->Get(), Color::RED, TEST_LOCATION ); + controlWrapper.SetProperty(Control::Property::BACKGROUND, rendererMap); + Property::Value propertyValue = controlWrapper.GetProperty(Control::Property::BACKGROUND); + Property::Map* resultMap = propertyValue.GetMap(); + DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE)); + DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get(), (int)Visual::COLOR, TEST_LOCATION); + DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR)); + DALI_TEST_EQUALS(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get(), Color::RED, TEST_LOCATION); // "keyInputFocus" property - controlWrapper.SetProperty( Control::Property::KEY_INPUT_FOCUS, true ); - DALI_TEST_EQUALS( true, controlWrapper.GetProperty( Control::Property::KEY_INPUT_FOCUS ).Get< bool >(), TEST_LOCATION ); + controlWrapper.SetProperty(Control::Property::KEY_INPUT_FOCUS, true); + DALI_TEST_EQUALS(true, controlWrapper.GetProperty(Control::Property::KEY_INPUT_FOCUS).Get(), TEST_LOCATION); // "styleName" property - controlWrapper.SetProperty( Control::Property::STYLE_NAME, "MyCustomStyle" ); - DALI_TEST_EQUALS( "MyCustomStyle", controlWrapper.GetProperty( Control::Property::STYLE_NAME ).Get< std::string >(), TEST_LOCATION ); + controlWrapper.SetProperty(Control::Property::STYLE_NAME, "MyCustomStyle"); + DALI_TEST_EQUALS("MyCustomStyle", controlWrapper.GetProperty(Control::Property::STYLE_NAME).Get(), TEST_LOCATION); END_TEST; } @@ -674,12 +719,116 @@ int UtcDaliControlWrapperTypeRegistryCreation(void) { ToolkitTestApplication application; - TypeInfo typeInfo = TypeRegistry::Get().GetTypeInfo( "ControlWrapper" ); - DALI_TEST_CHECK( typeInfo ) + TypeInfo typeInfo = TypeRegistry::Get().GetTypeInfo("ControlWrapper"); + DALI_TEST_CHECK(typeInfo) // Check that we can't create a ControlWrapper instance BaseHandle baseHandle = typeInfo.CreateInstance(); - DALI_TEST_CHECK( !baseHandle ) + DALI_TEST_CHECK(!baseHandle) + + END_TEST; +} + +void SetProperty(BaseObject* object, const char* const name, Property::Value* value) +{ +} +Property::Value* GetProperty(BaseObject* object, const char* const name) +{ + return NULL; +} + +int UtcDaliControlWrapperAnimateVisual(void) +{ + tet_infoline("Test that the control wrapper's visuals can be animated by name when registered"); + + ToolkitTestApplication application; + Test::ObjectDestructionTracker objectDestructionTracker(application.GetCore().GetObjectRegistry()); + + { + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); + + Property::Index index = Control::CONTROL_PROPERTY_END_INDEX + 1; + std::string visualName("colorVisual"); + CSharpTypeRegistry::RegisterProperty(customControlTypeName, visualName, index, Property::VECTOR4, SetProperty, GetProperty); + + objectDestructionTracker.Start(controlWrapper); + + 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 to self + controlWrapperImpl->TestRegisterVisual(index, visual); + + application.GetScene().Add(controlWrapper); + controlWrapper.SetProperty(Actor::Property::SIZE, Vector2(100, 100)); + application.SendNotification(); + application.Render(0); // Trigger animation start + + Property::Map transition; + transition["target"] = visualName; + transition["property"] = "mixColor"; + transition["targetValue"] = Color::GREEN; + Property::Map animator; + animator["alphaFunction"] = "LINEAR"; + animator["duration"] = 1.0f; + animator["delay"] = 0.0f; + transition["animator"] = animator; + + TransitionData transitionData = TransitionData::New(transition); + Animation anim = DevelControl::CreateTransition(*controlWrapperImpl, transitionData); + anim.Play(); + + application.SendNotification(); + application.Render(0); // Trigger animation start + + application.Render(1000); // animation end + application.Render(10); + + Property::Map visualMap; + visual.CreatePropertyMap(visualMap); + Property::Value* value = visualMap.Find(ColorVisual::Property::MIX_COLOR, "mixColor"); + DALI_TEST_CHECK(value != NULL); + if(value) + { + Vector4 testColor = value->Get(); + DALI_TEST_EQUALS(testColor, Color::GREEN, 0.001f, TEST_LOCATION); + } + + DALI_TEST_EQUALS(objectDestructionTracker.IsDestroyed(), false, TEST_LOCATION); // Control not destroyed yet + DALI_TEST_EQUALS(controlWrapperImpl->GetVisual(index), visual, TEST_LOCATION); + + application.GetScene().Remove(controlWrapper); + } + + DALI_TEST_EQUALS(objectDestructionTracker.IsDestroyed(), true, TEST_LOCATION); // Should be destroyed + + END_TEST; +} + +int UtcDaliControlWrapperEmitKeyFocusSignal(void) +{ + ToolkitTestApplication application; + + Impl::TestCustomControl* controlWrapperImpl = new ::Impl::TestCustomControl(Toolkit::Internal::ControlWrapper::CONTROL_BEHAVIOUR_DEFAULT); + ControlWrapper controlWrapper = ControlWrapper::New(customControlTypeName, *controlWrapperImpl); + + gKeyInputFocusCallBackCalled = false; + controlWrapper.KeyInputFocusGainedSignal().Connect(&TestKeyInputFocusCallback); + + application.SendNotification(); + application.Render(); + + controlWrapperImpl->EmitKeyInputFocusSignal(true); + + DALI_TEST_CHECK(gKeyInputFocusCallBackCalled); END_TEST; }