X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-CustomActor.cpp;h=1df10a6df91c3e7ae546273476fccc2409b9b722;hb=fe58df83b2d72c4beceb101eb9cffcc5442f3d6e;hp=34392ad117530c171614c3340f8d89b3f8e2ab38;hpb=654883a2444be217daca83df32c411bb0628bf4a;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-CustomActor.cpp b/automated-tests/src/dali/utc-Dali-CustomActor.cpp index 34392ad..1df10a6 100644 --- a/automated-tests/src/dali/utc-Dali-CustomActor.cpp +++ b/automated-tests/src/dali/utc-Dali-CustomActor.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,21 +15,29 @@ * */ -#include -#include -#include - #include -#include #include -#include #include +#include +#include +#include #include +#include + +#include + #include "dali-test-suite-utils/dali-test-suite-utils.h" #include "test-custom-actor.h" using namespace Dali; +namespace Test +{ +void Doubler(float& current, const PropertyInputContainer& inputs) +{ + current = 2.0f * inputs[0]->GetFloat(); +} +} // namespace Test void custom_actor_test_startup(void) { @@ -41,11 +49,8 @@ void custom_actor_test_cleanup(void) test_return_value = TET_PASS; } - - using namespace Dali; - int UtcDaliCustomActorDestructor(void) { TestApplication application; @@ -53,17 +58,17 @@ int UtcDaliCustomActorDestructor(void) CustomActor* actor = new CustomActor(); delete actor; - DALI_TEST_CHECK( true ); + DALI_TEST_CHECK(true); END_TEST; } int UtcDaliCustomActorImplDestructor(void) { - TestApplication application; + TestApplication application; CustomActorImpl* actor = new Test::Impl::TestCustomActor(); - CustomActor customActor( *actor ); // Will automatically unref at the end of this function + CustomActor customActor(*actor); // Will automatically unref at the end of this function - DALI_TEST_CHECK( true ); + DALI_TEST_CHECK(true); END_TEST; } @@ -76,17 +81,17 @@ int UtcDaliCustomActorDownCast(void) Test::TestCustomActor custom = Test::TestCustomActor::New(); Actor anActor = Actor::New(); - anActor.Add( custom ); + anActor.Add(custom); - Actor child = anActor.GetChildAt(0); - CustomActor customActor = CustomActor::DownCast( child ); - DALI_TEST_CHECK( customActor ); + Actor child = anActor.GetChildAt(0); + CustomActor customActor = CustomActor::DownCast(child); + DALI_TEST_CHECK(customActor); customActor = NULL; - DALI_TEST_CHECK( !customActor ); + DALI_TEST_CHECK(!customActor); - customActor = DownCast< CustomActor >( child ); - DALI_TEST_CHECK( customActor ); + customActor = DownCast(child); + DALI_TEST_CHECK(customActor); END_TEST; } @@ -96,41 +101,80 @@ int UtcDaliCustomActorDownCastNegative(void) TestApplication application; tet_infoline("Testing Dali::CustomActor::DownCast()"); - Actor actor1 = Actor::New(); + Actor actor1 = Actor::New(); Actor anActor = Actor::New(); anActor.Add(actor1); - Actor child = anActor.GetChildAt(0); - CustomActor customActor = CustomActor::DownCast( child ); - DALI_TEST_CHECK( !customActor ); + Actor child = anActor.GetChildAt(0); + CustomActor customActor = CustomActor::DownCast(child); + DALI_TEST_CHECK(!customActor); Actor unInitialzedActor; - customActor = CustomActor::DownCast( unInitialzedActor ); - DALI_TEST_CHECK( !customActor ); + customActor = CustomActor::DownCast(unInitialzedActor); + DALI_TEST_CHECK(!customActor); - customActor = DownCast< CustomActor >( unInitialzedActor ); - DALI_TEST_CHECK( !customActor ); + customActor = DownCast(unInitialzedActor); + DALI_TEST_CHECK(!customActor); END_TEST; } -int UtcDaliCustomActorOnStageConnectionDisconnection(void) +int UtcDaliCustomActorMoveConstructor(void) { TestApplication application; - tet_infoline("Testing Dali::CustomActor::OnStageConnection() & OnStageDisconnection"); Test::TestCustomActor custom = Test::TestCustomActor::New(); - DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); + DALI_TEST_CHECK(custom); + DALI_TEST_EQUALS(1, custom.GetBaseObject().ReferenceCount(), TEST_LOCATION); + + int id = custom.GetProperty(Actor::Property::ID); + + Test::TestCustomActor moved = std::move(custom); + DALI_TEST_CHECK(moved); + DALI_TEST_EQUALS(id, moved.GetProperty(Actor::Property::ID), TEST_LOCATION); + DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION); + DALI_TEST_CHECK(!custom); + + END_TEST; +} + +int UtcDaliCustomActorMoveAssignment(void) +{ + TestApplication application; + + Test::TestCustomActor custom = Test::TestCustomActor::New(); + DALI_TEST_CHECK(custom); + DALI_TEST_EQUALS(1, custom.GetBaseObject().ReferenceCount(), TEST_LOCATION); + + int id = custom.GetProperty(Actor::Property::ID); + + Test::TestCustomActor moved; + moved = std::move(custom); + DALI_TEST_CHECK(moved); + DALI_TEST_EQUALS(id, moved.GetProperty(Actor::Property::ID), TEST_LOCATION); + DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION); + DALI_TEST_CHECK(!custom); + + END_TEST; +} + +int UtcDaliCustomActorOnSceneConnectionDisconnection(void) +{ + TestApplication application; + tet_infoline("Testing Dali::CustomActor::OnSceneConnection() & OnSceneDisconnection"); + + Test::TestCustomActor custom = Test::TestCustomActor::New(); + DALI_TEST_EQUALS(0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); // add the custom actor to stage - Stage::GetCurrent().Add( custom ); + application.GetScene().Add(custom); - DALI_TEST_EQUALS( 1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", custom.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", custom.GetMethodsCalled()[0], TEST_LOCATION); - Stage::GetCurrent().Remove( custom ); + application.GetScene().Remove(custom); - DALI_TEST_EQUALS( 2, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", custom.GetMethodsCalled()[ 1 ], TEST_LOCATION ); + DALI_TEST_EQUALS(2, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", custom.GetMethodsCalled()[1], TEST_LOCATION); // Excercise the message passing to Update thread @@ -140,10 +184,10 @@ int UtcDaliCustomActorOnStageConnectionDisconnection(void) END_TEST; } -int UtcDaliCustomActorOnStageConnectionOrder(void) +int UtcDaliCustomActorOnSceneConnectionOrder(void) { TestApplication application; - tet_infoline("Testing Dali::CustomActor::OnStageConnection() order"); + tet_infoline("Testing Dali::CustomActor::OnSceneConnection() order"); MasterCallStack.clear(); @@ -155,74 +199,87 @@ int UtcDaliCustomActorOnStageConnectionOrder(void) * / \ \ * D E F * - * OnStageConnection should be received for A, B, D, E, C, and finally F + * OnSceneConnection should be received for A, B, D, E, C, and finally F */ Test::TestCustomActor actorA = Test::TestCustomActor::New(); - actorA.SetName( "ActorA" ); + actorA.SetProperty(Actor::Property::NAME, "ActorA"); Test::TestCustomActor actorB = Test::TestCustomActor::New(); - actorB.SetName( "ActorB" ); - actorA.Add( actorB ); + actorB.SetProperty(Actor::Property::NAME, "ActorB"); + actorA.Add(actorB); Test::TestCustomActor actorC = Test::TestCustomActor::New(); - actorC.SetName( "ActorC" ); - actorA.Add( actorC ); + actorC.SetProperty(Actor::Property::NAME, "ActorC"); + actorA.Add(actorC); Test::TestCustomActor actorD = Test::TestCustomActor::New(); - actorD.SetName( "ActorD" ); - actorB.Add( actorD ); + actorD.SetProperty(Actor::Property::NAME, "ActorD"); + actorB.Add(actorD); Test::TestCustomActor actorE = Test::TestCustomActor::New(); - actorE.SetName( "ActorE" ); - actorB.Add( actorE ); + actorE.SetProperty(Actor::Property::NAME, "ActorE"); + actorB.Add(actorE); Test::TestCustomActor actorF = Test::TestCustomActor::New(); - actorF.SetName( "ActorF" ); - actorC.Add( actorF ); + actorF.SetProperty(Actor::Property::NAME, "ActorF"); + actorC.Add(actorF); // add the custom actor to stage - Stage::GetCurrent().Add( actorA ); + application.GetScene().Add(actorA); - DALI_TEST_EQUALS( 3, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorA.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorA.GetMethodsCalled()[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorA.GetMethodsCalled()[ 2 ], TEST_LOCATION ); + DALI_TEST_EQUALS(4, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorA.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorA.GetMethodsCalled()[1], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorA.GetMethodsCalled()[2], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorA.GetMethodsCalled()[3], TEST_LOCATION); - DALI_TEST_EQUALS( 3, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorB.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorB.GetMethodsCalled()[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorB.GetMethodsCalled()[ 2 ], TEST_LOCATION ); + DALI_TEST_EQUALS(4, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorB.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorB.GetMethodsCalled()[1], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorB.GetMethodsCalled()[2], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorB.GetMethodsCalled()[3], TEST_LOCATION); - DALI_TEST_EQUALS( 2, (int)(actorC.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorC.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorC.GetMethodsCalled()[ 1 ], TEST_LOCATION ); + DALI_TEST_EQUALS(3, (int)(actorC.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorC.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorC.GetMethodsCalled()[1], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorC.GetMethodsCalled()[2], TEST_LOCATION); - DALI_TEST_EQUALS( 1, (int)(actorD.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorD.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(2, (int)(actorD.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorD.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorD.GetMethodsCalled()[1], TEST_LOCATION); - DALI_TEST_EQUALS( 1, (int)(actorE.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorE.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(2, (int)(actorE.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorE.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorE.GetMethodsCalled()[1], TEST_LOCATION); - DALI_TEST_EQUALS( 1, (int)(actorF.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorF.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(2, (int)(actorF.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorF.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorF.GetMethodsCalled()[1], TEST_LOCATION); // Check sequence is correct in MasterCallStack - DALI_TEST_EQUALS( 3+3+2+1+1+1, (int)(MasterCallStack.size()), TEST_LOCATION ); + DALI_TEST_EQUALS(4 + 4 + 3 + 2 + 2 + 2, (int)(MasterCallStack.size()), TEST_LOCATION); + + DALI_TEST_EQUALS("ActorA: OnPropertySet", MasterCallStack[0], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnPropertySet", MasterCallStack[1], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildAdd", MasterCallStack[2], TEST_LOCATION); + DALI_TEST_EQUALS("ActorC: OnPropertySet", MasterCallStack[3], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildAdd", MasterCallStack[4], TEST_LOCATION); + DALI_TEST_EQUALS("ActorD: OnPropertySet", MasterCallStack[5], TEST_LOCATION); - DALI_TEST_EQUALS( "ActorA: OnChildAdd", MasterCallStack[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnChildAdd", MasterCallStack[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorB: OnChildAdd", MasterCallStack[ 2 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorB: OnChildAdd", MasterCallStack[ 3 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorC: OnChildAdd", MasterCallStack[ 4 ], TEST_LOCATION ); + DALI_TEST_EQUALS("ActorB: OnChildAdd", MasterCallStack[6], TEST_LOCATION); + DALI_TEST_EQUALS("ActorE: OnPropertySet", MasterCallStack[7], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnChildAdd", MasterCallStack[8], TEST_LOCATION); + DALI_TEST_EQUALS("ActorF: OnPropertySet", MasterCallStack[9], TEST_LOCATION); + DALI_TEST_EQUALS("ActorC: OnChildAdd", MasterCallStack[10], TEST_LOCATION); - DALI_TEST_EQUALS( "ActorA: OnStageConnection", MasterCallStack[ 5 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorB: OnStageConnection", MasterCallStack[ 6 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorD: OnStageConnection", MasterCallStack[ 7 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorE: OnStageConnection", MasterCallStack[ 8 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorC: OnStageConnection", MasterCallStack[ 9 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorF: OnStageConnection", MasterCallStack[ 10 ], TEST_LOCATION ); + DALI_TEST_EQUALS("ActorA: OnSceneConnection", MasterCallStack[11], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnSceneConnection", MasterCallStack[12], TEST_LOCATION); + DALI_TEST_EQUALS("ActorD: OnSceneConnection", MasterCallStack[13], TEST_LOCATION); + DALI_TEST_EQUALS("ActorE: OnSceneConnection", MasterCallStack[14], TEST_LOCATION); + DALI_TEST_EQUALS("ActorC: OnSceneConnection", MasterCallStack[15], TEST_LOCATION); + DALI_TEST_EQUALS("ActorF: OnSceneConnection", MasterCallStack[16], TEST_LOCATION); // Excercise the message passing to Update thread @@ -232,12 +289,12 @@ int UtcDaliCustomActorOnStageConnectionOrder(void) END_TEST; } -int UtcDaliCustomActorOnStageDisconnectionOrder(void) +int UtcDaliCustomActorOnSceneDisconnectionOrder(void) { TestApplication application; - tet_infoline("Testing Dali::CustomActor::OnStageDisconnection() order"); + tet_infoline("Testing Dali::CustomActor::OnSceneDisconnection() order"); - Stage stage = Stage::GetCurrent(); + Integration::Scene stage = application.GetScene(); /* Build tree of actors: * @@ -247,32 +304,32 @@ int UtcDaliCustomActorOnStageDisconnectionOrder(void) * / \ \ * D E F * - * OnStageDisconnection should be received for D, E, B, F, C, and finally A. + * OnSceneDisconnection should be received for D, E, B, F, C, and finally A. */ Test::TestCustomActor actorA = Test::TestCustomActor::New(); - actorA.SetName( "ActorA" ); - stage.Add( actorA ); + actorA.SetProperty(Actor::Property::NAME, "ActorA"); + stage.Add(actorA); Test::TestCustomActor actorB = Test::TestCustomActor::New(); - actorB.SetName( "ActorB" ); - actorA.Add( actorB ); + actorB.SetProperty(Actor::Property::NAME, "ActorB"); + actorA.Add(actorB); Test::TestCustomActor actorC = Test::TestCustomActor::New(); - actorC.SetName( "ActorC" ); - actorA.Add( actorC ); + actorC.SetProperty(Actor::Property::NAME, "ActorC"); + actorA.Add(actorC); Test::TestCustomActor actorD = Test::TestCustomActor::New(); - actorD.SetName( "ActorD" ); - actorB.Add( actorD ); + actorD.SetProperty(Actor::Property::NAME, "ActorD"); + actorB.Add(actorD); Test::TestCustomActor actorE = Test::TestCustomActor::New(); - actorE.SetName( "ActorE" ); - actorB.Add( actorE ); + actorE.SetProperty(Actor::Property::NAME, "ActorE"); + actorB.Add(actorE); Test::TestCustomActor actorF = Test::TestCustomActor::New(); - actorF.SetName( "ActorF" ); - actorC.Add( actorF ); + actorF.SetProperty(Actor::Property::NAME, "ActorF"); + actorC.Add(actorF); // Excercise the message passing to Update thread @@ -289,36 +346,36 @@ int UtcDaliCustomActorOnStageDisconnectionOrder(void) actorF.ResetCallStack(); MasterCallStack.clear(); - stage.Remove( actorA ); + stage.Remove(actorA); - DALI_TEST_EQUALS( 1, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", actorA.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(1, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", actorA.GetMethodsCalled()[0], TEST_LOCATION); - DALI_TEST_EQUALS( 1, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", actorB.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(1, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", actorB.GetMethodsCalled()[0], TEST_LOCATION); - DALI_TEST_EQUALS( 1, (int)(actorC.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", actorC.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(1, (int)(actorC.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", actorC.GetMethodsCalled()[0], TEST_LOCATION); - DALI_TEST_EQUALS( 1, (int)(actorD.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", actorD.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(1, (int)(actorD.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", actorD.GetMethodsCalled()[0], TEST_LOCATION); - DALI_TEST_EQUALS( 1, (int)(actorE.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", actorE.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(1, (int)(actorE.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", actorE.GetMethodsCalled()[0], TEST_LOCATION); - DALI_TEST_EQUALS( 1, (int)(actorF.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", actorF.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(1, (int)(actorF.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", actorF.GetMethodsCalled()[0], TEST_LOCATION); // Check sequence is correct in MasterCallStack - DALI_TEST_EQUALS( 6, (int)(MasterCallStack.size()), TEST_LOCATION ); + DALI_TEST_EQUALS(6, (int)(MasterCallStack.size()), TEST_LOCATION); - DALI_TEST_EQUALS( "ActorD: OnStageDisconnection", MasterCallStack[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorE: OnStageDisconnection", MasterCallStack[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorB: OnStageDisconnection", MasterCallStack[ 2 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorF: OnStageDisconnection", MasterCallStack[ 3 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorC: OnStageDisconnection", MasterCallStack[ 4 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnStageDisconnection", MasterCallStack[ 5 ], TEST_LOCATION ); + DALI_TEST_EQUALS("ActorD: OnSceneDisconnection", MasterCallStack[0], TEST_LOCATION); + DALI_TEST_EQUALS("ActorE: OnSceneDisconnection", MasterCallStack[1], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnSceneDisconnection", MasterCallStack[2], TEST_LOCATION); + DALI_TEST_EQUALS("ActorF: OnSceneDisconnection", MasterCallStack[3], TEST_LOCATION); + DALI_TEST_EQUALS("ActorC: OnSceneDisconnection", MasterCallStack[4], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnSceneDisconnection", MasterCallStack[5], TEST_LOCATION); // Excercise the message passing to Update thread @@ -328,40 +385,44 @@ int UtcDaliCustomActorOnStageDisconnectionOrder(void) END_TEST; } -int UtcDaliCustomActorAddDuringOnStageConnection(void) +int UtcDaliCustomActorAddDuringOnSceneConnection(void) { TestApplication application; - tet_infoline("Testing Actor::Add behaviour during Dali::CustomActor::OnStageConnection() callback"); + tet_infoline("Testing Actor::Add behaviour during Dali::CustomActor::OnSceneConnection() callback"); - Stage stage = Stage::GetCurrent(); + Integration::Scene stage = application.GetScene(); MasterCallStack.clear(); - /* The actorA is a special variant which adds a child to itself during OnStageConnection() + /* The actorA is a special variant which adds a child to itself during OnSceneConnection() * The actorB is provided as the child */ Test::TestCustomActor actorB = Test::TestCustomActor::New(); - actorB.SetName( "ActorB" ); + actorB.SetProperty(Actor::Property::NAME, "ActorB"); - Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant1( actorB ); - actorA.SetName( "ActorA" ); - stage.Add( actorA ); + Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant1(actorB); + actorA.SetProperty(Actor::Property::NAME, "ActorA"); + stage.Add(actorA); // Check callback sequence - DALI_TEST_EQUALS( 2, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorA.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorA.GetMethodsCalled()[ 1 ], TEST_LOCATION ); // Called from within OnStageConnection() + DALI_TEST_EQUALS(3, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorA.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorA.GetMethodsCalled()[1], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorA.GetMethodsCalled()[2], TEST_LOCATION); // Called from within OnSceneConnection() - DALI_TEST_EQUALS( 2, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorA.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(2, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorB.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorB.GetMethodsCalled()[1], TEST_LOCATION); - DALI_TEST_EQUALS( 3, (int)(MasterCallStack.size()), TEST_LOCATION ); + DALI_TEST_EQUALS(5, (int)(MasterCallStack.size()), TEST_LOCATION); - DALI_TEST_EQUALS( "ActorA: OnStageConnection", MasterCallStack[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorB: OnStageConnection", MasterCallStack[ 1 ], TEST_LOCATION ); // Occurs during Actor::Add from within from within OnStageConnection() - DALI_TEST_EQUALS( "ActorA: OnChildAdd", MasterCallStack[ 2 ], TEST_LOCATION ); // Occurs after Actor::Add from within from within OnStageConnection() + DALI_TEST_EQUALS("ActorB: OnPropertySet", MasterCallStack[0], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnPropertySet", MasterCallStack[1], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnSceneConnection", MasterCallStack[2], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnSceneConnection", MasterCallStack[3], TEST_LOCATION); // Occurs during Actor::Add from within from within OnSceneConnection() + DALI_TEST_EQUALS("ActorA: OnChildAdd", MasterCallStack[4], TEST_LOCATION); // Occurs after Actor::Add from within from within OnSceneConnection() // Excercise the message passing to Update thread @@ -371,61 +432,65 @@ int UtcDaliCustomActorAddDuringOnStageConnection(void) // Check everything is ok after Actors are removed - stage.Remove( actorA ); + stage.Remove(actorA); application.SendNotification(); application.Render(); application.Render(); END_TEST; } -int UtcDaliCustomActorRemoveDuringOnStageConnection(void) +int UtcDaliCustomActorRemoveDuringOnSceneConnection(void) { TestApplication application; - tet_infoline("Testing Actor::Remove behaviour during Dali::CustomActor::OnStageConnection() callback"); + tet_infoline("Testing Actor::Remove behaviour during Dali::CustomActor::OnSceneConnection() callback"); - Stage stage = Stage::GetCurrent(); + Integration::Scene stage = application.GetScene(); MasterCallStack.clear(); - /* The actorA is a special variant which removes its children during OnStageConnection() + /* The actorA is a special variant which removes its children during OnSceneConnection() * Actors B & C are provided as the children */ Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant2(); - actorA.SetName( "ActorA" ); + actorA.SetProperty(Actor::Property::NAME, "ActorA"); Test::TestCustomActor actorB = Test::TestCustomActor::New(); - actorB.SetName( "ActorB" ); - actorA.Add( actorB ); + actorB.SetProperty(Actor::Property::NAME, "ActorB"); + actorA.Add(actorB); Test::TestCustomActor actorC = Test::TestCustomActor::New(); - actorC.SetName( "ActorC" ); - actorA.Add( actorC ); + actorC.SetProperty(Actor::Property::NAME, "ActorC"); + actorA.Add(actorC); - stage.Add( actorA ); + stage.Add(actorA); // Check callback sequence - DALI_TEST_EQUALS( 5, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorA.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorA.GetMethodsCalled()[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorA.GetMethodsCalled()[ 2 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildRemove", actorA.GetMethodsCalled()[ 3 ], TEST_LOCATION ); // Called from within OnStageConnection() - DALI_TEST_EQUALS( "OnChildRemove", actorA.GetMethodsCalled()[ 4 ], TEST_LOCATION ); // Called from within OnStageConnection() - - DALI_TEST_EQUALS( 5, (int)(MasterCallStack.size()), TEST_LOCATION ); - - DALI_TEST_EQUALS( "ActorA: OnChildAdd", MasterCallStack[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnChildAdd", MasterCallStack[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnStageConnection", MasterCallStack[ 2 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnChildRemove", MasterCallStack[ 3 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnChildRemove", MasterCallStack[ 4 ], TEST_LOCATION ); - - /* Actors B & C should be removed before the point where they could receive an OnStageConnection callback - * Therefore they shouldn't receive either OnStageConnection or OnStageDisconnection + DALI_TEST_EQUALS(6, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorA.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorA.GetMethodsCalled()[1], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorA.GetMethodsCalled()[2], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorA.GetMethodsCalled()[3], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildRemove", actorA.GetMethodsCalled()[4], TEST_LOCATION); // Called from within OnSceneConnection() + DALI_TEST_EQUALS("OnChildRemove", actorA.GetMethodsCalled()[5], TEST_LOCATION); // Called from within OnSceneConnection() + + DALI_TEST_EQUALS(8, (int)(MasterCallStack.size()), TEST_LOCATION); + + DALI_TEST_EQUALS("ActorA: OnPropertySet", MasterCallStack[0], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnPropertySet", MasterCallStack[1], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildAdd", MasterCallStack[2], TEST_LOCATION); + DALI_TEST_EQUALS("ActorC: OnPropertySet", MasterCallStack[3], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildAdd", MasterCallStack[4], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnSceneConnection", MasterCallStack[5], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildRemove", MasterCallStack[6], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildRemove", MasterCallStack[7], TEST_LOCATION); + + /* Actors B & C should be removed before the point where they could receive an OnSceneConnection callback + * Therefore they shouldn't receive either OnSceneConnection or OnSceneDisconnection */ - DALI_TEST_EQUALS( 0, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( 0, (int)(actorC.GetMethodsCalled().size()), TEST_LOCATION ); + DALI_TEST_EQUALS(1, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS(1, (int)(actorC.GetMethodsCalled().size()), TEST_LOCATION); // Excercise the message passing to Update thread @@ -435,30 +500,30 @@ int UtcDaliCustomActorRemoveDuringOnStageConnection(void) // Check everything is ok after last actor is removed - stage.Remove( actorA ); + stage.Remove(actorA); application.SendNotification(); application.Render(); application.Render(); END_TEST; } -int UtcDaliCustomActorAddDuringOnStageDisconnection(void) +int UtcDaliCustomActorAddDuringOnSceneDisconnection(void) { TestApplication application; - tet_infoline("Testing Actor::Add behaviour during Dali::CustomActor::OnStageDisonnection() callback"); + tet_infoline("Testing Actor::Add behaviour during Dali::CustomActor::OnSceneDisonnection() callback"); - Stage stage = Stage::GetCurrent(); + Integration::Scene stage = application.GetScene(); - /* The actorA is a special variant which adds a child to itself during OnStageDisconnection() + /* The actorA is a special variant which adds a child to itself during OnSceneDisconnection() * The actorB is provided as the child */ Test::TestCustomActor actorB = Test::TestCustomActor::New(); - actorB.SetName( "ActorB" ); + actorB.SetProperty(Actor::Property::NAME, "ActorB"); - Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant3( actorB ); - actorA.SetName( "ActorA" ); - stage.Add( actorA ); + Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant3(actorB); + actorA.SetProperty(Actor::Property::NAME, "ActorA"); + stage.Add(actorA); // Excercise the message passing to Update thread @@ -471,21 +536,21 @@ int UtcDaliCustomActorAddDuringOnStageDisconnection(void) actorB.ResetCallStack(); MasterCallStack.clear(); - stage.Remove( actorA ); + stage.Remove(actorA); // Check callback sequence - DALI_TEST_EQUALS( 2, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", actorA.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorA.GetMethodsCalled()[ 1 ], TEST_LOCATION ); + DALI_TEST_EQUALS(2, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", actorA.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorA.GetMethodsCalled()[1], TEST_LOCATION); - // Child was added after parent disconnection, so should not receive OnStageConnection() - DALI_TEST_EQUALS( 0, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION ); + // Child was added after parent disconnection, so should not receive OnSceneConnection() + DALI_TEST_EQUALS(0, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION); - DALI_TEST_EQUALS( 2, (int)(MasterCallStack.size()), TEST_LOCATION ); + DALI_TEST_EQUALS(2, (int)(MasterCallStack.size()), TEST_LOCATION); - DALI_TEST_EQUALS( "ActorA: OnStageDisconnection", MasterCallStack[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnChildAdd", MasterCallStack[ 1 ], TEST_LOCATION ); + DALI_TEST_EQUALS("ActorA: OnSceneDisconnection", MasterCallStack[0], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildAdd", MasterCallStack[1], TEST_LOCATION); // Excercise the message passing to Update thread @@ -495,24 +560,24 @@ int UtcDaliCustomActorAddDuringOnStageDisconnection(void) END_TEST; } -int UtcDaliCustomActorRemoveDuringOnStageDisconnection(void) +int UtcDaliCustomActorRemoveDuringOnSceneDisconnection(void) { TestApplication application; - tet_infoline("Testing Actor::Remove behaviour during Dali::CustomActor::OnStageDisconnection() callback"); + tet_infoline("Testing Actor::Remove behaviour during Dali::CustomActor::OnSceneDisconnection() callback"); - Stage stage = Stage::GetCurrent(); + Integration::Scene stage = application.GetScene(); - /* The actorA is a special variant which removes its children during OnStageDisconnection() + /* The actorA is a special variant which removes its children during OnSceneDisconnection() * The actorB is provided as the child */ Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant4(); - actorA.SetName( "ActorA" ); - stage.Add( actorA ); + actorA.SetProperty(Actor::Property::NAME, "ActorA"); + stage.Add(actorA); Test::TestCustomActor actorB = Test::TestCustomActor::New(); - actorB.SetName( "ActorB" ); - actorA.Add( actorB ); + actorB.SetProperty(Actor::Property::NAME, "ActorB"); + actorA.Add(actorB); // Excercise the message passing to Update thread @@ -525,22 +590,22 @@ int UtcDaliCustomActorRemoveDuringOnStageDisconnection(void) actorB.ResetCallStack(); MasterCallStack.clear(); - stage.Remove( actorA ); + stage.Remove(actorA); // Check callback sequence - DALI_TEST_EQUALS( 2, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", actorA.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildRemove", actorA.GetMethodsCalled()[ 1 ], TEST_LOCATION ); + DALI_TEST_EQUALS(2, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", actorA.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildRemove", actorA.GetMethodsCalled()[1], TEST_LOCATION); - DALI_TEST_EQUALS( 1, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", actorB.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(1, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", actorB.GetMethodsCalled()[0], TEST_LOCATION); - DALI_TEST_EQUALS( 3, (int)(MasterCallStack.size()), TEST_LOCATION ); + DALI_TEST_EQUALS(3, (int)(MasterCallStack.size()), TEST_LOCATION); - DALI_TEST_EQUALS( "ActorB: OnStageDisconnection", MasterCallStack[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnStageDisconnection", MasterCallStack[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnChildRemove", MasterCallStack[ 2 ], TEST_LOCATION ); + DALI_TEST_EQUALS("ActorB: OnSceneDisconnection", MasterCallStack[0], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnSceneDisconnection", MasterCallStack[1], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildRemove", MasterCallStack[2], TEST_LOCATION); // Excercise the message passing to Update thread @@ -550,45 +615,49 @@ int UtcDaliCustomActorRemoveDuringOnStageDisconnection(void) END_TEST; } -int UtcDaliCustomActorRemoveParentDuringOnStageConnection(void) +int UtcDaliCustomActorRemoveParentDuringOnSceneConnection(void) { TestApplication application; - tet_infoline("Weird test where child removes its own parent from Stage during Dali::CustomActor::OnStageConnection() callback"); + tet_infoline("Weird test where child removes its own parent from Stage during Dali::CustomActor::OnSceneConnection() callback"); - Stage stage = Stage::GetCurrent(); + Integration::Scene scene = application.GetScene(); MasterCallStack.clear(); /* The actorA is the parent of actorB - * The actorB is a special variant which removes its own parent during OnStageConnection() - * The child actor is interrupting the parent's connection to stage, therefore the parent should not get an OnStageDisconnection() + * The actorB is a special variant which removes its own parent during OnSceneConnection() + * The child actor is interrupting the parent's connection to stage, therefore the parent should not get an OnSceneDisconnection() */ Test::TestCustomActor actorA = Test::TestCustomActor::New(); - actorA.SetName( "ActorA" ); + actorA.SetProperty(Actor::Property::NAME, "ActorA"); - Test::TestCustomActor actorB = Test::TestCustomActor::NewVariant5(); - actorB.SetName( "ActorB" ); - actorA.Add( actorB ); + Test::TestCustomActor actorB = Test::TestCustomActor::NewVariant5(scene); + actorB.SetProperty(Actor::Property::NAME, "ActorB"); + actorA.Add(actorB); - stage.Add( actorA ); + scene.Add(actorA); // Check callback sequence - DALI_TEST_EQUALS( 3, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorA.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorA.GetMethodsCalled()[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", actorA.GetMethodsCalled()[ 2 ], TEST_LOCATION ); + DALI_TEST_EQUALS(4, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorA.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorA.GetMethodsCalled()[1], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorA.GetMethodsCalled()[2], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", actorA.GetMethodsCalled()[3], TEST_LOCATION); - DALI_TEST_EQUALS( 1, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorB.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(2, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorB.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorB.GetMethodsCalled()[1], TEST_LOCATION); - DALI_TEST_EQUALS( 4, (int)(MasterCallStack.size()), TEST_LOCATION ); + DALI_TEST_EQUALS(6, (int)(MasterCallStack.size()), TEST_LOCATION); - DALI_TEST_EQUALS( "ActorA: OnChildAdd", MasterCallStack[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnStageConnection", MasterCallStack[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorB: OnStageConnection", MasterCallStack[ 2 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnStageDisconnection", MasterCallStack[ 3 ], TEST_LOCATION ); + DALI_TEST_EQUALS("ActorA: OnPropertySet", MasterCallStack[0], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnPropertySet", MasterCallStack[1], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildAdd", MasterCallStack[2], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnSceneConnection", MasterCallStack[3], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnSceneConnection", MasterCallStack[4], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnSceneDisconnection", MasterCallStack[5], TEST_LOCATION); // Excercise the message passing to Update thread @@ -598,47 +667,51 @@ int UtcDaliCustomActorRemoveParentDuringOnStageConnection(void) END_TEST; } -int UtcDaliCustomActorAddParentDuringOnStageDisconnection(void) +int UtcDaliCustomActorAddParentDuringOnSceneDisconnection(void) { TestApplication application; - tet_infoline("Weird test where child adds its own parent to Stage during Dali::CustomActor::OnStageDisconnection() callback"); + tet_infoline("Weird test where child adds its own parent to Stage during Dali::CustomActor::OnSceneDisconnection() callback"); - Stage stage = Stage::GetCurrent(); + Integration::Scene scene = application.GetScene(); MasterCallStack.clear(); /* The actorA is the parent of actorB - * The actorB is a special variant which (weirdly) adds its own parent during OnStageDisconnection() - * The child actor is interrupting the disconnection, such that parent should not get a OnStageDisconnection() + * The actorB is a special variant which (weirdly) adds its own parent during OnSceneDisconnection() + * The child actor is interrupting the disconnection, such that parent should not get a OnSceneDisconnection() */ Test::TestCustomActor actorA = Test::TestCustomActor::New(); - actorA.SetName( "ActorA" ); - stage.Add( actorA ); + actorA.SetProperty(Actor::Property::NAME, "ActorA"); + scene.Add(actorA); - Test::TestCustomActor actorB = Test::TestCustomActor::NewVariant6(); - actorB.SetName( "ActorB" ); - actorA.Add( actorB ); + Test::TestCustomActor actorB = Test::TestCustomActor::NewVariant6(scene); + actorB.SetProperty(Actor::Property::NAME, "ActorB"); + actorA.Add(actorB); - stage.Remove( actorA ); + scene.Remove(actorA); // Check callback sequence - DALI_TEST_EQUALS( 2, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorA.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorA.GetMethodsCalled()[ 1 ], TEST_LOCATION ); + DALI_TEST_EQUALS(3, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorA.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorA.GetMethodsCalled()[1], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorA.GetMethodsCalled()[2], TEST_LOCATION); - DALI_TEST_EQUALS( 2, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorB.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", actorB.GetMethodsCalled()[ 1 ], TEST_LOCATION ); - // Disconnect was interrupted, so we should only get one OnStageConnection() for actorB + DALI_TEST_EQUALS(3, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorB.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorB.GetMethodsCalled()[1], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", actorB.GetMethodsCalled()[2], TEST_LOCATION); + // Disconnect was interrupted, so we should only get one OnSceneConnection() for actorB - DALI_TEST_EQUALS( 4, (int)(MasterCallStack.size()), TEST_LOCATION ); + DALI_TEST_EQUALS(6, (int)(MasterCallStack.size()), TEST_LOCATION); - DALI_TEST_EQUALS( "ActorA: OnStageConnection", MasterCallStack[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorB: OnStageConnection", MasterCallStack[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnChildAdd", MasterCallStack[ 2 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorB: OnStageDisconnection", MasterCallStack[ 3 ], TEST_LOCATION ); + DALI_TEST_EQUALS("ActorA: OnPropertySet", MasterCallStack[0], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnSceneConnection", MasterCallStack[1], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnPropertySet", MasterCallStack[2], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnSceneConnection", MasterCallStack[3], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildAdd", MasterCallStack[4], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnSceneDisconnection", MasterCallStack[5], TEST_LOCATION); // Excercise the message passing to Update thread @@ -654,18 +727,18 @@ int UtcDaliCustomActorOnChildAddRemove(void) tet_infoline("Testing Dali::CustomActor::OnChildAdd() & OnChildRemove()"); Test::TestCustomActor custom = Test::TestCustomActor::New(); - DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); + DALI_TEST_EQUALS(0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); Actor aChild = Actor::New(); - custom.Add( aChild ); + custom.Add(aChild); - DALI_TEST_EQUALS( 1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", custom.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", custom.GetMethodsCalled()[0], TEST_LOCATION); - custom.Remove( aChild ); + custom.Remove(aChild); - DALI_TEST_EQUALS( 2, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildRemove", custom.GetMethodsCalled()[ 1 ], TEST_LOCATION ); + DALI_TEST_EQUALS(2, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnChildRemove", custom.GetMethodsCalled()[1], TEST_LOCATION); END_TEST; } @@ -674,7 +747,7 @@ int UtcDaliCustomActorReparentDuringOnChildAdd(void) TestApplication application; tet_infoline("Testing Actor:Add (reparenting) behaviour during Dali::CustomActor::OnChildAdd() callback"); - Stage stage = Stage::GetCurrent(); + Integration::Scene stage = application.GetScene(); MasterCallStack.clear(); @@ -682,12 +755,12 @@ int UtcDaliCustomActorReparentDuringOnChildAdd(void) * The actorB is the child of actorA */ - Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant7( "ActorA" ); - stage.Add( actorA ); + Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant7("ActorA"); + stage.Add(actorA); Test::TestCustomActor actorB = Test::TestCustomActor::New(); - actorB.SetName( "ActorB" ); - actorA.Add( actorB ); + actorB.SetProperty(Actor::Property::NAME, "ActorB"); + actorA.Add(actorB); // Check hierarchy is as follows: // A @@ -696,49 +769,53 @@ int UtcDaliCustomActorReparentDuringOnChildAdd(void) // | // B - DALI_TEST_EQUALS( 1, (int)(actorA.GetChildCount()), TEST_LOCATION ); + DALI_TEST_EQUALS(1, (int)(actorA.GetChildCount()), TEST_LOCATION); Actor container = actorA.GetChildAt(0); Actor containerChild; - DALI_TEST_CHECK( container ); - if ( container ) + DALI_TEST_CHECK(container); + if(container) { - DALI_TEST_EQUALS( "Container", container.GetName(), TEST_LOCATION ); - DALI_TEST_EQUALS( 1, (int)(container.GetChildCount()), TEST_LOCATION ); + DALI_TEST_EQUALS("Container", container.GetProperty(Actor::Property::NAME), TEST_LOCATION); + DALI_TEST_EQUALS(1, (int)(container.GetChildCount()), TEST_LOCATION); containerChild = container.GetChildAt(0); } - DALI_TEST_CHECK( containerChild ); - if ( containerChild ) + DALI_TEST_CHECK(containerChild); + if(containerChild) { - DALI_TEST_EQUALS( "ActorB", containerChild.GetName(), TEST_LOCATION ); - DALI_TEST_EQUALS( 0, (int)(containerChild.GetChildCount()), TEST_LOCATION ); + DALI_TEST_EQUALS("ActorB", containerChild.GetProperty(Actor::Property::NAME), TEST_LOCATION); + DALI_TEST_EQUALS(0, (int)(containerChild.GetChildCount()), TEST_LOCATION); } // Check callback sequence - DALI_TEST_EQUALS( 4, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorA.GetMethodsCalled()[ 0 ], TEST_LOCATION ); // The mContainer added to actorA - DALI_TEST_EQUALS( "OnStageConnection", actorA.GetMethodsCalled()[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorA.GetMethodsCalled()[ 2 ], TEST_LOCATION ); // The actorB added to actorA - DALI_TEST_EQUALS( "OnChildRemove", actorA.GetMethodsCalled()[ 3 ], TEST_LOCATION ); + DALI_TEST_EQUALS(5, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorA.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorA.GetMethodsCalled()[1], TEST_LOCATION); // The mContainer added to actorA + DALI_TEST_EQUALS("OnSceneConnection", actorA.GetMethodsCalled()[2], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorA.GetMethodsCalled()[3], TEST_LOCATION); // The actorB added to actorA + DALI_TEST_EQUALS("OnChildRemove", actorA.GetMethodsCalled()[4], TEST_LOCATION); // mContainer will then receive OnChildAdd - DALI_TEST_EQUALS( 3, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorB.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageDisconnection", actorB.GetMethodsCalled()[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorB.GetMethodsCalled()[ 2 ], TEST_LOCATION ); + DALI_TEST_EQUALS(4, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorB.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorB.GetMethodsCalled()[1], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneDisconnection", actorB.GetMethodsCalled()[2], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorB.GetMethodsCalled()[3], TEST_LOCATION); - DALI_TEST_EQUALS( 7, (int)(MasterCallStack.size()), TEST_LOCATION ); + DALI_TEST_EQUALS(9, (int)(MasterCallStack.size()), TEST_LOCATION); - DALI_TEST_EQUALS( "ActorA: OnChildAdd", MasterCallStack[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnStageConnection", MasterCallStack[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorB: OnStageConnection", MasterCallStack[ 2 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnChildAdd", MasterCallStack[ 3 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorB: OnStageDisconnection", MasterCallStack[ 4 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnChildRemove", MasterCallStack[ 5 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorB: OnStageConnection", MasterCallStack[ 6 ], TEST_LOCATION ); + DALI_TEST_EQUALS("ActorA: OnPropertySet", MasterCallStack[0], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildAdd", MasterCallStack[1], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnSceneConnection", MasterCallStack[2], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnPropertySet", MasterCallStack[3], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnSceneConnection", MasterCallStack[4], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildAdd", MasterCallStack[5], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnSceneDisconnection", MasterCallStack[6], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildRemove", MasterCallStack[7], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnSceneConnection", MasterCallStack[8], TEST_LOCATION); // Excercise the message passing to Update thread @@ -757,7 +834,7 @@ int UtcDaliCustomActorRemoveDuringOnChildRemove(void) TestApplication application; tet_infoline("Testing Actor:Remove behaviour during OnChildRemove() callback triggered when reparenting"); - Stage stage = Stage::GetCurrent(); + Integration::Scene stage = application.GetScene(); MasterCallStack.clear(); @@ -767,59 +844,63 @@ int UtcDaliCustomActorRemoveDuringOnChildRemove(void) */ Test::TestCustomActor actorB = Test::TestCustomActor::New(); - actorB.SetName( "ActorB" ); - stage.Add( actorB ); + actorB.SetProperty(Actor::Property::NAME, "ActorB"); + stage.Add(actorB); - Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant8( actorB ); - actorA.SetName( "ActorA" ); - stage.Add( actorA ); + Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant8(actorB); + actorA.SetProperty(Actor::Property::NAME, "ActorA"); + stage.Add(actorA); Actor childActor = Actor::New(); - childActor.SetName( "Child" ); + childActor.SetProperty(Actor::Property::NAME, "Child"); // Reparent from actorA to actorB - actorA.Add( childActor ); - actorB.Add( childActor ); + actorA.Add(childActor); + actorB.Add(childActor); // Check hierarchy is as follows: // A B // | // Child - DALI_TEST_EQUALS( 0, (int)(actorA.GetChildCount()), TEST_LOCATION ); - DALI_TEST_EQUALS( 1, (int)(actorB.GetChildCount()), TEST_LOCATION ); - DALI_TEST_EQUALS( 0, (int)(childActor.GetChildCount()), TEST_LOCATION ); + DALI_TEST_EQUALS(0, (int)(actorA.GetChildCount()), TEST_LOCATION); + DALI_TEST_EQUALS(1, (int)(actorB.GetChildCount()), TEST_LOCATION); + DALI_TEST_EQUALS(0, (int)(childActor.GetChildCount()), TEST_LOCATION); Actor child = actorB.GetChildAt(0); - DALI_TEST_CHECK( child ); - if ( child ) + DALI_TEST_CHECK(child); + if(child) { - DALI_TEST_EQUALS( "Child", child.GetName(), TEST_LOCATION ); + DALI_TEST_EQUALS("Child", child.GetProperty(Actor::Property::NAME), TEST_LOCATION); } // Check callback sequence - DALI_TEST_EQUALS( 3, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorA.GetMethodsCalled()[ 0 ], TEST_LOCATION ); // The mContainer added to actorA - DALI_TEST_EQUALS( "OnChildAdd", actorA.GetMethodsCalled()[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildRemove", actorA.GetMethodsCalled()[ 2 ], TEST_LOCATION ); // The actorB added to actorA + DALI_TEST_EQUALS(4, (int)(actorA.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorA.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorA.GetMethodsCalled()[1], TEST_LOCATION); // The mContainer added to actorA + DALI_TEST_EQUALS("OnChildAdd", actorA.GetMethodsCalled()[2], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildRemove", actorA.GetMethodsCalled()[3], TEST_LOCATION); // The actorB added to actorA // mContainer will then receive OnChildAdd - DALI_TEST_EQUALS( 3, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnStageConnection", actorB.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(4, (int)(actorB.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", actorB.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnSceneConnection", actorB.GetMethodsCalled()[1], TEST_LOCATION); // The derived class are always notified, no matter the child is successfully removed or not - DALI_TEST_EQUALS( "OnChildRemove", actorB.GetMethodsCalled()[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "OnChildAdd", actorB.GetMethodsCalled()[ 2 ], TEST_LOCATION ); + DALI_TEST_EQUALS("OnChildRemove", actorB.GetMethodsCalled()[2], TEST_LOCATION); + DALI_TEST_EQUALS("OnChildAdd", actorB.GetMethodsCalled()[3], TEST_LOCATION); - DALI_TEST_EQUALS( 6, (int)(MasterCallStack.size()), TEST_LOCATION ); + DALI_TEST_EQUALS(8, (int)(MasterCallStack.size()), TEST_LOCATION); - DALI_TEST_EQUALS( "ActorB: OnStageConnection", MasterCallStack[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnStageConnection", MasterCallStack[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnChildAdd", MasterCallStack[ 2 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorA: OnChildRemove", MasterCallStack[ 3 ], TEST_LOCATION ); + DALI_TEST_EQUALS("ActorB: OnPropertySet", MasterCallStack[0], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnSceneConnection", MasterCallStack[1], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnPropertySet", MasterCallStack[2], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnSceneConnection", MasterCallStack[3], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildAdd", MasterCallStack[4], TEST_LOCATION); + DALI_TEST_EQUALS("ActorA: OnChildRemove", MasterCallStack[5], TEST_LOCATION); // The derived class are always notified, no matter the child is successfully removed or not - DALI_TEST_EQUALS( "ActorB: OnChildRemove", MasterCallStack[ 4 ], TEST_LOCATION ); - DALI_TEST_EQUALS( "ActorB: OnChildAdd", MasterCallStack[ 5 ], TEST_LOCATION ); + DALI_TEST_EQUALS("ActorB: OnChildRemove", MasterCallStack[6], TEST_LOCATION); + DALI_TEST_EQUALS("ActorB: OnChildAdd", MasterCallStack[7], TEST_LOCATION); // Excercise the message passing to Update thread @@ -835,12 +916,12 @@ int UtcDaliCustomActorOnPropertySet(void) tet_infoline("Testing Dali::CustomActor::OnPropertySet()"); Test::TestCustomActor custom = Test::TestCustomActor::New(); - DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); + DALI_TEST_EQUALS(0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); custom.SetDaliProperty("yes"); - DALI_TEST_EQUALS( 1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnPropertySet", custom.GetMethodsCalled()[ 0 ], TEST_LOCATION ); + DALI_TEST_EQUALS(1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", custom.GetMethodsCalled()[0], TEST_LOCATION); END_TEST; } @@ -850,20 +931,22 @@ int UtcDaliCustomActorOnSizeSet(void) tet_infoline("Testing Dali::CustomActor::OnSizeSet()"); Test::TestCustomActor custom = Test::TestCustomActor::New(); - DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - - custom.SetSize( Vector2( 9.0f, 10.0f ) ); - DALI_TEST_EQUALS( 1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnSizeSet", custom.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( 9.0f, custom.GetSize().width, TEST_LOCATION ); - DALI_TEST_EQUALS( 10.0f, custom.GetSize().height, TEST_LOCATION ); - - custom.SetSize( Vector3( 4.0f, 5.0f, 6.0f ) ); - DALI_TEST_EQUALS( 2, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnSizeSet", custom.GetMethodsCalled()[ 1 ], TEST_LOCATION ); - DALI_TEST_EQUALS( 4.0f, custom.GetSize().width, TEST_LOCATION ); - DALI_TEST_EQUALS( 5.0f, custom.GetSize().height, TEST_LOCATION ); - DALI_TEST_EQUALS( 6.0f, custom.GetSize().depth, TEST_LOCATION ); + DALI_TEST_EQUALS(0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); + + custom.SetProperty(Actor::Property::SIZE, Vector2(9.0f, 10.0f)); + DALI_TEST_EQUALS(2, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSizeSet", custom.GetMethodsCalled()[0], TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", custom.GetMethodsCalled()[1], TEST_LOCATION); + DALI_TEST_EQUALS(9.0f, custom.GetSize().width, TEST_LOCATION); + DALI_TEST_EQUALS(10.0f, custom.GetSize().height, TEST_LOCATION); + + custom.SetProperty(Actor::Property::SIZE, Vector3(4.0f, 5.0f, 6.0f)); + DALI_TEST_EQUALS(4, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSizeSet", custom.GetMethodsCalled()[2], TEST_LOCATION); + DALI_TEST_EQUALS("OnPropertySet", custom.GetMethodsCalled()[3], TEST_LOCATION); + DALI_TEST_EQUALS(4.0f, custom.GetSize().width, TEST_LOCATION); + DALI_TEST_EQUALS(5.0f, custom.GetSize().height, TEST_LOCATION); + DALI_TEST_EQUALS(6.0f, custom.GetSize().depth, TEST_LOCATION); END_TEST; } @@ -873,20 +956,22 @@ int UtcDaliCustomActorOnSizeAnimation(void) tet_infoline("Testing Dali::CustomActor::OnSizeAnimation()"); Test::TestCustomActor custom = Test::TestCustomActor::New(); - DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); + DALI_TEST_EQUALS(0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); + + application.GetScene().Add(custom); - Animation anim = Animation::New( 1.0f ); - anim.AnimateTo( Property( custom, Actor::Property::SIZE ), Vector3( 8.0f, 9.0f, 10.0f ) ); + Animation anim = Animation::New(1.0f); + anim.AnimateTo(Property(custom, Actor::Property::SIZE), Vector3(8.0f, 9.0f, 10.0f)); anim.Play(); application.SendNotification(); - application.Render( static_cast( 1000.0f ) ); + application.Render(static_cast(1000.0f)); - DALI_TEST_EQUALS( 1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnSizeAnimation", custom.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - DALI_TEST_EQUALS( 8.0f, custom.GetTargetSize().width, TEST_LOCATION ); - DALI_TEST_EQUALS( 9.0f, custom.GetTargetSize().height, TEST_LOCATION ); - DALI_TEST_EQUALS( 10.0f, custom.GetTargetSize().depth, TEST_LOCATION ); + DALI_TEST_EQUALS(2, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); + DALI_TEST_EQUALS("OnSizeAnimation", custom.GetMethodsCalled()[1], TEST_LOCATION); + DALI_TEST_EQUALS(8.0f, custom.GetTargetSize().width, TEST_LOCATION); + DALI_TEST_EQUALS(9.0f, custom.GetTargetSize().height, TEST_LOCATION); + DALI_TEST_EQUALS(10.0f, custom.GetTargetSize().depth, TEST_LOCATION); END_TEST; } @@ -896,137 +981,42 @@ int UtcDaliCustomActorSizeComponentAnimation(void) tet_infoline("Testing Size component animation"); Test::TestCustomActor custom = Test::TestCustomActor::New(); - float intialWidth( 10.0f ); - - DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - custom.SetSize( intialWidth, 10.0f); // First method - - Animation anim = Animation::New( 1.0f ); - - DALI_TEST_EQUALS( 1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - - anim.AnimateTo( Property( custom, Actor::Property::SIZE_WIDTH ), 20.0f ); - - DALI_TEST_EQUALS( 1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - - anim.Play(); // Triggers second method ( OnSizeAnimation ) - - application.SendNotification(); - application.Render( static_cast( 1000.0f ) ); - - DALI_TEST_EQUALS( 2, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - - DALI_TEST_EQUALS( "OnSizeAnimation", custom.GetMethodsCalled()[ 1 ], TEST_LOCATION ); - - END_TEST; - -} - -int UtcDaliCustomActorOnTouchEvent(void) -{ - TestApplication application; - tet_infoline("Testing Dali::CustomActor::OnTouchEvent()"); - - Test::TestCustomActor custom = Test::TestCustomActor::New(); - DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); + float intialWidth(10.0f); - // set size for custom actor - custom.SetSize( 100, 100 ); - // add the custom actor to stage - Stage::GetCurrent().Add( custom ); - custom.ResetCallStack(); + DALI_TEST_EQUALS(0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); - // Render and notify a couple of times - application.SendNotification(); - application.Render(); - application.SendNotification(); - application.Render(); + custom.SetProperty(Actor::Property::SIZE, Vector2(intialWidth, 10.0f)); // First method + application.GetScene().Add(custom); - // simulate a touch event - Dali::Integration::Point point; - point.SetState( PointState::DOWN ); - point.SetScreenPosition( Vector2( 1, 1 ) ); - Dali::Integration::TouchEvent event; - event.AddPoint( point ); - application.ProcessEvent( event ); + Animation anim = Animation::New(1.0f); - DALI_TEST_EQUALS( 1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnTouchEvent", custom.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - END_TEST; -} + DALI_TEST_EQUALS(3, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); -int UtcDaliCustomActorOnHoverEvent(void) -{ - TestApplication application; - tet_infoline("Testing Dali::CustomActor::OnHoverEvent()"); + anim.AnimateTo(Property(custom, Actor::Property::SIZE_WIDTH), 20.0f); - Test::TestCustomActor custom = Test::TestCustomActor::New(); - DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); + DALI_TEST_EQUALS(3, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); - // set size for custom actor - custom.SetSize( 100, 100 ); - // add the custom actor to stage - Stage::GetCurrent().Add( custom ); - custom.ResetCallStack(); + anim.Play(); // Triggers second method ( OnSizeAnimation ) - // Render and notify a couple of times - application.SendNotification(); - application.Render(); application.SendNotification(); - application.Render(); - - // simulate a hover event - Dali::Integration::Point point; - point.SetState( PointState::MOTION ); - point.SetScreenPosition( Vector2( 1, 1 ) ); - Dali::Integration::HoverEvent event; - event.AddPoint( point ); - application.ProcessEvent( event ); - - DALI_TEST_EQUALS( 1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnHoverEvent", custom.GetMethodsCalled()[ 0 ], TEST_LOCATION ); - END_TEST; -} + application.Render(static_cast(1000.0f)); -int UtcDaliCustomActorOnWheelEvent(void) -{ - TestApplication application; - tet_infoline("Testing Dali::CustomActor::OnWheelEvent()"); + DALI_TEST_EQUALS(4, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION); - Test::TestCustomActor custom = Test::TestCustomActor::New(); - DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - - // set size for custom actor - custom.SetSize( 100, 100 ); - // add the custom actor to stage - Stage::GetCurrent().Add( custom ); - custom.ResetCallStack(); - - // Render and notify a couple of times - application.SendNotification(); - application.Render(); - application.SendNotification(); - application.Render(); + DALI_TEST_EQUALS("OnSizeAnimation", custom.GetMethodsCalled()[3], TEST_LOCATION); - // simulate a wheel event - Vector2 screenCoordinates( 10.0f, 10.0f ); - Integration::WheelEvent event( Integration::WheelEvent::MOUSE_WHEEL, 0, 0u, screenCoordinates, 1, 1000u ); - application.ProcessEvent( event ); - - DALI_TEST_EQUALS( 1, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION ); - DALI_TEST_EQUALS( "OnWheelEvent", custom.GetMethodsCalled()[ 0 ], TEST_LOCATION ); END_TEST; } int UtcDaliCustomActorImplOnPropertySet(void) { - TestApplication application; + TestApplication application; CustomActorImpl* impl = new Test::Impl::SimpleTestCustomActor(); - CustomActor customActor( *impl ); // Will automatically unref at the end of this function + CustomActor customActor(*impl); // Will automatically unref at the end of this function - impl->OnPropertySet( 0, 0 ); + impl->OnPropertySet(0, 0); - DALI_TEST_CHECK( true ); + DALI_TEST_CHECK(true); END_TEST; } @@ -1036,14 +1026,14 @@ int UtcDaliCustomActorGetImplementation(void) TestApplication application; Test::TestCustomActor custom = Test::TestCustomActor::New(); - CustomActorImpl& impl = custom.GetImplementation(); - impl.GetOwner(); // Test + CustomActorImpl& impl = custom.GetImplementation(); + impl.GetOwner(); // Test const Test::TestCustomActor constCustom = Test::TestCustomActor::New(); - const CustomActorImpl& constImpl = constCustom.GetImplementation(); - constImpl.GetOwner(); // Test + const CustomActorImpl& constImpl = constCustom.GetImplementation(); + constImpl.GetOwner(); // Test - DALI_TEST_CHECK( true ); + DALI_TEST_CHECK(true); END_TEST; } @@ -1064,8 +1054,8 @@ int UtcDaliCustomActorDoAction(void) DALI_TEST_CHECK(customActorObject.DoAction("invalidCommand", attributes) == false); // Check that the custom actor is visible - custom.SetVisible(true); - DALI_TEST_CHECK(custom.IsVisible() == true); + custom.SetProperty(Actor::Property::VISIBLE, true); + DALI_TEST_CHECK(custom.GetCurrentProperty(Actor::Property::VISIBLE) == true); // Check the custom actor performed an action to hide itself DALI_TEST_CHECK(customActorObject.DoAction("hide", attributes) == true); @@ -1075,7 +1065,7 @@ int UtcDaliCustomActorDoAction(void) application.Render(); // Check that the custom actor is now invisible - DALI_TEST_CHECK(custom.IsVisible() == false); + DALI_TEST_CHECK(custom.GetCurrentProperty(Actor::Property::VISIBLE) == false); // Check the custom actor performed an action to show itself DALI_TEST_CHECK(customActorObject.DoAction("show", attributes) == true); @@ -1085,17 +1075,40 @@ int UtcDaliCustomActorDoAction(void) application.Render(); // Check that the custom actor is now visible - DALI_TEST_CHECK(custom.IsVisible() == true); + DALI_TEST_CHECK(custom.GetCurrentProperty(Actor::Property::VISIBLE) == true); END_TEST; } int UtcDaliCustomActorCustomActor(void) { Dali::CustomActor customA; - Dali::CustomActor customB( customA ); + Dali::CustomActor customB(customA); + + DALI_TEST_CHECK(customA == customB); + + END_TEST; +} + +int UtcDaliCustomActorImplSetTransparent(void) +{ + TestApplication application; // Need the type registry + + Test::TestCustomActor actor = Test::TestCustomActor::New(); + application.GetScene().Add(actor); + actor.SetProperty(Actor::Property::OPACITY, 0.1f); + actor.SetProperty(Actor::Property::SIZE, Vector2(400, 400)); + + DALI_TEST_EQUALS(false, actor.IsTransparent(), TEST_LOCATION); + + actor.SetTransparent(true); + + // flush the queue and render once + application.SendNotification(); + application.Render(); - DALI_TEST_CHECK( customA == customB ); + DALI_TEST_EQUALS(true, actor.IsTransparent(), TEST_LOCATION); + application.GetScene().Remove(actor); END_TEST; } @@ -1103,29 +1116,29 @@ int UtcDaliCustomActorImplRelayoutRequest(void) { TestApplication application; - DALI_TEST_CHECK( gOnRelayout == false ); + DALI_TEST_CHECK(gOnRelayout == false); Test::TestCustomActor custom = Test::TestCustomActor::NewNegoSize(); - Stage::GetCurrent().Add(custom); + application.GetScene().Add(custom); application.SendNotification(); application.Render(); - DALI_TEST_CHECK( gOnRelayout == true ); + DALI_TEST_CHECK(gOnRelayout == true); gOnRelayout = false; custom.TestRelayoutRequest(); application.SendNotification(); application.Render(); - DALI_TEST_CHECK( gOnRelayout == true ); + DALI_TEST_CHECK(gOnRelayout == true); END_TEST; } int UtcDaliCustomActorImplGetHeightForWidthBase(void) { - TestApplication application; + TestApplication application; Test::TestCustomActor custom = Test::TestCustomActor::NewNegoSize(); float width = 300.0f; @@ -1133,16 +1146,16 @@ int UtcDaliCustomActorImplGetHeightForWidthBase(void) application.SendNotification(); application.Render(); - float v = custom.TestGetHeightForWidthBase( width ); + float v = custom.TestGetHeightForWidthBase(width); - DALI_TEST_CHECK( v == width ); + DALI_TEST_CHECK(v == width); END_TEST; } int UtcDaliCustomActorImplGetWidthForHeightBase(void) { - TestApplication application; + TestApplication application; Test::TestCustomActor custom = Test::TestCustomActor::NewNegoSize(); float height = 300.0f; @@ -1150,51 +1163,85 @@ int UtcDaliCustomActorImplGetWidthForHeightBase(void) application.SendNotification(); application.Render(); - float v = custom.TestGetWidthForHeightBase( height ); + float v = custom.TestGetWidthForHeightBase(height); - DALI_TEST_CHECK( v == height ); + DALI_TEST_CHECK(v == height); END_TEST; } int UtcDaliCustomActorImplCalculateChildSizeBase(void) { - TestApplication application; + TestApplication application; Test::TestCustomActor custom = Test::TestCustomActor::NewNegoSize(); Actor child = Actor::New(); child.SetResizePolicy(Dali::ResizePolicy::FIXED, Dali::Dimension::ALL_DIMENSIONS); - child.SetSize(150, 150); + child.SetProperty(Actor::Property::SIZE, Vector2(150, 150)); application.SendNotification(); application.Render(); - float v = custom.TestCalculateChildSizeBase( child, Dali::Dimension::ALL_DIMENSIONS ); - DALI_TEST_CHECK( v == 0.0f ); + float v = custom.TestCalculateChildSizeBase(child, Dali::Dimension::ALL_DIMENSIONS); + DALI_TEST_CHECK(v == 0.0f); END_TEST; } int UtcDaliCustomActorImplRelayoutDependentOnChildrenBase(void) { - TestApplication application; - Test::TestCustomActor custom = Test::TestCustomActor::NewNegoSize(); - custom.SetResizePolicy(Dali::ResizePolicy::FIT_TO_CHILDREN, Dali::Dimension::ALL_DIMENSIONS); - - bool v = custom.TestRelayoutDependentOnChildrenBase( Dali::Dimension::ALL_DIMENSIONS ); - DALI_TEST_CHECK( v == true ); + TestApplication application; + Test::TestCustomActor customNego = Test::TestCustomActor::NewNegoSize(); + Test::TestCustomActor customNotNego = Test::TestCustomActor::New(); + + // A custom actor with default flags has relayouting enabled on initialization, + // and the default resize policy is USE_NATURAL_SIZE. + bool v = customNego.TestRelayoutDependentOnChildrenBase(Dali::Dimension::ALL_DIMENSIONS); + DALI_TEST_CHECK(v == true); + + // A custom actor with size negotiation explicitly switched off has no relayouting, + // and will not have any relayout dependencies. However, default resize policy when + // there is no relayouting is to return USE_NATURAL_SIZE, so this will actually return true, + // and is consistent. + v = customNotNego.TestRelayoutDependentOnChildrenBase(Dali::Dimension::ALL_DIMENSIONS); + DALI_TEST_CHECK(v == true); + + customNego.SetResizePolicy(Dali::ResizePolicy::FIT_TO_CHILDREN, Dali::Dimension::ALL_DIMENSIONS); + customNotNego.SetResizePolicy(Dali::ResizePolicy::FIT_TO_CHILDREN, Dali::Dimension::ALL_DIMENSIONS); + + v = customNego.TestRelayoutDependentOnChildrenBase(Dali::Dimension::ALL_DIMENSIONS); + DALI_TEST_CHECK(v == true); + v = customNotNego.TestRelayoutDependentOnChildrenBase(Dali::Dimension::ALL_DIMENSIONS); + DALI_TEST_CHECK(v == true); application.SendNotification(); application.Render(); - custom.SetResizePolicy(Dali::ResizePolicy::FIXED, Dali::Dimension::ALL_DIMENSIONS); - v = custom.TestRelayoutDependentOnChildrenBase( Dali::Dimension::WIDTH ); - DALI_TEST_CHECK( v == false ); + customNego.SetResizePolicy(Dali::ResizePolicy::FIXED, Dali::Dimension::ALL_DIMENSIONS); + customNotNego.SetResizePolicy(Dali::ResizePolicy::FIXED, Dali::Dimension::ALL_DIMENSIONS); + v = customNego.TestRelayoutDependentOnChildrenBase(Dali::Dimension::WIDTH); + DALI_TEST_CHECK(v == false); + v = customNego.TestRelayoutDependentOnChildrenBase(Dali::Dimension::HEIGHT); + DALI_TEST_CHECK(v == false); + v = customNotNego.TestRelayoutDependentOnChildrenBase(Dali::Dimension::WIDTH); + DALI_TEST_CHECK(v == false); + v = customNotNego.TestRelayoutDependentOnChildrenBase(Dali::Dimension::HEIGHT); + DALI_TEST_CHECK(v == false); - // why is this here? application.SendNotification(); application.Render(); + customNego.SetResizePolicy(Dali::ResizePolicy::USE_NATURAL_SIZE, Dali::Dimension::WIDTH); + customNotNego.SetResizePolicy(Dali::ResizePolicy::USE_NATURAL_SIZE, Dali::Dimension::HEIGHT); + v = customNego.TestRelayoutDependentOnChildrenBase(Dali::Dimension::WIDTH); + DALI_TEST_CHECK(v == true); + v = customNego.TestRelayoutDependentOnChildrenBase(Dali::Dimension::HEIGHT); + DALI_TEST_CHECK(v == false); + v = customNotNego.TestRelayoutDependentOnChildrenBase(Dali::Dimension::WIDTH); + DALI_TEST_CHECK(v == false); + v = customNotNego.TestRelayoutDependentOnChildrenBase(Dali::Dimension::HEIGHT); + DALI_TEST_CHECK(v == true); + END_TEST; } @@ -1204,8 +1251,8 @@ int UtcDaliCustomActorTypeRegistry(void) // Register Type TypeInfo type; - type = TypeRegistry::Get().GetTypeInfo( "CustomActor" ); - DALI_TEST_CHECK( type ); + type = TypeRegistry::Get().GetTypeInfo("CustomActor"); + DALI_TEST_CHECK(type); BaseHandle handle = type.CreateInstance(); std::string name; @@ -1216,23 +1263,22 @@ int UtcDaliCustomActorTypeRegistry(void) name = handle.GetTypeName(); tet_result(TET_FAIL); } - catch( DaliException& e ) + catch(DaliException& e) { exception = e.condition; - DALI_TEST_EQUALS( exception, "handle && \"BaseObject handle is empty\"", TEST_LOCATION ); + DALI_TEST_EQUALS(exception, "handle && \"BaseObject handle is empty\"", TEST_LOCATION); } END_TEST; } - int UtcDaliCustomActorGetExtensionP(void) { TestApplication application; - Test::TestCustomActor custom = Test::TestCustomActor::NewVariant5(); + Test::TestCustomActor custom = Test::TestCustomActor::NewVariant5(application.GetScene()); - DALI_TEST_CHECK( NULL == custom.GetImplementation().GetExtension() ); + DALI_TEST_CHECK(NULL == custom.GetImplementation().GetExtension()); END_TEST; } @@ -1240,9 +1286,9 @@ int UtcDaliCustomActorGetExtensionP(void) int UtcDaliCustomActorOnConnectionDepth(void) { TestApplication application; - tet_infoline("Testing Dali::CustomActor::OnStageConnection() hierarchy depth"); + tet_infoline("Testing Dali::CustomActor::OnSceneConnection() hierarchy depth"); - Stage stage = Stage::GetCurrent(); + Integration::Scene stage = application.GetScene(); /* Build tree of actors: * @@ -1254,94 +1300,412 @@ int UtcDaliCustomActorOnConnectionDepth(void) * / \ \ * D E F 3 * - * OnStageConnection should return 1 for A, 2 for B and C, and 3 for D, E and F. + * OnSceneConnection should return 1 for A, 2 for B and C, and 3 for D, E and F. */ Test::TestCustomActor actorA = Test::TestCustomActor::New(); - stage.Add( actorA ); + stage.Add(actorA); Test::TestCustomActor actorB = Test::TestCustomActor::New(); - actorA.Add( actorB ); + actorA.Add(actorB); Test::TestCustomActor actorC = Test::TestCustomActor::New(); - actorA.Add( actorC ); + actorA.Add(actorC); Test::TestCustomActor actorD = Test::TestCustomActor::New(); - actorB.Add( actorD ); + actorB.Add(actorD); Test::TestCustomActor actorE = Test::TestCustomActor::New(); - actorB.Add( actorE ); + actorB.Add(actorE); Test::TestCustomActor actorF = Test::TestCustomActor::New(); - actorC.Add( actorF ); + actorC.Add(actorF); // Excercise the message passing to Update thread application.SendNotification(); application.Render(); application.Render(); - DALI_TEST_EQUALS( 1u, actorA.GetDepth(), TEST_LOCATION ); - DALI_TEST_EQUALS( 2u, actorB.GetDepth(), TEST_LOCATION ); - DALI_TEST_EQUALS( 2u, actorC.GetDepth(), TEST_LOCATION ); - DALI_TEST_EQUALS( 3u, actorD.GetDepth(), TEST_LOCATION ); - DALI_TEST_EQUALS( 3u, actorE.GetDepth(), TEST_LOCATION ); - DALI_TEST_EQUALS( 3u, actorF.GetDepth(), TEST_LOCATION ); + DALI_TEST_EQUALS(1u, actorA.GetDepth(), TEST_LOCATION); + DALI_TEST_EQUALS(2u, actorB.GetDepth(), TEST_LOCATION); + DALI_TEST_EQUALS(2u, actorC.GetDepth(), TEST_LOCATION); + DALI_TEST_EQUALS(3u, actorD.GetDepth(), TEST_LOCATION); + DALI_TEST_EQUALS(3u, actorE.GetDepth(), TEST_LOCATION); + DALI_TEST_EQUALS(3u, actorF.GetDepth(), TEST_LOCATION); END_TEST; } - int UtcDaliCustomActorSetGetProperty(void) { TestApplication application; // Need the type registry Test::TestCustomActor actor = Test::TestCustomActor::New(); - Stage::GetCurrent().Add( actor ); - - actor.SetProperty( Test::TestCustomActor::Property::TEST_PROPERTY1, 0.5f ); - actor.SetProperty( Test::TestCustomActor::Property::TEST_PROPERTY2, Color::WHITE ); - actor.SetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY3, Color::BLUE ); - actor.SetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY4, 20 ); - actor.SetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY5, 40.0f ); + application.GetScene().Add(actor); - Property::Value value = actor.GetProperty( Test::TestCustomActor::Property::TEST_PROPERTY1 ); - DALI_TEST_EQUALS( value.Get(), 0.5f, 0.001f, TEST_LOCATION ); + actor.SetProperty(Test::TestCustomActor::Property::TEST_PROPERTY1, 0.5f); + actor.SetProperty(Test::TestCustomActor::Property::TEST_PROPERTY2, Color::WHITE); + actor.SetProperty(Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY3, Color::BLUE); + actor.SetProperty(Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY4, 20); + actor.SetProperty(Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY5, 40.0f); - value = actor.GetProperty( Test::TestCustomActor::Property::TEST_PROPERTY2 ); - DALI_TEST_EQUALS( value.Get(), Color::WHITE, 0.001f, TEST_LOCATION ); + Property::Value value = actor.GetProperty(Test::TestCustomActor::Property::TEST_PROPERTY1); + DALI_TEST_EQUALS(value.Get(), 0.5f, 0.001f, TEST_LOCATION); + value = actor.GetProperty(Test::TestCustomActor::Property::TEST_PROPERTY2); + DALI_TEST_EQUALS(value.Get(), Color::WHITE, 0.001f, TEST_LOCATION); - value = actor.GetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY3 ); - DALI_TEST_EQUALS( value.Get(), Color::BLUE, 0.001f, TEST_LOCATION ); + value = actor.GetProperty(Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY3); + DALI_TEST_EQUALS(value.Get(), Color::BLUE, 0.001f, TEST_LOCATION); - value = actor.GetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY4 ); - DALI_TEST_EQUALS( value.Get(), 20, TEST_LOCATION ); + value = actor.GetProperty(Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY4); + DALI_TEST_EQUALS(value.Get(), 20, TEST_LOCATION); - value = actor.GetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY5 ); - DALI_TEST_EQUALS( value.Get(), 40.0f, 0.001f, TEST_LOCATION ); + value = actor.GetProperty(Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY5); + DALI_TEST_EQUALS(value.Get(), 40.0f, 0.001f, TEST_LOCATION); // Get read-only property - value = actor.GetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY6 ); - DALI_TEST_EQUALS( value.Get(), 10.0f, 0.001f, TEST_LOCATION ); + value = actor.GetProperty(Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY6); + DALI_TEST_EQUALS(value.Get(), 10.0f, 0.001f, TEST_LOCATION); // Attempt to set read-only property and then ensure value hasn't changed - actor.SetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY6, 40.0f ); - DALI_TEST_EQUALS( value.Get(), 10.0f, 0.001f, TEST_LOCATION ); + actor.SetProperty(Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY6, 40.0f); + DALI_TEST_EQUALS(value.Get(), 10.0f, 0.001f, TEST_LOCATION); END_TEST; } - int utcDaliActorGetTypeInfo(void) { TestApplication application; - tet_infoline( "Get the type info of a derived actor" ); + tet_infoline("Get the type info of a derived actor"); Test::TestCustomActor customActor = Test::TestCustomActor::New(); - Dali::TypeInfo typeInfo = Dali::DevelCustomActor::GetTypeInfo( customActor ); + Dali::TypeInfo typeInfo = Dali::DevelCustomActor::GetTypeInfo(customActor); + + DALI_TEST_EQUALS(typeInfo.GetName(), std::string("TestCustomActor"), TEST_LOCATION); - DALI_TEST_EQUALS( typeInfo.GetName(), std::string("TestCustomActor"), TEST_LOCATION ); + END_TEST; +} + +namespace Impl +{ +/** + * A custom actor that is not type registered on purpose + */ +struct UnregisteredCustomActor : public Dali::CustomActorImpl +{ + UnregisteredCustomActor() + : CustomActorImpl(ACTOR_BEHAVIOUR_DEFAULT) + { + } + virtual ~UnregisteredCustomActor() + { + } + virtual void OnSceneConnection(int32_t depth) + { + } + virtual void OnSceneDisconnection() + { + } + virtual void OnChildAdd(Actor& child) + { + } + virtual void OnChildRemove(Actor& child) + { + } + virtual void OnPropertySet(Property::Index index, const Property::Value& propertyValue) + { + } + virtual void OnSizeSet(const Vector3& targetSize) + { + } + virtual void OnSizeAnimation(Animation& animation, const Vector3& targetSize) + { + } + virtual bool OnHoverEvent(const HoverEvent& event) + { + return false; + } + virtual bool OnWheelEvent(const WheelEvent& event) + { + return false; + } + virtual void OnRelayout(const Vector2& size, RelayoutContainer& container) + { + } + virtual void OnSetResizePolicy(ResizePolicy::Type policy, Dimension::Type dimension) + { + } + virtual Vector3 GetNaturalSize() + { + return Vector3(); + } + virtual float CalculateChildSize(const Dali::Actor& child, Dimension::Type dimension) + { + return 0.f; + } + virtual float GetHeightForWidth(float width) + { + return 0.f; + } + virtual float GetWidthForHeight(float height) + { + return 0.f; + } + virtual bool RelayoutDependentOnChildren(Dimension::Type dimension = Dimension::ALL_DIMENSIONS) + { + return false; + } + virtual void OnCalculateRelayoutSize(Dimension::Type dimension) + { + } + virtual void OnLayoutNegotiated(float size, Dimension::Type dimension) + { + } +}; +} // namespace Impl +struct UnregisteredCustomActor : public Dali::CustomActor +{ + static UnregisteredCustomActor New() + { + Impl::UnregisteredCustomActor* impl = new Impl::UnregisteredCustomActor; + UnregisteredCustomActor custom(*impl); // takes ownership + return custom; + } + UnregisteredCustomActor() + { + } + ~UnregisteredCustomActor() + { + } + UnregisteredCustomActor(Internal::CustomActor* impl) + : CustomActor(impl) + { + } + UnregisteredCustomActor(Impl::UnregisteredCustomActor& impl) + : CustomActor(impl) + { + } + static UnregisteredCustomActor DownCast(BaseHandle handle) + { + UnregisteredCustomActor hndl; + CustomActor custom = Dali::CustomActor::DownCast(handle); + if(custom) + { + CustomActorImpl& customImpl = custom.GetImplementation(); + + Impl::UnregisteredCustomActor* impl = dynamic_cast(&customImpl); + + if(impl) + { + hndl = UnregisteredCustomActor(customImpl.GetOwner()); + } + } + return hndl; + } +}; + +int UtcDaliCustomActorSetGetActorPropertyActionSignal(void) +{ + TestApplication application; // Need the type registry + + auto custom = UnregisteredCustomActor::New(); + application.GetScene().Add(custom); + + // should have all actor properties + DALI_TEST_EQUALS(custom.GetPropertyType(Actor::Property::COLOR), Property::VECTOR4, TEST_LOCATION); + auto actorHandle = Actor::New(); + DALI_TEST_EQUALS(custom.GetPropertyCount(), actorHandle.GetPropertyCount(), TEST_LOCATION); + + DALI_TEST_EQUALS(custom.GetCurrentProperty(Actor::Property::VISIBLE), true, TEST_LOCATION); + custom.SetProperty(Actor::Property::VISIBLE, false); + application.SendNotification(); + application.Render(); // IsVisible returns scene value + DALI_TEST_EQUALS(custom.GetCurrentProperty(Actor::Property::VISIBLE), false, TEST_LOCATION); + + // should have custom actor typename (as it has not registered itself) + DALI_TEST_EQUALS("CustomActor", custom.GetTypeName(), TEST_LOCATION); + + // should have actor actions + custom.DoAction("show", Property::Map()); + DALI_TEST_EQUALS(custom.GetProperty(Actor::Property::VISIBLE).Get(), true, TEST_LOCATION); + + Animation animation = Animation::New(0.01f); // very short animation + // should be able to animate actor property + animation.AnimateTo(Property(custom, Actor::Property::POSITION), Vector3(100.0f, 150.0f, 200.0f)); + animation.Play(); + + application.SendNotification(); + application.Render(1000.f); + + DALI_TEST_EQUALS(Vector3(100.0f, 150.0f, 200.0f), custom.GetProperty(Actor::Property::POSITION).Get(), TEST_LOCATION); + DALI_TEST_EQUALS(Vector3(100.0f, 150.0f, 200.0f), custom.GetCurrentProperty(Actor::Property::POSITION), TEST_LOCATION); + + Dali::WeakHandle weakRef(custom); + // should have actor signals + custom.ConnectSignal(&application, "offScene", [weakRef]() { + DALI_TEST_EQUALS(weakRef.GetHandle().GetProperty(Actor::Property::CONNECTED_TO_SCENE), false, TEST_LOCATION); + }); + + application.GetScene().Remove(custom); + application.GetScene().Add(custom); + + END_TEST; +} + +namespace Impl +{ +struct DerivedCustomActor : public UnregisteredCustomActor +{ +}; +} // namespace Impl + +struct DerivedCustomActor : public UnregisteredCustomActor +{ + static DerivedCustomActor New() + { + Impl::DerivedCustomActor* impl = new Impl::DerivedCustomActor; + DerivedCustomActor custom(*impl); // takes ownership + return custom; + } + DerivedCustomActor() + { + } + ~DerivedCustomActor() + { + } + DerivedCustomActor(Internal::CustomActor* impl) + : UnregisteredCustomActor(impl) + { + } + DerivedCustomActor(Impl::UnregisteredCustomActor& impl) + : UnregisteredCustomActor(impl) + { + } +}; + +// register custom +DALI_TYPE_REGISTRATION_BEGIN(DerivedCustomActor, UnregisteredCustomActor, nullptr); +DALI_TYPE_REGISTRATION_END() + +int UtcDaliCustomActorPropertyRegistrationDefaultValue(void) +{ + TestApplication application; // Need the type registry + + // register our base and add a property with default value for it + Dali::TypeRegistration typeRegistration(typeid(UnregisteredCustomActor), typeid(Dali::CustomActor), nullptr); + + auto derived = DerivedCustomActor::New(); + application.GetScene().Add(derived); + + // should have all actor properties + DALI_TEST_EQUALS(derived.GetPropertyType(Actor::Property::WORLD_MATRIX), Property::MATRIX, TEST_LOCATION); + auto actorHandle = Actor::New(); + DALI_TEST_EQUALS(derived.GetPropertyCount(), actorHandle.GetPropertyCount(), TEST_LOCATION); + + // add a property in base class + AnimatablePropertyRegistration(typeRegistration, "Foobar", ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX, 10.f); + + // should be one more property now + DALI_TEST_EQUALS(derived.GetPropertyCount(), actorHandle.GetPropertyCount() + 1, TEST_LOCATION); + // check that the default value is set for base class + DALI_TEST_EQUALS(UnregisteredCustomActor::New().GetProperty(ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX).Get(), 10.f, TEST_LOCATION); + // check that the default value is set for the derived instance as well + DALI_TEST_EQUALS(derived.GetProperty(ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX).Get(), 10.f, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliCustomActorComponentPropertyConstraintsP(void) +{ + TestApplication application; // Need the type registry + + // register our base and add a property with default value for it + Dali::TypeRegistration typeRegistration(typeid(UnregisteredCustomActor), typeid(Dali::CustomActor), nullptr); + + auto derived = DerivedCustomActor::New(); + application.GetScene().Add(derived); + + // should have all actor properties + auto actorHandle = Actor::New(); + DALI_TEST_EQUALS(derived.GetPropertyCount(), actorHandle.GetPropertyCount(), TEST_LOCATION); + + // add a property in base class + const Property::Index foobarIndex = ANIMATABLE_PROPERTY_REGISTRATION_START_INDEX; + const Property::Index fooIndex = foobarIndex + 1; + const Property::Index barIndex = foobarIndex + 2; + + AnimatablePropertyRegistration(typeRegistration, "Foobar", foobarIndex, Vector2(10.0f, 20.0f)); + AnimatablePropertyComponentRegistration(typeRegistration, "Foobar.x", fooIndex, foobarIndex, 0); + AnimatablePropertyComponentRegistration(typeRegistration, "Foobar.y", barIndex, foobarIndex, 1); + + tet_infoline("Test the default values of the registered property"); + // should be more properties now + DALI_TEST_EQUALS(derived.GetPropertyCount(), actorHandle.GetPropertyCount() + 3, TEST_LOCATION); + // check that the default value is set for base class + DALI_TEST_EQUALS(UnregisteredCustomActor::New().GetProperty(foobarIndex).Get(), Vector2(10.f, 20.0f), 0.0001f, TEST_LOCATION); + // check that the default value is set for the derived instance as well + DALI_TEST_EQUALS(derived.GetProperty(foobarIndex).Get(), Vector2(10.f, 20.0f), 0.0001f, TEST_LOCATION); + + tet_infoline("Test that the components of the registered property can be constrained"); + + // Try constraining the properties + Constraint fooCons = Constraint::New(derived, fooIndex, &Test::Doubler); + fooCons.AddSource(LocalSource(Actor::Property::POSITION_X)); + fooCons.Apply(); + Constraint barCons = Constraint::New(derived, barIndex, &Test::Doubler); + barCons.AddSource(LocalSource(fooIndex)); + barCons.Apply(); + + for(int i = 1; i < 10; ++i) + { + derived[Actor::Property::POSITION_X] = i * 1.0f; + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS(derived.GetCurrentProperty(foobarIndex).Get(), Vector2(i * 2.0f, i * 4.0f), 0.0001f, TEST_LOCATION); + } + + // Add a Vector3 property and its components for completeness + const Property::Index vec3PropIndex = barIndex + 1; + const Property::Index vec3xPropIndex = vec3PropIndex + 1; + const Property::Index vec3yPropIndex = vec3PropIndex + 2; + const Property::Index vec3zPropIndex = vec3PropIndex + 3; + + AnimatablePropertyRegistration(typeRegistration, "vec3Prop", vec3PropIndex, Vector3(10.0f, 20.0f, 30.0f)); + AnimatablePropertyComponentRegistration(typeRegistration, "vec3Prop.x", vec3xPropIndex, vec3PropIndex, 0); + AnimatablePropertyComponentRegistration(typeRegistration, "vec3Prop.y", vec3yPropIndex, vec3PropIndex, 1); + AnimatablePropertyComponentRegistration(typeRegistration, "vec3Prop.z", vec3zPropIndex, vec3PropIndex, 2); + + tet_infoline("Test the default values of the registered vec3 property"); + // should be more properties now + DALI_TEST_EQUALS(derived.GetPropertyCount(), actorHandle.GetPropertyCount() + 7, TEST_LOCATION); + // check that the default value is set for base class + DALI_TEST_EQUALS(UnregisteredCustomActor::New().GetProperty(vec3PropIndex).Get(), Vector3(10.f, 20.0f, 30.0f), 0.0001f, TEST_LOCATION); + // check that the default value is set for the derived instance as well + DALI_TEST_EQUALS(derived.GetProperty(vec3PropIndex).Get(), Vector3(10.f, 20.0f, 30.0f), 0.0001f, TEST_LOCATION); + + tet_infoline("Test that the components of the registered property can be constrained"); + + // Try constraining the properties + Constraint vec3xConstraint = Constraint::New(derived, vec3xPropIndex, &Test::Doubler); + vec3xConstraint.AddSource(LocalSource(Actor::Property::POSITION_X)); + vec3xConstraint.Apply(); + Constraint vec3yConstraint = Constraint::New(derived, vec3yPropIndex, &Test::Doubler); + vec3yConstraint.AddSource(LocalSource(vec3xPropIndex)); + vec3yConstraint.Apply(); + Constraint vec3zConstraint = Constraint::New(derived, vec3zPropIndex, &Test::Doubler); + vec3zConstraint.AddSource(LocalSource(vec3yPropIndex)); + vec3zConstraint.Apply(); + + for(int i = 1; i < 10; ++i) + { + derived[Actor::Property::POSITION_X] = i * 1.0f; + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS(derived.GetCurrentProperty(vec3PropIndex).Get(), Vector3(i * 2.0f, i * 4.0f, i * 8.0f), 0.0001f, TEST_LOCATION); + } END_TEST; }