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-Control.cpp;h=6745fea8473b294e164bb4178007625b6b150760;hp=9869f21c748a1228b6e06ab537a0418d7d71694c;hb=6a219d0bbcfd016e24b5466d5fb1a666c92feae5;hpb=9dbf20fa1a7c08df5bb0824255c36f126ac91e05 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Control.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Control.cpp old mode 100755 new mode 100644 index 9869f21..6745fea --- a/automated-tests/src/dali-toolkit/utc-Dali-Control.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Control.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,18 +15,21 @@ * */ -#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 "dummy-control.h" @@ -48,7 +51,6 @@ void utc_dali_toolkit_control_cleanup(void) namespace { - bool gObjectCreatedCallBackCalled; void TestCallback(BaseHandle handle) @@ -62,64 +64,89 @@ void TestVoidCallback() static bool gKeyInputFocusCallBackCalled; -static void TestKeyInputFocusCallback( Control control ) +static void TestKeyInputFocusCallback(Control control) { tet_infoline(" TestKeyInputFocusCallback"); gKeyInputFocusCallBackCalled = true; } -const char* TEST_LARGE_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/tbcol.png"; -const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg"; +const char* TEST_LARGE_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/tbcol.png"; +const char* TEST_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/gallery-small-1.jpg"; +const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/Kid1.svg"; + +Vector4 GetControlBackgroundColor(Control& control) +{ + Property::Value propValue = control.GetProperty(Control::Property::BACKGROUND); + Property::Map* resultMap = propValue.GetMap(); + DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR)); + + Vector4 color; + resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get(color); + + return color; +} + +bool gResourceReadySignalFired = false; + +void ResourceReadySignal(Control control) +{ + if(control.GetVisualResourceStatus(Control::Property::BACKGROUND) == Visual::ResourceStatus::FAILED) + { + Property::Map propertyMap; + propertyMap.Insert(ImageVisual::Property::URL, TEST_SVG_FILE_NAME); + control.SetProperty(Control::Property::BACKGROUND, propertyMap); + } + + gResourceReadySignalFired = true; +} } // namespace /////////////////////////////////////////////////////////////////////////////////////////////////// - int UtcDaliControlConstructor(void) { - ToolkitTestApplication application; // Exceptions require ToolkitTestApplication + ToolkitTestApplication application; // Exceptions require ToolkitTestApplication DummyControl dummy; - DALI_TEST_CHECK( !Control::DownCast(dummy) ); + DALI_TEST_CHECK(!Control::DownCast(dummy)); dummy = DummyControl::New(); - DALI_TEST_CHECK( Control::DownCast(dummy) ); + DALI_TEST_CHECK(Control::DownCast(dummy)); END_TEST; } int UtcDaliControlNew(void) { - ToolkitTestApplication application; // Exceptions require ToolkitTestApplication + ToolkitTestApplication application; // Exceptions require ToolkitTestApplication Control control; - DALI_TEST_CHECK( !Control::DownCast(control) ); + DALI_TEST_CHECK(!Control::DownCast(control)); control = Control::New(); - DALI_TEST_CHECK( Control::DownCast(control) ); + DALI_TEST_CHECK(Control::DownCast(control)); END_TEST; } - int UtcDaliControlRegister(void) { ToolkitTestApplication application; // Ensure the object is registered after creation - ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry(); - DALI_TEST_CHECK( registry ); + ObjectRegistry registry = application.GetCore().GetObjectRegistry(); + DALI_TEST_CHECK(registry); gObjectCreatedCallBackCalled = false; - registry.ObjectCreatedSignal().Connect( &TestCallback ); + registry.ObjectCreatedSignal().Connect(&TestCallback); { Alignment alignment = Alignment::New(); } - DALI_TEST_CHECK( gObjectCreatedCallBackCalled ); + DALI_TEST_CHECK(gObjectCreatedCallBackCalled); END_TEST; } @@ -128,25 +155,62 @@ int UtcDaliControlCopyAndAssignment(void) ToolkitTestApplication application; DummyControl control = DummyControl::New(); - Control emptyControl; + Control emptyControl; - Control controlCopy( control ); - DALI_TEST_CHECK( control == controlCopy ); + Control controlCopy(control); + DALI_TEST_CHECK(control == controlCopy); - Control emptyControlCopy( emptyControl ); - DALI_TEST_CHECK( emptyControl == emptyControlCopy ); + Control emptyControlCopy(emptyControl); + DALI_TEST_CHECK(emptyControl == emptyControlCopy); Control controlEquals; controlEquals = control; - DALI_TEST_CHECK( control == controlEquals ); + DALI_TEST_CHECK(control == controlEquals); Control emptyControlEquals; emptyControlEquals = emptyControl; - DALI_TEST_CHECK( emptyControl == emptyControlEquals ); + DALI_TEST_CHECK(emptyControl == emptyControlEquals); // Self assignment control = control; - DALI_TEST_CHECK( control == controlCopy ); + DALI_TEST_CHECK(control == controlCopy); + END_TEST; +} + +int UtcDaliControlMoveConstructor(void) +{ + ToolkitTestApplication application; + + Control control = Control::New(); + DALI_TEST_EQUALS(1, control.GetBaseObject().ReferenceCount(), TEST_LOCATION); + control.SetProperty(Actor::Property::SENSITIVE, false); + DALI_TEST_CHECK(false == control.GetProperty(Actor::Property::SENSITIVE)); + + Control moved = std::move(control); + DALI_TEST_CHECK(moved); + DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION); + DALI_TEST_CHECK(false == moved.GetProperty(Actor::Property::SENSITIVE)); + DALI_TEST_CHECK(!control); + + END_TEST; +} + +int UtcDaliControlMoveAssignment(void) +{ + ToolkitTestApplication application; + + Control control = Control::New(); + DALI_TEST_EQUALS(1, control.GetBaseObject().ReferenceCount(), TEST_LOCATION); + control.SetProperty(Actor::Property::SENSITIVE, false); + DALI_TEST_CHECK(false == control.GetProperty(Actor::Property::SENSITIVE)); + + Control moved; + moved = std::move(control); + DALI_TEST_CHECK(moved); + DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION); + DALI_TEST_CHECK(false == moved.GetProperty(Actor::Property::SENSITIVE)); + DALI_TEST_CHECK(!control); + END_TEST; } @@ -156,19 +220,19 @@ int UtcDaliControlDownCast(void) DummyControl control; - DALI_TEST_CHECK( !Control::DownCast( control ) ); + DALI_TEST_CHECK(!Control::DownCast(control)); control = DummyControl::New(); - DALI_TEST_CHECK( Control::DownCast( control ) ); + DALI_TEST_CHECK(Control::DownCast(control)); Actor actor; - DALI_TEST_CHECK( !Control::DownCast( actor ) ); + DALI_TEST_CHECK(!Control::DownCast(actor)); actor = Actor::New(); - DALI_TEST_CHECK( !Control::DownCast( actor ) ); + DALI_TEST_CHECK(!Control::DownCast(actor)); END_TEST; } @@ -178,19 +242,19 @@ int UtcDaliControlDownCastTemplate(void) DummyControl control; - DALI_TEST_CHECK( !DummyControl::DownCast( control )); + DALI_TEST_CHECK(!DummyControl::DownCast(control)); control = DummyControl::New(); - DALI_TEST_CHECK( DummyControl::DownCast( control ) ); + DALI_TEST_CHECK(DummyControl::DownCast(control)); Actor actor; - DALI_TEST_CHECK( !DummyControl::DownCast( actor ) ); + DALI_TEST_CHECK(!DummyControl::DownCast(actor)); actor = Actor::New(); - DALI_TEST_CHECK( !DummyControl::DownCast( actor ) ); + DALI_TEST_CHECK(!DummyControl::DownCast(actor)); END_TEST; } @@ -199,30 +263,36 @@ int UtcDaliControlNavigationProperties(void) ToolkitTestApplication application; Control control = Control::New(); - Stage::GetCurrent().Add( control ); - - DALI_TEST_EQUALS( -1, control.GetProperty( DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION ); - DALI_TEST_EQUALS( -1, control.GetProperty( DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION ); - DALI_TEST_EQUALS( -1, control.GetProperty( DevelControl::Property::UP_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION ); - DALI_TEST_EQUALS( -1, control.GetProperty( DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION ); - - control.SetProperty( DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, 1 ); - DALI_TEST_EQUALS( 1, control.GetProperty( DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION ); - control.SetProperty( DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, 2 ); - DALI_TEST_EQUALS( 2, control.GetProperty( DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION ); - control.SetProperty( DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, 3 ); - DALI_TEST_EQUALS( 3, control.GetProperty( DevelControl::Property::UP_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION ); - control.SetProperty( DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, 4 ); - DALI_TEST_EQUALS( 4, control.GetProperty( DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION ); - - control.SetProperty( DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, 15 ); - DALI_TEST_EQUALS( 15, control.GetProperty( DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION ); - control.SetProperty( DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, 16 ); - DALI_TEST_EQUALS( 16, control.GetProperty( DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION ); - control.SetProperty( DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, 17 ); - DALI_TEST_EQUALS( 17, control.GetProperty( DevelControl::Property::UP_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION ); - control.SetProperty( DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, 18 ); - DALI_TEST_EQUALS( 18, control.GetProperty( DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION ); + application.GetScene().Add(control); + + DALI_TEST_EQUALS(-1, control.GetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID).Get(), TEST_LOCATION); + DALI_TEST_EQUALS(-1, control.GetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID).Get(), TEST_LOCATION); + DALI_TEST_EQUALS(-1, control.GetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID).Get(), TEST_LOCATION); + DALI_TEST_EQUALS(-1, control.GetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID).Get(), TEST_LOCATION); + DALI_TEST_EQUALS(-1, control.GetProperty( DevelControl::Property::CLOCKWISE_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION); + DALI_TEST_EQUALS(-1, control.GetProperty( DevelControl::Property::COUNTER_CLOCKWISE_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION); + + control.SetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, 1); + DALI_TEST_EQUALS(1, control.GetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID).Get(), TEST_LOCATION); + control.SetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, 2); + DALI_TEST_EQUALS(2, control.GetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID).Get(), TEST_LOCATION); + control.SetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, 3); + DALI_TEST_EQUALS(3, control.GetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID).Get(), TEST_LOCATION); + control.SetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, 4); + DALI_TEST_EQUALS(4, control.GetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID).Get(), TEST_LOCATION); + + control.SetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, 15); + DALI_TEST_EQUALS(15, control.GetProperty(DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID).Get(), TEST_LOCATION); + control.SetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID, 16); + DALI_TEST_EQUALS(16, control.GetProperty(DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID).Get(), TEST_LOCATION); + control.SetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, 17); + DALI_TEST_EQUALS(17, control.GetProperty(DevelControl::Property::UP_FOCUSABLE_ACTOR_ID).Get(), TEST_LOCATION); + control.SetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, 18); + DALI_TEST_EQUALS(18, control.GetProperty(DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID).Get(), TEST_LOCATION); + control.SetProperty(DevelControl::Property::CLOCKWISE_FOCUSABLE_ACTOR_ID, 19); + DALI_TEST_EQUALS(19, control.GetProperty( DevelControl::Property::CLOCKWISE_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION); + control.SetProperty(DevelControl::Property::COUNTER_CLOCKWISE_FOCUSABLE_ACTOR_ID, 20); + DALI_TEST_EQUALS(20, control.GetProperty( DevelControl::Property::COUNTER_CLOCKWISE_FOCUSABLE_ACTOR_ID ).Get< int >(), TEST_LOCATION); END_TEST; } @@ -230,35 +300,35 @@ int UtcDaliControlNavigationProperties(void) int UtcDaliControlKeyInputFocus(void) { ToolkitTestApplication application; - Stage stage = Stage::GetCurrent(); + Integration::Scene stage = application.GetScene(); DummyControl control; PushButton pushButton1 = PushButton::New(); - stage.Add( pushButton1 ); + stage.Add(pushButton1); pushButton1.SetKeyInputFocus(); - DALI_TEST_CHECK( pushButton1.HasKeyInputFocus() ); + DALI_TEST_CHECK(pushButton1.HasKeyInputFocus()); pushButton1.ClearKeyInputFocus(); - DALI_TEST_CHECK( !pushButton1.HasKeyInputFocus() ); + DALI_TEST_CHECK(!pushButton1.HasKeyInputFocus()); END_TEST; } int UtcDaliControlGetImplementationN(void) { ToolkitTestApplication application; - DummyControl control; + DummyControl control; // Get Empty { try { - Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( control ); + Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(control); (void)controlImpl; // Avoid unused warning tet_result(TET_FAIL); } - catch (DaliException &exception) + catch(DaliException& exception) { tet_result(TET_PASS); } @@ -269,18 +339,18 @@ int UtcDaliControlGetImplementationN(void) int UtcDaliControlGetImplementationConstN(void) { ToolkitTestApplication application; - DummyControl control; + DummyControl control; // Get Const Empty { try { - const DummyControl constControl(control); - const Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( constControl ); + const DummyControl constControl(control); + const Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(constControl); (void)controlImpl; // Avoid unused warning tet_result(TET_FAIL); } - catch (DaliException &exception) + catch(DaliException& exception) { tet_result(TET_PASS); } @@ -291,17 +361,17 @@ int UtcDaliControlGetImplementationConstN(void) int UtcDaliControlGetImplementationP(void) { ToolkitTestApplication application; - DummyControl control = DummyControl::New(); + DummyControl control = DummyControl::New(); // Get { try { - Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( control ); + Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(control); (void)controlImpl; // Avoid unused warning tet_result(TET_PASS); } - catch (DaliException &exception) + catch(DaliException& exception) { tet_result(TET_FAIL); } @@ -312,17 +382,17 @@ int UtcDaliControlGetImplementationP(void) int UtcDaliControlGetImplementationConstP(void) { ToolkitTestApplication application; - DummyControl control = DummyControl::New(); + DummyControl control = DummyControl::New(); // Get Const { try { - const DummyControl constControl(control); - const Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( constControl ); + const DummyControl constControl(control); + const Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(constControl); (void)controlImpl; // Avoid unused warning tet_result(TET_PASS); } - catch (DaliException &exception) + catch(DaliException& exception) { tet_result(TET_FAIL); } @@ -338,29 +408,29 @@ int UtcDaliControlSignalConnectDisconnect(void) DummyControl dummy = DummyControlImpl::New(); Actor actor = Actor::New(); - DALI_TEST_EQUALS( actor.OnStageSignal().GetConnectionCount(), 0u, TEST_LOCATION ); - Toolkit::Internal::Control& control = Toolkit::Internal::GetImplementation( dummy ); - DummyControlImpl* dummyImpl = dynamic_cast(&control); + DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 0u, TEST_LOCATION); + Toolkit::Internal::Control& control = Toolkit::Internal::GetImplementation(dummy); + DummyControlImpl* dummyImpl = dynamic_cast(&control); - if( dummyImpl == NULL ) + if(dummyImpl == NULL) { - tet_result( TET_FAIL ); + tet_result(TET_FAIL); END_TEST; } - actor.OnStageSignal().Connect( dummyImpl, &DummyControlImpl::CustomSlot1 ); - DALI_TEST_EQUALS( actor.OnStageSignal().GetConnectionCount(), 1u, TEST_LOCATION ); - DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Called, false, TEST_LOCATION ); + actor.OnSceneSignal().Connect(dummyImpl, &DummyControlImpl::CustomSlot1); + DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, false, TEST_LOCATION); - Stage::GetCurrent().Add( actor ); - DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Called, true, TEST_LOCATION ); + application.GetScene().Add(actor); + DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, true, TEST_LOCATION); dummyImpl->mCustomSlot1Called = false; - actor.OnStageSignal().Disconnect( dummyImpl, &DummyControlImpl::CustomSlot1 ); - DALI_TEST_EQUALS( actor.OnStageSignal().GetConnectionCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); - Stage::GetCurrent().Add( actor ); - DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Called, false, TEST_LOCATION ); + actor.OnSceneSignal().Disconnect(dummyImpl, &DummyControlImpl::CustomSlot1); + DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 0u, TEST_LOCATION); + application.GetScene().Remove(actor); + application.GetScene().Add(actor); + DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, false, TEST_LOCATION); } END_TEST; } @@ -372,55 +442,55 @@ int UtcDaliControlSignalAutomaticDisconnect(void) Actor actor = Actor::New(); { - DummyControl dummy = DummyControlImpl::New(); - Toolkit::Internal::Control& control = Toolkit::Internal::GetImplementation( dummy ); - DummyControlImpl* dummyImpl = dynamic_cast(&control); + DummyControl dummy = DummyControlImpl::New(); + Toolkit::Internal::Control& control = Toolkit::Internal::GetImplementation(dummy); + DummyControlImpl* dummyImpl = dynamic_cast(&control); - if( dummyImpl == NULL ) + if(dummyImpl == NULL) { - tet_result( TET_FAIL ); + tet_result(TET_FAIL); END_TEST; } - actor.OnStageSignal().Connect( dummyImpl, &DummyControlImpl::CustomSlot1 ); - DALI_TEST_EQUALS( actor.OnStageSignal().GetConnectionCount(), 1u, TEST_LOCATION ); - DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Called, false, TEST_LOCATION ); + actor.OnSceneSignal().Connect(dummyImpl, &DummyControlImpl::CustomSlot1); + DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, false, TEST_LOCATION); - Stage::GetCurrent().Add( actor ); - DALI_TEST_EQUALS( dummyImpl->mCustomSlot1Called, true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Add(actor); + DALI_TEST_EQUALS(dummyImpl->mCustomSlot1Called, true, TEST_LOCATION); + application.GetScene().Remove(actor); } // dummyControl automatically disconnects - DALI_TEST_EQUALS( actor.OnStageSignal().GetConnectionCount(), 0u, TEST_LOCATION ); + DALI_TEST_EQUALS(actor.OnSceneSignal().GetConnectionCount(), 0u, TEST_LOCATION); - const Vector3 ignoredSize( 20, 20, 0 ); - actor.SetSize( ignoredSize ); + const Vector3 ignoredSize(20, 20, 0); + actor.SetProperty(Actor::Property::SIZE, ignoredSize); END_TEST; } int UtcDaliControlTestParameters(void) { ToolkitTestApplication application; - DummyControl test = DummyControl::New(); + DummyControl test = DummyControl::New(); - test.SetSize( 0.7f, 0.7f, 0.7f ); + test.SetProperty(Actor::Property::SIZE, Vector3(0.7f, 0.7f, 0.7f)); - Stage::GetCurrent().Add( test ); + application.GetScene().Add(test); application.SendNotification(); application.Render(); - float width = 640.0f; - float height = test.GetHeightForWidth( width ); - DALI_TEST_EQUALS( 640.0f, height, TEST_LOCATION ); - DALI_TEST_EQUALS( 640.0f, test.GetWidthForHeight( height ), TEST_LOCATION ); + float width = 640.0f; + float height = test.GetHeightForWidth(width); + DALI_TEST_EQUALS(640.0f, height, TEST_LOCATION); + DALI_TEST_EQUALS(640.0f, test.GetWidthForHeight(height), TEST_LOCATION); test.KeyEventSignal(); // Provide coverage for pointer destructor Control* testControlPtr = new Control; - DALI_TEST_CHECK( testControlPtr ); + DALI_TEST_CHECK(testControlPtr); delete testControlPtr; END_TEST; } @@ -428,29 +498,111 @@ int UtcDaliControlTestParameters(void) int UtcDaliControlBackgroundColor(void) { ToolkitTestApplication application; - Control control = Control::New(); - - DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION ); + Control control = Control::New(); - control.SetBackgroundColor( Color::RED ); + DALI_TEST_CHECK(control.GetProperty(Control::Property::BACKGROUND).Get().Empty()); - Property::Value propValue = control.GetProperty( Control::Property::BACKGROUND ); - Property::Map* resultMap = propValue.GetMap(); - DALI_TEST_CHECK( resultMap->Find( Toolkit::Visual::Property::TYPE ) ); - DALI_TEST_CHECK( resultMap->Find( Toolkit::Visual::Property::TYPE )->Get() == Visual::COLOR ); - DALI_TEST_CHECK( resultMap->Find( ColorVisual::Property::MIX_COLOR ) ); - DALI_TEST_CHECK( resultMap->Find( ColorVisual::Property::MIX_COLOR )->Get() == Color::RED ); + control.SetProperty(Control::Property::BACKGROUND, Color::RED); - DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::RED, TEST_LOCATION ); + Property::Value propValue = control.GetProperty(Control::Property::BACKGROUND); + Property::Map* resultMap = propValue.GetMap(); + DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE)); + DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get() == Visual::COLOR); + DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR)); + DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get() == Color::RED); - control.SetBackgroundColor( Color::YELLOW ); + control.SetProperty(Control::Property::BACKGROUND, Color::YELLOW); - propValue = control.GetProperty( Control::Property::BACKGROUND ); + propValue = control.GetProperty(Control::Property::BACKGROUND); resultMap = propValue.GetMap(); - DALI_TEST_CHECK( resultMap->Find( ColorVisual::Property::MIX_COLOR ) ); - DALI_TEST_CHECK( resultMap->Find( ColorVisual::Property::MIX_COLOR )->Get() == Color::YELLOW ); + DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR)); + DALI_TEST_CHECK(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get() == Color::YELLOW); + + END_TEST; +} + +int UtcDaliControlBackgroundColorRendererCount(void) +{ + tet_infoline("Test ensures we only create renderers when non-transparent color is requested or if we our clipping-mode is set to CLIP_CHILDREN"); + + ToolkitTestApplication application; + Control control = Control::New(); + control[Actor::Property::SIZE] = Vector2(100.0f, 100.0f); + application.GetScene().Add(control); + + tet_infoline("Set semi transparent alpha with positive RGB values, 1 renderer should be created, but returned color should reflect what we set"); + const Vector4 semiTransparent(1.0f, 0.75f, 0.5f, 0.5f); + control.SetBackgroundColor(semiTransparent); + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(GetControlBackgroundColor(control), semiTransparent, TEST_LOCATION); + + Renderer renderer = control.GetRendererAt(0); + DALI_TEST_CHECK(renderer); + + tet_infoline("Set semi transparent alpha with positive RGB values, renderer should not be changed"); + const Vector4 newColor(1.0f, 1.0f, 0.5f, 0.5f); + control.SetBackgroundColor(newColor); + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(GetControlBackgroundColor(control), newColor, TEST_LOCATION); + DALI_TEST_EQUALS(renderer, control.GetRendererAt(0), TEST_LOCATION); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& drawTrace = gl.GetDrawTrace(); + drawTrace.Enable(true); + + tet_infoline("Set transparent, 1 renderer should be created, but ensure nothing is drawn"); + control.SetBackgroundColor(Color::TRANSPARENT); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION); + DALI_TEST_EQUALS(drawTrace.FindMethod("DrawArrays"), false, TEST_LOCATION); + + drawTrace.Reset(); + + tet_infoline("Set control to clip its children, a renderer should be created which will be transparent"); + control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION); + DALI_TEST_EQUALS(drawTrace.FindMethod("DrawArrays"), true, TEST_LOCATION); + + tet_infoline("Set a color, only 1 renderer should exist"); + control.SetBackgroundColor(Color::RED); + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::RED, TEST_LOCATION); + + tet_infoline("Clear the background, no renderers"); + control.ClearBackground(); + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS(control.GetRendererCount(), 0u, TEST_LOCATION); + + tet_infoline("Set control to clip its children again, a renderer should be created which will be transparent"); + control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN); + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION); + + drawTrace.Reset(); + + tet_infoline("Disable clipping, render nothing"); + control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::DISABLED); + application.SendNotification(); + application.Render(); - DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::YELLOW, TEST_LOCATION ); + DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION); + DALI_TEST_EQUALS(drawTrace.FindMethod("DrawArrays"), false, TEST_LOCATION); END_TEST; } @@ -458,27 +610,25 @@ int UtcDaliControlBackgroundColor(void) int UtcDaliControlBackgroundImage(void) { ToolkitTestApplication application; - Control control = Control::New(); + Control control = Control::New(); - DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION ); + tet_infoline("Set first background image"); + control.SetProperty(Control::Property::BACKGROUND, "TestImage"); - Image image = ResourceImage::New("TestImage"); - control.SetBackgroundImage( image ); + Property::Value propValue = control.GetProperty(Control::Property::BACKGROUND); + Property::Map* resultMap = propValue.GetMap(); + DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE)); + DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get() == Visual::IMAGE); + DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL)); + DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL)->Get() == "TestImage"); - Property::Value propValue = control.GetProperty( Control::Property::BACKGROUND ); - Property::Map* resultMap = propValue.GetMap(); - DALI_TEST_CHECK( resultMap->Find( Toolkit::Visual::Property::TYPE ) ); - DALI_TEST_CHECK( resultMap->Find( Toolkit::Visual::Property::TYPE )->Get() == Visual::IMAGE ); - DALI_TEST_CHECK( resultMap->Find( ImageVisual::Property::URL ) ); - DALI_TEST_CHECK( resultMap->Find( ImageVisual::Property::URL )->Get() == "TestImage" ); + tet_infoline("Set replacement background image"); + control.SetProperty(Control::Property::BACKGROUND, "TestImage2"); - image = ResourceImage::New("TestImage2"); - control.SetBackgroundImage( image ); - - propValue = control.GetProperty( Control::Property::BACKGROUND ); + propValue = control.GetProperty(Control::Property::BACKGROUND); resultMap = propValue.GetMap(); - DALI_TEST_CHECK( resultMap->Find( ImageVisual::Property::URL ) ); - DALI_TEST_CHECK( resultMap->Find( ImageVisual::Property::URL )->Get() == "TestImage2" ); + DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL)); + DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL)->Get() == "TestImage2"); END_TEST; } @@ -486,67 +636,85 @@ int UtcDaliControlBackgroundImage(void) int UtcDaliControlBackgroundProperties(void) { ToolkitTestApplication application; - Control control = Control::New(); + Control control = Control::New(); - DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION ); - DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND ).Get< Property::Map >().Empty() ); + DALI_TEST_CHECK(control.GetProperty(Control::Property::BACKGROUND).Get().Empty()); Property::Map imageMap; - imageMap[ Toolkit::Visual::Property::TYPE ] = Visual::IMAGE; - imageMap[ ImageVisual::Property::URL ] = "TestImage"; - control.SetProperty( Control::Property::BACKGROUND, imageMap ); - Property::Value propValue = control.GetProperty( Control::Property::BACKGROUND ); - Property::Map* resultMap = propValue.GetMap(); - DALI_TEST_CHECK( resultMap->Find( Toolkit::Visual::Property::TYPE ) ); - DALI_TEST_EQUALS( resultMap->Find( Toolkit::Visual::Property::TYPE )->Get(),(int)Visual::IMAGE, TEST_LOCATION ); - DALI_TEST_CHECK( resultMap->Find( ImageVisual::Property::URL ) ); - DALI_TEST_EQUALS( resultMap->Find( ImageVisual::Property::URL )->Get(), "TestImage", TEST_LOCATION ); + imageMap[Toolkit::Visual::Property::TYPE] = Visual::IMAGE; + imageMap[ImageVisual::Property::URL] = "TestImage"; + control.SetProperty(Control::Property::BACKGROUND, imageMap); + Property::Value propValue = control.GetProperty(Control::Property::BACKGROUND); + Property::Map* resultMap = propValue.GetMap(); + DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE)); + DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get(), (int)Visual::IMAGE, TEST_LOCATION); + DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL)); + DALI_TEST_EQUALS(resultMap->Find(ImageVisual::Property::URL)->Get(), "TestImage", TEST_LOCATION); Property::Map rendererMap; - rendererMap[Visual::Property::TYPE] = Visual::COLOR; + rendererMap[Visual::Property::TYPE] = Visual::COLOR; rendererMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN; - control.SetProperty( Control::Property::BACKGROUND, rendererMap ); - propValue = control.GetProperty( Control::Property::BACKGROUND ); + control.SetProperty(Control::Property::BACKGROUND, rendererMap); + propValue = control.GetProperty(Control::Property::BACKGROUND); resultMap = propValue.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::CYAN, TEST_LOCATION ); + 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::CYAN, TEST_LOCATION); Property::Map emptyMap; - control.SetProperty( Control::Property::BACKGROUND, emptyMap ); - DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND ).Get< Property::Map >().Empty() ); + control.SetProperty(Control::Property::BACKGROUND, emptyMap); + DALI_TEST_CHECK(control.GetProperty(Control::Property::BACKGROUND).Get().Empty()); // set as URL - control.SetProperty( Control::Property::BACKGROUND, "Foobar.png" ); - propValue = control.GetProperty( Control::Property::BACKGROUND ); + control.SetProperty(Control::Property::BACKGROUND, "Foobar.png"); + propValue = control.GetProperty(Control::Property::BACKGROUND); resultMap = propValue.GetMap(); - DALI_TEST_EQUALS( resultMap->Find( Toolkit::Visual::Property::TYPE )->Get(), (int)Visual::IMAGE, TEST_LOCATION ); - DALI_TEST_EQUALS( resultMap->Find( ImageVisual::Property::URL )->Get(), "Foobar.png", TEST_LOCATION ); + DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get(), (int)Visual::IMAGE, TEST_LOCATION); + DALI_TEST_EQUALS(resultMap->Find(ImageVisual::Property::URL)->Get(), "Foobar.png", TEST_LOCATION); // set as Color - control.SetProperty( Control::Property::BACKGROUND, Color::RED ); - propValue = control.GetProperty( Control::Property::BACKGROUND ); + control.SetProperty(Control::Property::BACKGROUND, Color::RED); + propValue = control.GetProperty(Control::Property::BACKGROUND); resultMap = propValue.GetMap(); - DALI_TEST_EQUALS( resultMap->Find( Toolkit::Visual::Property::TYPE )->Get(), (int)Visual::COLOR, TEST_LOCATION ); - DALI_TEST_EQUALS( resultMap->Find( ColorVisual::Property::MIX_COLOR )->Get(), Color::RED, TEST_LOCATION ); + DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get(), (int)Visual::COLOR, TEST_LOCATION); + DALI_TEST_EQUALS(resultMap->Find(ColorVisual::Property::MIX_COLOR)->Get(), Color::RED, TEST_LOCATION); - // Deprecated Properties - control.SetProperty( Control::Property::BACKGROUND_COLOR, Color::YELLOW ); - DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), Color::YELLOW, TEST_LOCATION ); - DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), control.GetBackgroundColor(), TEST_LOCATION ); + END_TEST; +} - control.ClearBackground(); +int UtcDaliControlShadowProperties(void) +{ + ToolkitTestApplication application; + Control control = Control::New(); + + DALI_TEST_CHECK(control.GetProperty(DevelControl::Property::SHADOW).Get().Empty()); - Property::Map deprecatedImageMap; - deprecatedImageMap[ "filename" ] = "TestImage"; - control.SetProperty( Control::Property::BACKGROUND_IMAGE, deprecatedImageMap ); - propValue = control.GetProperty( Control::Property::BACKGROUND_IMAGE ); + Property::Map imageMap; + imageMap[Toolkit::Visual::Property::TYPE] = Visual::IMAGE; + imageMap[ImageVisual::Property::URL] = "TestImage"; + control.SetProperty(DevelControl::Property::SHADOW, imageMap); + Property::Value propValue = control.GetProperty(DevelControl::Property::SHADOW); + Property::Map* resultMap = propValue.GetMap(); + DALI_TEST_CHECK(resultMap->Find(Toolkit::Visual::Property::TYPE)); + DALI_TEST_EQUALS(resultMap->Find(Toolkit::Visual::Property::TYPE)->Get(), (int)Visual::IMAGE, TEST_LOCATION); + DALI_TEST_CHECK(resultMap->Find(ImageVisual::Property::URL)); + DALI_TEST_EQUALS(resultMap->Find(ImageVisual::Property::URL)->Get(), "TestImage", TEST_LOCATION); + + Property::Map colorMap; + colorMap[Visual::Property::TYPE] = Visual::COLOR; + colorMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN; + control.SetProperty(DevelControl::Property::SHADOW, colorMap); + propValue = control.GetProperty(DevelControl::Property::SHADOW); resultMap = propValue.GetMap(); - DALI_TEST_EQUALS( resultMap->Find( ImageVisual::Property::URL )->Get< std::string >(), "TestImage" , TEST_LOCATION ); + 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::CYAN, TEST_LOCATION); - control.SetProperty( Control::Property::BACKGROUND_IMAGE, emptyMap ); - DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND_IMAGE ).Get< Property::Map >().Empty() ); + Property::Map emptyMap; + control.SetProperty(DevelControl::Property::SHADOW, emptyMap); + DALI_TEST_CHECK(control.GetProperty(DevelControl::Property::SHADOW).Get().Empty()); END_TEST; } @@ -556,18 +724,18 @@ int UtcDaliControlKeyProperties(void) ToolkitTestApplication application; Control control = Control::New(); - Stage::GetCurrent().Add( control ); + application.GetScene().Add(control); - DALI_TEST_EQUALS( control.HasKeyInputFocus(), control.GetProperty( Control::Property::KEY_INPUT_FOCUS ).Get< bool >(), TEST_LOCATION ); + DALI_TEST_EQUALS(control.HasKeyInputFocus(), control.GetProperty(Control::Property::KEY_INPUT_FOCUS).Get(), TEST_LOCATION); control.SetKeyInputFocus(); - DALI_TEST_EQUALS( true, control.GetProperty( Control::Property::KEY_INPUT_FOCUS ).Get< bool >(), TEST_LOCATION ); + DALI_TEST_EQUALS(true, control.GetProperty(Control::Property::KEY_INPUT_FOCUS).Get(), TEST_LOCATION); control.ClearKeyInputFocus(); - DALI_TEST_EQUALS( false, control.GetProperty( Control::Property::KEY_INPUT_FOCUS ).Get< bool >(), TEST_LOCATION ); + DALI_TEST_EQUALS(false, control.GetProperty(Control::Property::KEY_INPUT_FOCUS).Get(), TEST_LOCATION); - control.SetProperty( Control::Property::KEY_INPUT_FOCUS, true ); - DALI_TEST_EQUALS( true, control.HasKeyInputFocus(), TEST_LOCATION ); + control.SetProperty(Control::Property::KEY_INPUT_FOCUS, true); + DALI_TEST_EQUALS(true, control.HasKeyInputFocus(), TEST_LOCATION); END_TEST; } @@ -575,25 +743,25 @@ int UtcDaliControlKeyProperties(void) int UtcDaliControlGestureSignals(void) { ToolkitTestApplication application; - ConnectionTracker connectionTracker; - Control control = Control::New(); + ConnectionTracker connectionTracker; + Control control = Control::New(); // Each gesture detector gets created when connecting to the gesture signals - DALI_TEST_CHECK( !control.GetTapGestureDetector() ); - control.ConnectSignal( &connectionTracker, "tapped", &TestVoidCallback ); - DALI_TEST_CHECK( control.GetTapGestureDetector() ); + DALI_TEST_CHECK(!control.GetTapGestureDetector()); + control.ConnectSignal(&connectionTracker, "tapped", &TestVoidCallback); + DALI_TEST_CHECK(control.GetTapGestureDetector()); - DALI_TEST_CHECK( !control.GetPanGestureDetector() ); - control.ConnectSignal( &connectionTracker, "panned", &TestVoidCallback ); - DALI_TEST_CHECK( control.GetPanGestureDetector() ); + DALI_TEST_CHECK(!control.GetPanGestureDetector()); + control.ConnectSignal(&connectionTracker, "panned", &TestVoidCallback); + DALI_TEST_CHECK(control.GetPanGestureDetector()); - DALI_TEST_CHECK( !control.GetPinchGestureDetector() ); - control.ConnectSignal( &connectionTracker, "pinched", &TestVoidCallback ); - DALI_TEST_CHECK( control.GetPinchGestureDetector() ); + DALI_TEST_CHECK(!control.GetPinchGestureDetector()); + control.ConnectSignal(&connectionTracker, "pinched", &TestVoidCallback); + DALI_TEST_CHECK(control.GetPinchGestureDetector()); - DALI_TEST_CHECK( !control.GetLongPressGestureDetector() ); - control.ConnectSignal( &connectionTracker, "longPressed", &TestVoidCallback ); - DALI_TEST_CHECK( control.GetLongPressGestureDetector() ); + DALI_TEST_CHECK(!control.GetLongPressGestureDetector()); + control.ConnectSignal(&connectionTracker, "longPressed", &TestVoidCallback); + DALI_TEST_CHECK(control.GetLongPressGestureDetector()); END_TEST; } @@ -603,7 +771,7 @@ int UtcDaliControlImplKeyInputFocusGainedSignal(void) ToolkitTestApplication application; Control control = Control::New(); - Stage::GetCurrent().Add( control ); + application.GetScene().Add(control); gKeyInputFocusCallBackCalled = false; control.KeyInputFocusGainedSignal().Connect(&TestKeyInputFocusCallback); @@ -613,9 +781,9 @@ int UtcDaliControlImplKeyInputFocusGainedSignal(void) control.SetKeyInputFocus(); - DALI_TEST_CHECK( control.HasKeyInputFocus() ); + DALI_TEST_CHECK(control.HasKeyInputFocus()); - DALI_TEST_CHECK( gKeyInputFocusCallBackCalled ); + DALI_TEST_CHECK(gKeyInputFocusCallBackCalled); END_TEST; } @@ -625,7 +793,7 @@ int UtcDaliControlImplKeyInputFocusLostSignal(void) ToolkitTestApplication application; Control control = Control::New(); - Stage::GetCurrent().Add( control ); + application.GetScene().Add(control); gKeyInputFocusCallBackCalled = false; control.KeyInputFocusLostSignal().Connect(&TestKeyInputFocusCallback); @@ -635,11 +803,11 @@ int UtcDaliControlImplKeyInputFocusLostSignal(void) control.SetKeyInputFocus(); - DALI_TEST_CHECK( control.HasKeyInputFocus() ); + DALI_TEST_CHECK(control.HasKeyInputFocus()); control.ClearKeyInputFocus(); - DALI_TEST_CHECK( gKeyInputFocusCallBackCalled ); + DALI_TEST_CHECK(gKeyInputFocusCallBackCalled); END_TEST; } @@ -647,11 +815,11 @@ int UtcDaliControlImplKeyInputFocusLostSignal(void) int UtcDaliControlImplGetControlExtensionP(void) { ToolkitTestApplication application; - Control control = Control::New(); + Control control = Control::New(); - Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( control ); + Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation(control); - DALI_TEST_CHECK( NULL == controlImpl.GetControlExtension() ); + DALI_TEST_CHECK(NULL == controlImpl.GetControlExtension()); END_TEST; } @@ -659,20 +827,20 @@ int UtcDaliControlImplGetControlExtensionP(void) int UtcDaliControlAutoClipping(void) { ToolkitTestApplication application; - Control control = Control::New(); + Control control = Control::New(); - tet_infoline( "Test to see if a renderer gets added when we are clipping children" ); + tet_infoline("Test to see if a renderer gets added when we are clipping children"); - DALI_TEST_EQUALS( 0, control.GetRendererCount(), TEST_LOCATION ); + DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION); - control.SetProperty( Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN ); + control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN); - Stage::GetCurrent().Add( control ); + application.GetScene().Add(control); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( 1, control.GetRendererCount(), TEST_LOCATION ); + DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION); END_TEST; } @@ -680,30 +848,29 @@ int UtcDaliControlAutoClipping(void) int UtcDaliControlAutoClippingN(void) { ToolkitTestApplication application; - Control control = Control::New(); - control.SetProperty( Control::Property::BACKGROUND, Property::Map().Add( Toolkit::Visual::Property::TYPE, Visual::COLOR ) - .Add( ColorVisual::Property::MIX_COLOR, Color::RED ) ); + Control control = Control::New(); + control.SetProperty(Control::Property::BACKGROUND, Property::Map().Add(Toolkit::Visual::Property::TYPE, Visual::COLOR).Add(ColorVisual::Property::MIX_COLOR, Color::RED)); - tet_infoline( "Test to ensure that a renderer does NOT get added when we are clipping children and already have renderers/visuals" ); + tet_infoline("Test to ensure that a renderer does NOT get added when we are clipping children and already have renderers/visuals"); - DALI_TEST_EQUALS( 0, control.GetRendererCount(), TEST_LOCATION ); + DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION); - control.SetProperty( Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN ); + control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN); - Stage::GetCurrent().Add( control ); + application.GetScene().Add(control); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( 1, control.GetRendererCount(), TEST_LOCATION ); // Only 1, not 2 + DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION); // Only 1, not 2 // Ensure the background color is still RED rather than what's set by the automatic clipping - Property::Value value = control.GetProperty( Control::Property::BACKGROUND ); - Property::Map* map = value.GetMap(); - DALI_TEST_CHECK( map ); - Property::Value* colorValue = map->Find(ColorVisual::Property::MIX_COLOR ); - DALI_TEST_CHECK( colorValue ); - DALI_TEST_EQUALS( colorValue->Get< Vector4 >(), Color::RED, TEST_LOCATION ); + Property::Value value = control.GetProperty(Control::Property::BACKGROUND); + Property::Map* map = value.GetMap(); + DALI_TEST_CHECK(map); + Property::Value* colorValue = map->Find(ColorVisual::Property::MIX_COLOR); + DALI_TEST_CHECK(colorValue); + DALI_TEST_EQUALS(colorValue->Get(), Color::RED, TEST_LOCATION); END_TEST; } @@ -711,25 +878,25 @@ int UtcDaliControlAutoClippingN(void) int UtcDaliControlAutoClippingWhenAlreadyOnStage(void) { ToolkitTestApplication application; - Control control = Control::New(); + Control control = Control::New(); - tet_infoline( "Test to see if a renderer gets added when we are clipping children and when already on stage" ); + tet_infoline("Test to see if a renderer gets added when we are clipping children and when already on stage"); - DALI_TEST_EQUALS( 0, control.GetRendererCount(), TEST_LOCATION ); + DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION); - Stage::GetCurrent().Add( control ); + application.GetScene().Add(control); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( 0, control.GetRendererCount(), TEST_LOCATION ); + DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION); - control.SetProperty( Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN ); + control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( 1, control.GetRendererCount(), TEST_LOCATION ); + DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION); END_TEST; } @@ -737,35 +904,34 @@ int UtcDaliControlAutoClippingWhenAlreadyOnStage(void) int UtcDaliControlAutoClippingWhenAlreadyOnStageN(void) { ToolkitTestApplication application; - Control control = Control::New(); - control.SetProperty( Control::Property::BACKGROUND, Property::Map().Add( Toolkit::Visual::Property::TYPE, Visual::COLOR ) - .Add( ColorVisual::Property::MIX_COLOR, Color::RED ) ); + Control control = Control::New(); + control.SetProperty(Control::Property::BACKGROUND, Property::Map().Add(Toolkit::Visual::Property::TYPE, Visual::COLOR).Add(ColorVisual::Property::MIX_COLOR, Color::RED)); - tet_infoline( "Test to ensure that a renderer does NOT get added when we are clipping children and already have renderers/visuals and when already on stage" ); + tet_infoline("Test to ensure that a renderer does NOT get added when we are clipping children and already have renderers/visuals and when already on stage"); - DALI_TEST_EQUALS( 0, control.GetRendererCount(), TEST_LOCATION ); + DALI_TEST_EQUALS(0, control.GetRendererCount(), TEST_LOCATION); - Stage::GetCurrent().Add( control ); + application.GetScene().Add(control); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( 1, control.GetRendererCount(), TEST_LOCATION ); + DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION); - control.SetProperty( Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN ); + control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_CHILDREN); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( 1, control.GetRendererCount(), TEST_LOCATION ); // Still should be 1 + DALI_TEST_EQUALS(1, control.GetRendererCount(), TEST_LOCATION); // Still should be 1 // Ensure the background color is still RED rather than what's set by the automatic clipping - Property::Value value = control.GetProperty( Control::Property::BACKGROUND ); - Property::Map* map = value.GetMap(); - DALI_TEST_CHECK( map ); - Property::Value* colorValue = map->Find(ColorVisual::Property::MIX_COLOR ); - DALI_TEST_CHECK( colorValue ); - DALI_TEST_EQUALS( colorValue->Get< Vector4 >(), Color::RED, TEST_LOCATION ); + Property::Value value = control.GetProperty(Control::Property::BACKGROUND); + Property::Map* map = value.GetMap(); + DALI_TEST_CHECK(map); + Property::Value* colorValue = map->Find(ColorVisual::Property::MIX_COLOR); + DALI_TEST_CHECK(colorValue); + DALI_TEST_EQUALS(colorValue->Get(), Color::RED, TEST_LOCATION); END_TEST; } @@ -773,113 +939,144 @@ int UtcDaliControlAutoClippingWhenAlreadyOnStageN(void) int UtcDaliControlSetTransformSize(void) { ToolkitTestApplication application; - Control control = Control::New(); + Control control = Control::New(); Property::Map transformMap; - transformMap.Add( Visual::Transform::Property::OFFSET, Vector2( 10, 10 ) ) - .Add( Visual::Transform::Property::ANCHOR_POINT, Align::BOTTOM_END ) - .Add( Visual::Transform::Property::ORIGIN, Align::BOTTOM_END ) - .Add( Visual::Transform::Property::SIZE, Vector2( 10, 20 ) ); + transformMap.Add(Visual::Transform::Property::OFFSET, Vector2(10, 10)) + .Add(Visual::Transform::Property::ANCHOR_POINT, Align::BOTTOM_END) + .Add(Visual::Transform::Property::ORIGIN, Align::BOTTOM_END) + .Add(Visual::Transform::Property::SIZE, Vector2(10, 20)); - control.SetProperty( Control::Property::BACKGROUND, Property::Map().Add( Toolkit::Visual::Property::TYPE, Visual::COLOR ) - .Add( Visual::Property::TRANSFORM, transformMap ) ); + control.SetProperty(Control::Property::BACKGROUND, Property::Map().Add(Toolkit::Visual::Property::TYPE, Visual::COLOR).Add(Visual::Property::TRANSFORM, transformMap)); - tet_infoline( "Test to ensure that the control background transform does not get overwritten when adding to the stage" ); + tet_infoline("Test to ensure that the control background transform does not get overwritten when adding to the stage"); - Stage::GetCurrent().Add( control ); + application.GetScene().Add(control); application.SendNotification(); application.Render(); // Ensure the transform property still matches what we set - Property::Value value = control.GetProperty( Control::Property::BACKGROUND ); - Property::Map* map = value.GetMap(); - DALI_TEST_CHECK( map ); - Property::Value* transformValue = map->Find( Visual::Property::TRANSFORM ); - DALI_TEST_CHECK( transformValue ); + Property::Value value = control.GetProperty(Control::Property::BACKGROUND); + Property::Map* map = value.GetMap(); + DALI_TEST_CHECK(map); + Property::Value* transformValue = map->Find(Visual::Property::TRANSFORM); + DALI_TEST_CHECK(transformValue); Property::Map* retMap = transformValue->GetMap(); - DALI_TEST_CHECK( retMap ); - DALI_TEST_EQUALS( retMap->Find( Visual::Transform::Property::OFFSET )->Get< Vector2 >(), Vector2( 10, 10 ), TEST_LOCATION ); - DALI_TEST_EQUALS( retMap->Find( Visual::Transform::Property::ANCHOR_POINT )->Get< int >(), (int)Align::BOTTOM_END, TEST_LOCATION ); - DALI_TEST_EQUALS( retMap->Find( Visual::Transform::Property::ORIGIN )->Get< int >(), (int)Align::BOTTOM_END, TEST_LOCATION ); - DALI_TEST_EQUALS( retMap->Find( Visual::Transform::Property::SIZE )->Get< Vector2 >(), Vector2( 10, 20 ), TEST_LOCATION ); + DALI_TEST_CHECK(retMap); + DALI_TEST_EQUALS(retMap->Find(Visual::Transform::Property::OFFSET)->Get(), Vector2(10, 10), TEST_LOCATION); + DALI_TEST_EQUALS(retMap->Find(Visual::Transform::Property::ANCHOR_POINT)->Get(), (int)Align::BOTTOM_END, TEST_LOCATION); + DALI_TEST_EQUALS(retMap->Find(Visual::Transform::Property::ORIGIN)->Get(), (int)Align::BOTTOM_END, TEST_LOCATION); + DALI_TEST_EQUALS(retMap->Find(Visual::Transform::Property::SIZE)->Get(), Vector2(10, 20), TEST_LOCATION); END_TEST; } - int UtcDaliControlResourcesReady(void) { ToolkitTestApplication application; - tet_infoline( "Register 2 visuals and check ResourceReady when a visual is disabled" ); + tet_infoline("Register 2 visuals and check ResourceReady when a visual is disabled"); VisualFactory factory = VisualFactory::Get(); - DALI_TEST_CHECK( factory ); + DALI_TEST_CHECK(factory); Property::Map propertyMapLarge; - propertyMapLarge.Insert( Toolkit::Visual::Property::TYPE, Visual::IMAGE ); - propertyMapLarge.Insert( ImageVisual::Property::URL, TEST_LARGE_IMAGE_FILE_NAME ); + propertyMapLarge.Insert(Toolkit::Visual::Property::TYPE, Visual::IMAGE); + propertyMapLarge.Insert(ImageVisual::Property::URL, TEST_LARGE_IMAGE_FILE_NAME); Property::Map propertyMapSmall; - propertyMapSmall.Insert( Toolkit::Visual::Property::TYPE, Visual::IMAGE ); - propertyMapSmall.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); + propertyMapSmall.Insert(Toolkit::Visual::Property::TYPE, Visual::IMAGE); + propertyMapSmall.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME); - Visual::Base smallVisual = factory.CreateVisual( propertyMapSmall ); + Visual::Base smallVisual = factory.CreateVisual(propertyMapSmall); smallVisual.SetName("smallVisual"); - DALI_TEST_CHECK( smallVisual ); + DALI_TEST_CHECK(smallVisual); - DummyControl actor = DummyControl::New(); + DummyControl actor = DummyControl::New(); DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); - dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, smallVisual ); - actor.SetSize( 200.f, 200.f ); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, smallVisual); + + actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); - Toolkit::Visual::ResourceStatus resourceStatus = DevelControl::GetVisualResourceStatus(dummyImpl, DummyControl::Property::TEST_VISUAL); - DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.IsResourceReady(), false, TEST_LOCATION ); - DALI_TEST_EQUALS( static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION ); + Toolkit::Visual::ResourceStatus resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL); + DALI_TEST_EQUALS(actor.GetRendererCount(), 0u, TEST_LOCATION); + DALI_TEST_EQUALS(actor.IsResourceReady(), false, TEST_LOCATION); + DALI_TEST_EQUALS(static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add(actor); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); application.SendNotification(); application.Render(); - resourceStatus = DevelControl::GetVisualResourceStatus(dummyImpl, DummyControl::Property::TEST_VISUAL); - DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.IsResourceReady(), true, TEST_LOCATION ); - DALI_TEST_EQUALS( static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::READY), TEST_LOCATION ); + resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL); + DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(actor.IsResourceReady(), true, TEST_LOCATION); + DALI_TEST_EQUALS(static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::READY), TEST_LOCATION); - Visual::Base largeVisual = factory.CreateVisual( propertyMapLarge ); + Visual::Base largeVisual = factory.CreateVisual(propertyMapLarge); largeVisual.SetName("largeVisual"); - DALI_TEST_CHECK( largeVisual ); + DALI_TEST_CHECK(largeVisual); - tet_infoline( "Register Visual but set disabled, IsResourceReady should be true" ); + tet_infoline("Register Visual but set disabled, IsResourceReady should be true"); - dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, largeVisual, false ); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL2, largeVisual, false); - resourceStatus = DevelControl::GetVisualResourceStatus(dummyImpl, DummyControl::Property::TEST_VISUAL2); - DALI_TEST_EQUALS( static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION ); + resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL2); + DALI_TEST_EQUALS(static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION); application.SendNotification(); - resourceStatus = DevelControl::GetVisualResourceStatus(dummyImpl, DummyControl::Property::TEST_VISUAL2); - DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.IsResourceReady(), true, TEST_LOCATION ); - DALI_TEST_EQUALS( static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION ); + resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL2); + DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(actor.IsResourceReady(), true, TEST_LOCATION); + DALI_TEST_EQUALS(static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION); - dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL2, true ); + dummyImpl.EnableVisual(DummyControl::Property::TEST_VISUAL2, true); - DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); application.SendNotification(); - resourceStatus = DevelControl::GetVisualResourceStatus(dummyImpl, DummyControl::Property::TEST_VISUAL2); - DALI_TEST_EQUALS( static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::READY), TEST_LOCATION ); + resourceStatus = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL2); + DALI_TEST_EQUALS(static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::READY), TEST_LOCATION); + + END_TEST; +} + +int UtcDaliControlResourcesReady02(void) +{ + ToolkitTestApplication application; + tet_infoline("Change a resource during ResourceReady callback"); + + gResourceReadySignalFired = false; + + Control control = Control::New(); + control.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); + control.ResourceReadySignal().Connect(&ResourceReadySignal); + + Property::Map propertyMap; + propertyMap.Insert(ImageVisual::Property::URL, "invalid.jpg"); + control.SetProperty(Control::Property::BACKGROUND, propertyMap); + + application.GetScene().Add(control); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(control.IsResourceReady(), true, TEST_LOCATION); + DALI_TEST_EQUALS(gResourceReadySignalFired, true, TEST_LOCATION); + gResourceReadySignalFired = false; END_TEST; } @@ -889,28 +1086,28 @@ int UtcDaliControlMarginProperty(void) ToolkitTestApplication application; Control control = Control::New(); - control.SetBackgroundColor( Color::BLUE ); + control.SetBackgroundColor(Color::BLUE); - control.SetProperty( Control::Property::MARGIN, Extents( 20, 10, 0, 0 ) ); + control.SetProperty(Control::Property::MARGIN, Extents(20, 10, 0, 0)); - Stage::GetCurrent().Add( control ); + application.GetScene().Add(control); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( control.GetProperty( Control::Property::MARGIN ), Extents( 20, 10, 0, 0 ), TEST_LOCATION ); + DALI_TEST_EQUALS(control.GetProperty(Control::Property::MARGIN), Extents(20, 10, 0, 0), TEST_LOCATION); // Parent control has one ImageView as a Child. ImageView image = ImageView::New(); - image.SetBackgroundColor( Color::RED ); - image.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); - image.SetProperty( Control::Property::PADDING, Extents( 10, 10, 10, 10 ) ); - control.Add( image ); + image.SetBackgroundColor(Color::RED); + image.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); + image.SetProperty(Control::Property::PADDING, Extents(10, 10, 10, 10)); + control.Add(image); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( image.GetProperty( Control::Property::PADDING ), Extents( 10, 10, 10, 10 ), TEST_LOCATION ); + DALI_TEST_EQUALS(image.GetProperty(Control::Property::PADDING), Extents(10, 10, 10, 10), TEST_LOCATION); END_TEST; } @@ -920,16 +1117,16 @@ int UtcDaliControlPaddingProperty(void) ToolkitTestApplication application; Control control = Control::New(); - control.SetBackgroundColor( Color::BLUE ); + control.SetBackgroundColor(Color::BLUE); - control.SetProperty( Control::Property::PADDING, Extents( 15, 10, 5, 10 ) ); + control.SetProperty(Control::Property::PADDING, Extents(15, 10, 5, 10)); - Stage::GetCurrent().Add( control ); + application.GetScene().Add(control); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( control.GetProperty( Control::Property::PADDING ), Extents( 15, 10, 5, 10 ), TEST_LOCATION ); + DALI_TEST_EQUALS(control.GetProperty(Control::Property::PADDING), Extents(15, 10, 5, 10), TEST_LOCATION); Control child = Control::New(); control.Add(child); @@ -937,18 +1134,111 @@ int UtcDaliControlPaddingProperty(void) application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( child.GetProperty( Dali::Actor::Property::POSITION ), Vector3( 15, 5, 0 ), TEST_LOCATION ); + DALI_TEST_EQUALS(child.GetProperty(Dali::Actor::Property::POSITION), Vector3(15, 5, 0), TEST_LOCATION); + + control.SetProperty(Dali::Actor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::RIGHT_TO_LEFT); + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS(child.GetProperty(Dali::Actor::Property::POSITION), Vector3(10, 5, 0), TEST_LOCATION); + + control.SetProperty(Dali::Actor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::LEFT_TO_RIGHT); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(child.GetProperty(Dali::Actor::Property::POSITION), Vector3(15, 5, 0), TEST_LOCATION); + + END_TEST; +} + +int UtcDaliControlDoAction(void) +{ + ToolkitTestApplication application; + tet_infoline("DoAction on a visual registered with a control"); + + // Set up trace debug + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + + //Created AnimatedImageVisual + VisualFactory factory = VisualFactory::Get(); + Visual::Base imageVisual = factory.CreateVisual(TEST_IMAGE_FILE_NAME, ImageDimensions()); + + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual); + dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); + application.GetScene().Add(dummyControl); + + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION); + DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION); + textureTrace.Reset(); + + Property::Map attributes; + DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelImageVisual::Action::RELOAD, attributes); + + tet_infoline("Perform RELOAD action. should reload Image and generate a texture"); + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); - control.SetProperty( Dali::Actor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::RIGHT_TO_LEFT); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( child.GetProperty( Dali::Actor::Property::POSITION ), Vector3( 10, 5, 0 ), TEST_LOCATION ); + DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 1, TEST_LOCATION); + DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION); + END_TEST; +} + +int UtcDaliControlDoActionWhenNotStage(void) +{ + ToolkitTestApplication application; + tet_infoline("DoAction on a visual registered with a control but not staged"); + + // Set up trace debug + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + + //Created AnimatedImageVisual + VisualFactory factory = VisualFactory::Get(); + Visual::Base imageVisual = factory.CreateVisual(TEST_IMAGE_FILE_NAME, ImageDimensions()); + + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual); + dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); + + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION); + DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION); + textureTrace.Reset(); + + Property::Map attributes; + DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelImageVisual::Action::RELOAD, attributes); + + tet_infoline("Perform RELOAD action. should reload Image and generate a texture"); + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION); + textureTrace.Reset(); + + tet_infoline("Adding control to stage will in turn add the visual to the stage"); - control.SetProperty( Dali::Actor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::LEFT_TO_RIGHT); + application.GetScene().Add(dummyControl); application.SendNotification(); application.Render(); + tet_infoline("No change in textures could occurs as already loaded and cached texture will be used"); - DALI_TEST_EQUALS( child.GetProperty( Dali::Actor::Property::POSITION ), Vector3( 15, 5, 0 ), TEST_LOCATION ); + DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION); + DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION); + textureTrace.Reset(); END_TEST; }