X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-FrameCallbackInterface.cpp;h=d854148b3679666210f1bf6bf589c2abb8acf2c4;hb=d6a8a0696fc51eb52dcb71b25ec8bce775e6b947;hp=9c4f31b354cf9956a3823f0e9d6842d082ca7c0e;hpb=92bec55a401727638030a48e759c0b1a8f5321e1;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-FrameCallbackInterface.cpp b/automated-tests/src/dali/utc-Dali-FrameCallbackInterface.cpp index 9c4f31b..d854148 100644 --- a/automated-tests/src/dali/utc-Dali-FrameCallbackInterface.cpp +++ b/automated-tests/src/dali/utc-Dali-FrameCallbackInterface.cpp @@ -60,8 +60,6 @@ public: bool mCalled{ false }; }; -} // anon namespace - class FrameCallbackOneActor : public FrameCallbackBasic { public: @@ -270,6 +268,8 @@ public: bool mBakeScaleCallSuccess{ false }; }; +} // anon namespace + /////////////////////////////////////////////////////////////////////////////// int UtcDaliFrameCallbackCheckInstallationAndRemoval(void) @@ -381,6 +381,24 @@ int UtcDaliFrameCallbackSetters(void) DALI_TEST_EQUALS( actor.GetCurrentProperty( Actor::Property::COLOR ).Get< Vector4 >(), Color::WHITE, TEST_LOCATION ); DALI_TEST_EQUALS( actor.GetCurrentProperty( Actor::Property::SCALE ).Get< Vector3 >(), Vector3::ONE, TEST_LOCATION ); + // Render for a couple more frames to ensure the values are reset properly (some values are double-buffered) + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( actor.GetCurrentProperty( Actor::Property::POSITION ).Get< Vector3 >(), Vector3::ZERO, TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetCurrentProperty( Actor::Property::SIZE ).Get< Vector3 >(), Vector3( actorSize ), TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetCurrentProperty( Actor::Property::COLOR ).Get< Vector4 >(), Color::WHITE, TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetCurrentProperty( Actor::Property::SCALE ).Get< Vector3 >(), Vector3::ONE, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( actor.GetCurrentProperty( Actor::Property::POSITION ).Get< Vector3 >(), Vector3::ZERO, TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetCurrentProperty( Actor::Property::SIZE ).Get< Vector3 >(), Vector3( actorSize ), TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetCurrentProperty( Actor::Property::COLOR ).Get< Vector4 >(), Color::WHITE, TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetCurrentProperty( Actor::Property::SCALE ).Get< Vector3 >(), Vector3::ONE, TEST_LOCATION ); + END_TEST; } @@ -804,6 +822,8 @@ int UtcDaliFrameCallbackMultipleCallbacks(void) int UtcDaliFrameCallbackActorDestroyed(void) { + // Test to ensure that the frame-callback behaves gracefully if the connected root-actor is destroyed + TestApplication application; Stage stage = Stage::GetCurrent(); @@ -847,3 +867,56 @@ int UtcDaliFrameCallbackActorDestroyed(void) END_TEST; } + +int UtcDaliFrameCallbackDestroyedBeforeRemoving(void) +{ + // Ensure there's no segmentation fault if the callback is deleted without being removed + + TestApplication application; + Stage stage = Stage::GetCurrent(); + + Actor actor = Actor::New(); + stage.Add( actor ); + + { + FrameCallbackBasic frameCallback; + DevelStage::AddFrameCallback( stage, frameCallback, actor ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( frameCallback.mCalled, true, TEST_LOCATION ); + frameCallback.Reset(); + } + + // frameCallback has now been destroyed but not removed + + application.SendNotification(); + application.Render(); + DALI_TEST_CHECK( true ); // If it runs to here then there's no segmentation fault + + END_TEST; +} + +int UtcDaliFrameCallbackDoubleAddition(void) +{ + // Ensure we don't connect the same frame-callback twice + + TestApplication application; + Stage stage = Stage::GetCurrent(); + Actor rootActor = stage.GetRootLayer(); + + FrameCallbackBasic frameCallback; + DevelStage::AddFrameCallback( stage, frameCallback, rootActor ); + + try + { + DevelStage::AddFrameCallback( stage, frameCallback, rootActor ); + } + catch( ... ) + { + DALI_TEST_CHECK( true ); + } + + END_TEST; +}