X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-Actor.cpp;h=4794369ee33744e016b3703c10a25cb0046fce84;hb=462cbee2270984cdca45488f3733d664dcf49187;hp=238178656ac32f9543b0d691686337c5e90b1585;hpb=b7a2625f66a16845af4fc44256126f32b9a0ac7e;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-Actor.cpp b/automated-tests/src/dali/utc-Dali-Actor.cpp index 2381786..4794369 100644 --- a/automated-tests/src/dali/utc-Dali-Actor.cpp +++ b/automated-tests/src/dali/utc-Dali-Actor.cpp @@ -2483,9 +2483,9 @@ int UtcDaliActorTouchedSignal(void) point.SetDeviceId( 1 ); point.SetState( PointState::DOWN ); point.SetScreenPosition( Vector2( touchPoint.x, touchPoint.y ) ); - Dali::Integration::TouchEvent event; - event.AddPoint( point ); - application.ProcessEvent( event ); + Dali::Integration::TouchEvent touchEvent; + touchEvent.AddPoint( point ); + application.ProcessEvent( touchEvent ); DALI_TEST_CHECK( gTouchCallBackCalled == true ); END_TEST; @@ -2513,9 +2513,9 @@ int UtcDaliActorHoveredSignal(void) point.SetDeviceId( 1 ); point.SetState( PointState::MOTION ); point.SetScreenPosition( Vector2( touchPoint.x, touchPoint.y ) ); - Dali::Integration::HoverEvent event; - event.AddPoint( point ); - application.ProcessEvent( event ); + Dali::Integration::HoverEvent hoverEvent; + hoverEvent.AddPoint( point ); + application.ProcessEvent( hoverEvent ); DALI_TEST_CHECK( gHoverCallBackCalled == true ); END_TEST; @@ -3859,17 +3859,33 @@ int UtcDaliActorRemoveRendererP1(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Geometry geometry = CreateQuadGeometry(); - Shader shader = CreateShader(); - Renderer renderer = Renderer::New(geometry, shader); + { + Geometry geometry = CreateQuadGeometry(); + Shader shader = CreateShader(); + Renderer renderer = Renderer::New(geometry, shader); - actor.AddRenderer( renderer ); - DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetRendererAt(0), renderer, TEST_LOCATION ); + actor.AddRenderer( renderer ); + DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetRendererAt(0), renderer, TEST_LOCATION ); - actor.RemoveRenderer(renderer); - DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); + application.SendNotification(); + application.Render(); + } + { + Renderer renderer = actor.GetRendererAt(0); + actor.RemoveRenderer(renderer); + DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + } + + // Call one final time to ensure that the renderer is actually removed after + // the handle goes out of scope, and excercises the deletion code path in + // scene graph and render. + application.SendNotification(); + application.Render(); END_TEST; } @@ -3888,13 +3904,19 @@ int UtcDaliActorRemoveRendererP2(void) Renderer renderer = Renderer::New(geometry, shader); actor.AddRenderer( renderer ); + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); DALI_TEST_EQUALS( actor.GetRendererAt(0), renderer, TEST_LOCATION ); actor.RemoveRenderer(0); - DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); + // Shut down whilst holding onto the renderer handle. END_TEST; } @@ -4297,10 +4319,10 @@ int UtcDaliActorRaiseLower(void) point.SetDeviceId( 1 ); point.SetState( PointState::DOWN ); point.SetScreenPosition( Vector2( 10.f, 10.f ) ); - Dali::Integration::TouchEvent event; - event.AddPoint( point ); + Dali::Integration::TouchEvent touchEvent; + touchEvent.AddPoint( point ); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); DALI_TEST_EQUALS( gTouchCallBackCalled, false, TEST_LOCATION ); DALI_TEST_EQUALS( gTouchCallBackCalled2, false, TEST_LOCATION ); @@ -4317,13 +4339,15 @@ int UtcDaliActorRaiseLower(void) value.Get( preActorOrder ); DevelActor::Raise( actorB ); + // Ensure sort order is calculated before next touch event + application.SendNotification(); value = actorB.GetProperty(Dali::DevelActor::Property::SIBLING_ORDER ); value.Get( postActorOrder ); tet_printf( "Raised ActorB from (%d) to (%d) \n", preActorOrder, postActorOrder ); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); DALI_TEST_EQUALS( gTouchCallBackCalled, false, TEST_LOCATION ); DALI_TEST_EQUALS( gTouchCallBackCalled2, true , TEST_LOCATION ); @@ -4337,13 +4361,14 @@ int UtcDaliActorRaiseLower(void) value.Get( preActorOrder ); DevelActor::Lower( actorB ); + application.SendNotification(); // ensure sort order calculated before next touch event value = actorB.GetProperty(Dali::DevelActor::Property::SIBLING_ORDER ); value.Get( postActorOrder ); tet_printf( "Lowered ActorB from (%d) to (%d) \n", preActorOrder, postActorOrder ); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); DALI_TEST_EQUALS( gTouchCallBackCalled, false, TEST_LOCATION ); DALI_TEST_EQUALS( gTouchCallBackCalled2, false , TEST_LOCATION ); @@ -4449,10 +4474,10 @@ int UtcDaliActorRaiseToTopLowerToBottom(void) point.SetDeviceId( 1 ); point.SetState( PointState::DOWN ); point.SetScreenPosition( Vector2( 10.f, 10.f ) ); - Dali::Integration::TouchEvent event; - event.AddPoint( point ); + Dali::Integration::TouchEvent touchEvent; + touchEvent.AddPoint( point ); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); DALI_TEST_EQUALS( gTouchCallBackCalled, false, TEST_LOCATION ); DALI_TEST_EQUALS( gTouchCallBackCalled2, false, TEST_LOCATION ); @@ -4463,8 +4488,9 @@ int UtcDaliActorRaiseToTopLowerToBottom(void) tet_printf( "RaiseToTop ActorA\n" ); DevelActor::RaiseToTop( actorA ); + application.SendNotification(); // ensure sorting order is calculated before next touch event - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); glAbstraction.ResetSetUniformCallStack(); glSetUniformStack = glAbstraction.GetSetUniformTrace(); @@ -4493,8 +4519,9 @@ int UtcDaliActorRaiseToTopLowerToBottom(void) tet_printf( "RaiseToTop ActorB\n" ); DevelActor::RaiseToTop( actorB ); + application.SendNotification(); // Ensure sort order is calculated before next touch event - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); glAbstraction.ResetSetUniformCallStack(); glSetUniformStack = glAbstraction.GetSetUniformTrace(); @@ -4530,7 +4557,7 @@ int UtcDaliActorRaiseToTopLowerToBottom(void) application.SendNotification(); application.Render(); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); glAbstraction.ResetSetUniformCallStack(); glSetUniformStack = glAbstraction.GetSetUniformTrace(); @@ -4612,10 +4639,10 @@ int UtcDaliActorRaiseAbove(void) point.SetDeviceId( 1 ); point.SetState( PointState::DOWN ); point.SetScreenPosition( Vector2( 10.f, 10.f ) ); - Dali::Integration::TouchEvent event; - event.AddPoint( point ); + Dali::Integration::TouchEvent touchEvent; + touchEvent.AddPoint( point ); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); DALI_TEST_EQUALS( gTouchCallBackCalled, false, TEST_LOCATION ); DALI_TEST_EQUALS( gTouchCallBackCalled2, false, TEST_LOCATION ); @@ -4626,8 +4653,10 @@ int UtcDaliActorRaiseAbove(void) tet_printf( "Raise actor B Above Actor C\n" ); DevelActor::RaiseAbove( actorB, actorC ); + // Ensure sorting happens at end of Core::ProcessEvents() before next touch + application.SendNotification(); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); DALI_TEST_EQUALS( gTouchCallBackCalled, false, TEST_LOCATION ); DALI_TEST_EQUALS( gTouchCallBackCalled2, true, TEST_LOCATION ); @@ -4639,7 +4668,10 @@ int UtcDaliActorRaiseAbove(void) DevelActor::RaiseAbove( actorA, actorB ); - application.ProcessEvent( event ); + // Ensure sorting happens at end of Core::ProcessEvents() before next touch + application.SendNotification(); + + application.ProcessEvent( touchEvent ); // process a touch event on ordered actors. DALI_TEST_EQUALS( gTouchCallBackCalled, true, TEST_LOCATION ); DALI_TEST_EQUALS( gTouchCallBackCalled2, false, TEST_LOCATION ); @@ -4748,12 +4780,12 @@ int UtcDaliActorLowerBelow(void) point.SetDeviceId( 1 ); point.SetState( PointState::DOWN ); point.SetScreenPosition( Vector2( 10.f, 10.f ) ); - Dali::Integration::TouchEvent event; - event.AddPoint( point ); + Dali::Integration::TouchEvent touchEvent; + touchEvent.AddPoint( point ); tet_infoline( "UtcDaliActor Test Set up completed \n" ); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); DALI_TEST_EQUALS( gTouchCallBackCalled, false, TEST_LOCATION ); DALI_TEST_EQUALS( gTouchCallBackCalled2, false, TEST_LOCATION ); @@ -4764,11 +4796,11 @@ int UtcDaliActorLowerBelow(void) tet_printf( "Lower actor C below Actor B ( actor B and A on same level due to insertion order) so C is below both \n" ); DevelActor::LowerBelow( actorC, actorB ); - + // Ensure sorting happens at end of Core::ProcessEvents() before next touch application.SendNotification(); application.Render(); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); // touch event glAbstraction.ResetSetUniformCallStack(); glSetUniformStack = glAbstraction.GetSetUniformTrace(); @@ -4797,11 +4829,11 @@ int UtcDaliActorLowerBelow(void) tet_printf( "Lower actor B below Actor C leaving A on top\n" ); DevelActor::LowerBelow( actorB, actorC ); - + // Ensure sorting happens at end of Core::ProcessEvents() before next touch application.SendNotification(); application.Render(); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); glAbstraction.ResetSetUniformCallStack(); glSetUniformStack = glAbstraction.GetSetUniformTrace(); @@ -4827,11 +4859,11 @@ int UtcDaliActorLowerBelow(void) tet_printf( "Lower actor A below Actor C leaving C on top\n" ); DevelActor::LowerBelow( actorA, actorC ); - + // Ensure sorting happens at end of Core::ProcessEvents() before next touch application.SendNotification(); application.Render(); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); glAbstraction.ResetSetUniformCallStack(); glSetUniformStack = glAbstraction.GetSetUniformTrace(); @@ -4888,6 +4920,7 @@ int UtcDaliActorMaxSiblingOrder(void) Actor sibling = parent.GetChildAt( 5 ); DevelActor::RaiseToTop( sibling ); + // Ensure sorting happens at end of Core::ProcessEvents() application.SendNotification(); application.Render(); @@ -4978,10 +5011,10 @@ int UtcDaliActorRaiseAboveLowerBelowDifferentParentsN(void) point.SetDeviceId( 1 ); point.SetState( PointState::DOWN ); point.SetScreenPosition( Vector2( 10.f, 10.f ) ); - Dali::Integration::TouchEvent event; - event.AddPoint( point ); + Dali::Integration::TouchEvent touchEvent; + touchEvent.AddPoint( point ); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); DALI_TEST_EQUALS( gTouchCallBackCalled, false, TEST_LOCATION ); DALI_TEST_EQUALS( gTouchCallBackCalled2, false, TEST_LOCATION ); @@ -4992,8 +5025,10 @@ int UtcDaliActorRaiseAboveLowerBelowDifferentParentsN(void) tet_printf( "Raise actor A Above Actor C which have different parents\n" ); DevelActor::RaiseAbove( actorA, actorC ); + // Ensure sorting happens at end of Core::ProcessEvents() before next touch + application.SendNotification(); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); // touch event DALI_TEST_EQUALS( gTouchCallBackCalled, false, TEST_LOCATION ); DALI_TEST_EQUALS( gTouchCallBackCalled2, false, TEST_LOCATION ); @@ -5053,14 +5088,16 @@ int UtcDaliActorRaiseLowerWhenUnparentedTargetN(void) point.SetDeviceId( 1 ); point.SetState( PointState::DOWN ); point.SetScreenPosition( Vector2( 10.f, 10.f ) ); - Dali::Integration::TouchEvent event; - event.AddPoint( point ); + Dali::Integration::TouchEvent touchEvent; + touchEvent.AddPoint( point ); tet_printf( "Raise actor A Above Actor C which have no parents\n" ); DevelActor::RaiseAbove( actorA, actorC ); + // Ensure sorting happens at end of Core::ProcessEvents() before next touch + application.SendNotification(); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); tet_printf( "Not parented so RaiseAbove should show no effect\n" ); @@ -5071,13 +5108,14 @@ int UtcDaliActorRaiseLowerWhenUnparentedTargetN(void) ResetTouchCallbacks(); stage.Add ( actorB ); + tet_printf( "Lower actor A below Actor C when only A is not on stage \n" ); + DevelActor::LowerBelow( actorA, actorC ); + // Ensure sorting happens at end of Core::ProcessEvents() before next touch application.SendNotification(); application.Render(); - tet_printf( "Lower actor A below Actor C when only A is not on stage \n" ); - DevelActor::LowerBelow( actorA, actorC ); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); tet_printf( "Actor A not parented so LowerBelow should show no effect\n" ); DALI_TEST_EQUALS( gTouchCallBackCalled, false, TEST_LOCATION ); @@ -5094,7 +5132,10 @@ int UtcDaliActorRaiseLowerWhenUnparentedTargetN(void) tet_printf( "Raise actor B Above Actor C when only B has a parent\n" ); DevelActor::RaiseAbove( actorB, actorC ); - application.ProcessEvent( event ); + // Ensure sorting happens at end of Core::ProcessEvents() before next touch + application.SendNotification(); + + application.ProcessEvent( touchEvent ); tet_printf( "C not parented so RaiseAbove should show no effect\n" ); DALI_TEST_EQUALS( gTouchCallBackCalled, true, TEST_LOCATION ); @@ -5105,7 +5146,10 @@ int UtcDaliActorRaiseLowerWhenUnparentedTargetN(void) tet_printf( "Lower actor A below Actor C when only A has a parent\n" ); DevelActor::LowerBelow( actorA, actorC ); - application.ProcessEvent( event ); + // Ensure sorting happens at end of Core::ProcessEvents() before next touch + application.SendNotification(); + + application.ProcessEvent( touchEvent ); tet_printf( "C not parented so LowerBelow should show no effect\n" ); DALI_TEST_EQUALS( gTouchCallBackCalled, true, TEST_LOCATION ); @@ -5115,12 +5159,12 @@ int UtcDaliActorRaiseLowerWhenUnparentedTargetN(void) ResetTouchCallbacks(); stage.Add ( actorC ); - + DevelActor::RaiseAbove( actorA, actorC ); + // Ensure sorting happens at end of Core::ProcessEvents() before next touch application.SendNotification(); application.Render(); - DevelActor::RaiseAbove( actorA, actorC ); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); tet_printf( "Raise actor A Above Actor C, now both have same parent \n" ); DALI_TEST_EQUALS( gTouchCallBackCalled, true, TEST_LOCATION ); @@ -5172,19 +5216,17 @@ int UtcDaliActorTestAllAPIwhenActorNotParented(void) point.SetDeviceId( 1 ); point.SetState( PointState::DOWN ); point.SetScreenPosition( Vector2( 10.f, 10.f ) ); - Dali::Integration::TouchEvent event; - event.AddPoint( point ); + Dali::Integration::TouchEvent touchEvent; + touchEvent.AddPoint( point ); stage.Add ( actorA ); + tet_printf( "Raise actor B Above Actor C but B not parented\n" ); + DevelActor::Raise( actorB ); application.SendNotification(); application.Render(); - tet_printf( "Raise actor B Above Actor C but B not parented\n" ); - - DevelActor::Raise( actorB ); - - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); tet_printf( "Not parented so RaiseAbove should show no effect\n" ); @@ -5196,8 +5238,11 @@ int UtcDaliActorTestAllAPIwhenActorNotParented(void) ResetTouchCallbacks(); DevelActor::Lower( actorC ); + // Sort actor tree before next touch event + application.SendNotification(); + application.Render(); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); tet_printf( "Not parented so RaiseAbove should show no effect\n" ); @@ -5209,8 +5254,11 @@ int UtcDaliActorTestAllAPIwhenActorNotParented(void) tet_printf( "Lower actor C below B but C not parented\n" ); DevelActor::Lower( actorB ); + // Sort actor tree before next touch event + application.SendNotification(); + application.Render(); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); tet_printf( "Not parented so Lower should show no effect\n" ); @@ -5222,8 +5270,11 @@ int UtcDaliActorTestAllAPIwhenActorNotParented(void) tet_printf( "Raise actor B to top\n" ); DevelActor::RaiseToTop( actorB ); + // Sort actor tree before next touch event + application.SendNotification(); + application.Render(); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); tet_printf( "Not parented so RaiseToTop should show no effect\n" ); @@ -5236,14 +5287,13 @@ int UtcDaliActorTestAllAPIwhenActorNotParented(void) stage.Add ( actorB ); - application.SendNotification(); - application.Render(); - tet_printf( "Lower actor C to Bottom, B stays at top\n" ); DevelActor::LowerToBottom( actorC ); + application.SendNotification(); + application.Render(); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); tet_printf( "Not parented so LowerToBottom should show no effect\n" ); @@ -5305,10 +5355,10 @@ int UtcDaliActorRaiseAboveActorAndTargetTheSameN(void) point.SetDeviceId( 1 ); point.SetState( PointState::DOWN ); point.SetScreenPosition( Vector2( 10.f, 10.f ) ); - Dali::Integration::TouchEvent event; - event.AddPoint( point ); + Dali::Integration::TouchEvent touchEvent; + touchEvent.AddPoint( point ); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); DALI_TEST_EQUALS( gTouchCallBackCalled, false, TEST_LOCATION ); DALI_TEST_EQUALS( gTouchCallBackCalled2, false, TEST_LOCATION ); @@ -5319,8 +5369,10 @@ int UtcDaliActorRaiseAboveActorAndTargetTheSameN(void) tet_infoline( "Raise actor A Above Actor A which is the same actor!!\n" ); DevelActor::RaiseAbove( actorA, actorA ); + application.SendNotification(); + application.Render(); - application.ProcessEvent( event ); + application.ProcessEvent( touchEvent ); tet_infoline( "No target is source Actor so RaiseAbove should show no effect\n" ); @@ -5331,7 +5383,10 @@ int UtcDaliActorRaiseAboveActorAndTargetTheSameN(void) ResetTouchCallbacks(); DevelActor::RaiseAbove( actorA, actorC ); - application.ProcessEvent( event ); + application.SendNotification(); + application.Render(); + + application.ProcessEvent( touchEvent ); tet_infoline( "Raise actor A Above Actor C which will now be successful \n" ); DALI_TEST_EQUALS( gTouchCallBackCalled, true, TEST_LOCATION ); @@ -5988,4 +6043,43 @@ int utcDaliActorVisibilityChangeSignalChildren(void) childData.Check( false /* not called */, TEST_LOCATION ); grandChildData.Check( false /* not called */, TEST_LOCATION ); - END_TEST;} + END_TEST; +} + +int utcDaliActorVisibilityChangeSignalAfterAnimation(void) +{ + TestApplication application; + tet_infoline( "Check that the visibility change signal is emitted when the visibility changes when an animation starts" ); + + Actor actor = Actor::New(); + Stage::GetCurrent().Add( actor ); + + application.SendNotification(); + application.Render(); + + VisibilityChangedFunctorData data; + DevelActor::VisibilityChangedSignal( actor ).Connect( &application, VisibilityChangedFunctor( data ) ); + + Animation animation = Animation::New( 1.0f ); + animation.AnimateTo( Property( actor, Actor::Property::VISIBLE ), false ); + + data.Check( false, TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetProperty< bool >( Actor::Property::VISIBLE ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< bool >( actor, Actor::Property::VISIBLE ), true, TEST_LOCATION ); + + tet_infoline( "Play the animation and check the property value" ); + animation.Play(); + + data.Check( true /* called */, actor, false /* not visible */, DevelActor::VisibilityChange::SELF, TEST_LOCATION ); + DALI_TEST_EQUALS( actor.GetProperty< bool >( Actor::Property::VISIBLE ), false, TEST_LOCATION ); + + tet_infoline( "Animation not currently finished, so the current visibility should still be true" ); + DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< bool >( actor, Actor::Property::VISIBLE ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render( 1100 ); // After the animation + + DALI_TEST_EQUALS( DevelHandle::GetCurrentProperty< bool >( actor, Actor::Property::VISIBLE ), false, TEST_LOCATION ); + + END_TEST; +}