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=396bab4a7da7175ad8ee85a3bf4deae1a539cb76;hp=bd15bb0da2707d64adc1f94a429dc06d62a4c642;hb=HEAD;hpb=648e3686e41d52a8adfce370156e901369b54716 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 bd15bb0..8000f62 --- 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) 2019 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 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,20 @@ * */ -#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 @@ -51,7 +51,6 @@ void utc_dali_toolkit_control_cleanup(void) namespace { - bool gObjectCreatedCallBackCalled; void TestCallback(BaseHandle handle) @@ -65,76 +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 "/svg1.svg"; -Vector4 GetControlBackgroundColor( Control& control ) +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 ) ); + 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 ); + 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; } @@ -143,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; } @@ -171,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; } @@ -193,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; } @@ -214,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(), TEST_LOCATION); + DALI_TEST_EQUALS(-1, control.GetProperty(DevelControl::Property::COUNTER_CLOCKWISE_FOCUSABLE_ACTOR_ID).Get(), 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(), 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(), TEST_LOCATION); END_TEST; } @@ -245,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); } @@ -284,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); } @@ -306,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); } @@ -327,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); } @@ -353,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; } @@ -387,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; } @@ -443,99 +498,111 @@ int UtcDaliControlTestParameters(void) int UtcDaliControlBackgroundColor(void) { ToolkitTestApplication application; - Control control = Control::New(); + Control control = Control::New(); - DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND ).Get< Property::Map >().Empty() ); + DALI_TEST_CHECK(control.GetProperty(Control::Property::BACKGROUND).Get().Empty()); - control.SetProperty( Control::Property::BACKGROUND, Color::RED ); + control.SetProperty(Control::Property::BACKGROUND, Color::RED); - 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 ); + 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::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" ); + 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(); - Stage::GetCurrent().Add( control ); + Control control = Control::New(); + control[Actor::Property::SIZE] = Vector2(100.0f, 100.0f); + application.GetScene().Add(control); - tet_infoline( "Set transparent, no renderers should be created" ); - control.SetBackgroundColor( Color::TRANSPARENT ); + 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(), 0u, TEST_LOCATION ); + DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(GetControlBackgroundColor(control), semiTransparent, TEST_LOCATION); - tet_infoline( "Set transparent alpha with positive RGB values, no renderers should be created, but returned color should reflect what we set" ); - const Vector4 alphaZero( 1.0f, 0.5f, 0.25f, 0.0f ); - control.SetBackgroundColor( alphaZero ); - application.SendNotification(); - application.Render(); - DALI_TEST_EQUALS( control.GetRendererCount(), 0u, TEST_LOCATION ); - DALI_TEST_EQUALS( GetControlBackgroundColor( control ), alphaZero, TEST_LOCATION ); + Renderer renderer = control.GetRendererAt(0); + DALI_TEST_CHECK(renderer); - 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 ); + 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 ), semiTransparent, TEST_LOCATION ); + 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, ensure no renderers are created" ); - control.SetBackgroundColor( Color::TRANSPARENT ); + 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(), 0u, TEST_LOCATION ); - DALI_TEST_EQUALS( GetControlBackgroundColor( control ), Color::TRANSPARENT, TEST_LOCATION ); - 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 ); + 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 ); - tet_infoline( "Set a color, only 1 renderer should exist" ); - control.SetBackgroundColor( Color::RED ); + 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 ); + DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::RED, TEST_LOCATION); - tet_infoline( "Clear the background, no renderers" ); + tet_infoline("Clear the background, no renderers"); control.ClearBackground(); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( control.GetRendererCount(), 0u, TEST_LOCATION ); + 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 ); + 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 ); + DALI_TEST_EQUALS(control.GetRendererCount(), 1u, TEST_LOCATION); + DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION); - tet_infoline( "Disable clipping, no renderers" ); - control.SetProperty( Actor::Property::CLIPPING_MODE, ClippingMode::DISABLED ); + drawTrace.Reset(); + + tet_infoline("Disable clipping, render nothing"); + control.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::DISABLED); application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( control.GetRendererCount(), 0u, TEST_LOCATION ); - DALI_TEST_EQUALS( GetControlBackgroundColor( control ), Color::TRANSPARENT, TEST_LOCATION ); + + DALI_TEST_EQUALS(GetControlBackgroundColor(control), Color::TRANSPARENT, TEST_LOCATION); + DALI_TEST_EQUALS(drawTrace.FindMethod("DrawArrays"), false, TEST_LOCATION); END_TEST; } @@ -543,25 +610,25 @@ int UtcDaliControlBackgroundColorRendererCount(void) int UtcDaliControlBackgroundImage(void) { ToolkitTestApplication application; - Control control = Control::New(); + Control control = Control::New(); - tet_infoline( "Set first background image" ); - control.SetProperty( Control::Property::BACKGROUND, "TestImage" ); + tet_infoline("Set first background image"); + control.SetProperty(Control::Property::BACKGROUND, "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" ); + 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" ); + tet_infoline("Set replacement background image"); + control.SetProperty(Control::Property::BACKGROUND, "TestImage2"); - 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; } @@ -569,49 +636,49 @@ int UtcDaliControlBackgroundImage(void) int UtcDaliControlBackgroundProperties(void) { ToolkitTestApplication application; - Control control = Control::New(); + Control control = Control::New(); - 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); END_TEST; } @@ -619,35 +686,35 @@ int UtcDaliControlBackgroundProperties(void) int UtcDaliControlShadowProperties(void) { ToolkitTestApplication application; - Control control = Control::New(); + Control control = Control::New(); - DALI_TEST_CHECK( control.GetProperty( DevelControl::Property::SHADOW ).Get< Property::Map >().Empty() ); + DALI_TEST_CHECK(control.GetProperty(DevelControl::Property::SHADOW).Get().Empty()); 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 ); + 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[Visual::Property::TYPE] = Visual::COLOR; colorMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN; - control.SetProperty( DevelControl::Property::SHADOW, colorMap ); - propValue = control.GetProperty( DevelControl::Property::SHADOW ); + control.SetProperty(DevelControl::Property::SHADOW, colorMap); + propValue = control.GetProperty(DevelControl::Property::SHADOW); 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( DevelControl::Property::SHADOW, emptyMap ); - DALI_TEST_CHECK( control.GetProperty( DevelControl::Property::SHADOW ).Get< Property::Map >().Empty() ); + control.SetProperty(DevelControl::Property::SHADOW, emptyMap); + DALI_TEST_CHECK(control.GetProperty(DevelControl::Property::SHADOW).Get().Empty()); END_TEST; } @@ -657,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; } @@ -676,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; } @@ -704,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); @@ -714,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; } @@ -726,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); @@ -736,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; } @@ -748,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; } @@ -760,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; } @@ -781,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; } @@ -812,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; } @@ -838,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; } @@ -874,114 +939,147 @@ 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 ); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, smallVisual); - actor.SetSize( 200.f, 200.f ); + actor.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); 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 ); + 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 = 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 ); + 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 = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL2); - DALI_TEST_EQUALS( static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION ); + DALI_TEST_EQUALS(static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION); application.SendNotification(); 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 ); + 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 = actor.GetVisualResourceStatus(DummyControl::Property::TEST_VISUAL2); - DALI_TEST_EQUALS( static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::READY), TEST_LOCATION ); + 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(); + + // Wait for loading & rasterization + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); + + DALI_TEST_EQUALS(control.IsResourceReady(), true, TEST_LOCATION); + DALI_TEST_EQUALS(gResourceReadySignalFired, true, TEST_LOCATION); + gResourceReadySignalFired = false; END_TEST; } @@ -991,28 +1089,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; } @@ -1022,16 +1120,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); @@ -1039,18 +1137,18 @@ 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); + 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(child.GetProperty(Dali::Actor::Property::POSITION), Vector3(10, 5, 0), TEST_LOCATION); - control.SetProperty( Dali::Actor::Property::LAYOUT_DIRECTION, Dali::LayoutDirection::LEFT_TO_RIGHT); + 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 ); + DALI_TEST_EQUALS(child.GetProperty(Dali::Actor::Property::POSITION), Vector3(15, 5, 0), TEST_LOCATION); END_TEST; } @@ -1058,92 +1156,339 @@ int UtcDaliControlPaddingProperty(void) int UtcDaliControlDoAction(void) { ToolkitTestApplication application; - tet_infoline( "DoAction on a visual registered with a control" ); + 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 ); + 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() ); + 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()); + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); - dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, imageVisual ); - dummyControl.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( dummyControl ); + 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 ); + 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 ); + 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 ); + 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 ); + 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.CountMethod("DeleteTextures"), 1, TEST_LOCATION ); - DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), true, 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" ); + 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 ); + 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() ); + 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()); + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); - dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, imageVisual ); - dummyControl.SetSize(200.f, 200.f); + 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 ); + 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 ); + 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 ); + 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 ); + 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" ); + tet_infoline("Adding control to stage will in turn add the visual to the stage"); - Stage::GetCurrent().Add( dummyControl ); + 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" ); + tet_infoline("No change in textures could occurs as already loaded and cached texture will be used"); - DALI_TEST_EQUALS( textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION ); - DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); + DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION); + DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION); textureTrace.Reset(); END_TEST; } + +int UtcDaliControlDoActionMultipleWhenNotStage01(void) +{ + ToolkitTestApplication application; + tet_infoline("DoAction on a visual registered with a control multiple times 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; + const uint32_t repeatMax = 10u; + for(uint32_t repeatCnt = 0u; repeatCnt < repeatMax; ++repeatCnt) + { + // DoAction multiple times. + 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("Do not load image on more time even we request reload multiple times."); + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1, 1), false, TEST_LOCATION); + + tet_infoline("Adding control to stage will in turn add the visual to the stage"); + + 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(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION); + DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION); + textureTrace.Reset(); + + dummyControl.Unparent(); + dummyControl.Reset(); + application.SendNotification(); + application.Render(); + + END_TEST; +} + +int UtcDaliControlDoActionMultipleWhenNotStage02(void) +{ + ToolkitTestApplication application; + tet_infoline("DoAction on a visual registered with a control multiple times 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()); + Visual::Base imageVisual2 = factory.CreateVisual(TEST_IMAGE_FILE_NAME, ImageDimensions()); + + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + + gResourceReadySignalFired = false; + + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual); + dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); + dummyControl.ResourceReadySignal().Connect(&ResourceReadySignal); + + application.SendNotification(); + application.Render(); + + // Dummy control to keep cache + DummyControl keepCacheControl = DummyControl::New(true); + Impl::DummyControl& keepCacheImpl = static_cast(keepCacheControl.GetImplementation()); + + keepCacheImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual2); + keepCacheControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); + + // Load request for keep cache control. + application.GetScene().Add(keepCacheControl); + + Property::Map attributes; + const uint32_t repeatMax = 10u; + for(uint32_t repeatCnt = 0u; repeatCnt < repeatMax; ++repeatCnt) + { + // DoAction multiple times. + DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelImageVisual::Action::RELOAD, attributes); + } + + application.SendNotification(); + application.Render(); + + try + { + application.SendNotification(); + application.Render(); + + tet_infoline("Async load completed. Sigabort should not be occured"); + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + + tet_infoline("ResourceReady signal must be fired!"); + DALI_TEST_EQUALS(gResourceReadySignalFired, true, TEST_LOCATION); + + tet_infoline("Texture generation occured"); + DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION); + DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION); + textureTrace.Reset(); + + tet_result(TET_PASS); + } + catch(...) + { + // Must not be throw exception. + tet_infoline("Exception occured!"); + tet_result(TET_FAIL); + } + + END_TEST; +} + +int UtcDaliControlDoActionMultipleWhenNotStage03(void) +{ + ToolkitTestApplication application; + tet_infoline("DoAction on a visual registered with a control multiple times 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()); + Visual::Base imageVisual2 = factory.CreateVisual(TEST_IMAGE_FILE_NAME, ImageDimensions()); + + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + + gResourceReadySignalFired = false; + + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual); + dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); + dummyControl.ResourceReadySignal().Connect(&ResourceReadySignal); + + application.SendNotification(); + application.Render(); + + // Dummy control to keep cache + DummyControl keepCacheControl = DummyControl::New(true); + Impl::DummyControl& keepCacheImpl = static_cast(keepCacheControl.GetImplementation()); + + keepCacheImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual2); + keepCacheControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); + + // Load request for keep cache control. + application.GetScene().Add(keepCacheControl); + + Property::Map attributes; + const uint32_t repeatMax = 10u; + for(uint32_t repeatCnt = 0u; repeatCnt < repeatMax; ++repeatCnt) + { + // DoAction multiple times. + DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelImageVisual::Action::RELOAD, attributes); + } + + application.SendNotification(); + application.Render(); + + try + { + tet_infoline("Destroy control without stage on. And create new object that as same visual pointer as previous control"); + + const auto* imageVisualObjectPtr = imageVisual.GetObjectPtr(); + const uint32_t tryCountMax = 100u; + uint32_t tryCount = 0u; + do + { + dummyControl.Reset(); + imageVisual.Reset(); + + imageVisual = factory.CreateVisual(TEST_IMAGE_FILE_NAME, ImageDimensions()); + 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)); + } while(++tryCount < tryCountMax && imageVisualObjectPtr != imageVisual.GetObjectPtr()); + + tet_printf("Luck-trial count : %u. Success? %d\n", tryCount, imageVisualObjectPtr == imageVisual.GetObjectPtr()); + + // Connect signal + dummyControl.ResourceReadySignal().Connect(&ResourceReadySignal); + + application.SendNotification(); + application.Render(); + + tet_infoline("Async load completed after control destroyed. Sigabort should not be occured"); + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + + tet_infoline("ResourceReady signal must not be fired!"); + DALI_TEST_EQUALS(gResourceReadySignalFired, false, TEST_LOCATION); + + tet_infoline("Texture generation occured"); + DALI_TEST_EQUALS(textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION); + DALI_TEST_EQUALS(textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION); + textureTrace.Reset(); + + tet_result(TET_PASS); + } + catch(...) + { + // Must not be throw exception. + tet_infoline("Exception occured!"); + tet_result(TET_FAIL); + } + + END_TEST; +} \ No newline at end of file