X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-TransitionData.cpp;h=42ca88e55cde3c3b7d2005fa9cf1521aadfc2877;hp=5ca2b171e761a06d7d9fee71c8658203b9fef591;hb=5e351965bad7e1de2e94027548b022bac692603c;hpb=fb0339fee98523cbf3e527ddd8125660aa441c6c diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TransitionData.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TransitionData.cpp index 5ca2b17..42ca88e 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TransitionData.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TransitionData.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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. @@ -254,10 +254,14 @@ int UtcDaliTransitionDataMap1P(void) Renderer renderer = actor.GetRendererAt(0); Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + Property::Index opacityIndex = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); application.SendNotification(); application.Render(0); - DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Color::MAGENTA, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); anim.Play(); @@ -265,15 +269,19 @@ int UtcDaliTransitionDataMap1P(void) application.Render(500); // Start animation application.Render(500); // Halfway thru anim application.SendNotification(); - DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), (Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); application.Render(500); // End of anim application.SendNotification(); - DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Color::RED, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::RED), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); END_TEST; } + + int UtcDaliTransitionDataMap2P(void) { TestApplication application; @@ -282,7 +290,6 @@ int UtcDaliTransitionDataMap2P(void) Property::Map map; map["target"] = "visual1"; - //Control::CONTROL_PROPERTY_END_INDEX + 1 map["property"] = ColorVisual::Property::MIX_COLOR; map["initialValue"] = Color::MAGENTA; map["targetValue"] = Color::RED; @@ -316,10 +323,87 @@ int UtcDaliTransitionDataMap2P(void) Renderer renderer = actor.GetRendererAt(0); Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + Property::Index opacityIndex = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); + application.SendNotification(); + application.Render(0); + + DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); + + anim.Play(); + + application.SendNotification(); + application.Render(0); + application.Render(500); // Start animation + application.Render(500); // Halfway thru anim + application.SendNotification(); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION); + + application.Render(500); // End of anim + application.SendNotification(); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::RED), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION); + + END_TEST; +} + + +int UtcDaliTransitionDataMap2Pb(void) +{ + TestApplication application; + + tet_printf("Testing animation of a visual property using programmatic maps\n"); + + Property::Map map; + map["target"] = "visual1"; + map["property"] = PrimitiveVisual::Property::MIX_COLOR; + map["initialValue"] = Color::MAGENTA; + map["targetValue"] = Color::RED; + map["animator"] = Property::Map() + .Add("alphaFunction", "LINEAR") + .Add("timePeriod", Property::Map() + .Add("delay", 0.5f) + .Add("duration", 1.0f)); + + Dali::Toolkit::TransitionData transition = TransitionData::New( map ); + + DummyControl actor = DummyControl::New(); + actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); + actor.SetName("Actor1"); + actor.SetColor(Color::CYAN); + Stage::GetCurrent().Add(actor); + + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + + Property::Map visualMap; + visualMap[Visual::Property::TYPE] = Visual::PRIMITIVE; + visualMap[PrimitiveVisual::Property::MIX_COLOR] = Color::MAGENTA; + visualMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::SPHERE; + visualMap[ PrimitiveVisual::Property::SLICES ] = 10; + visualMap[ PrimitiveVisual::Property::STACKS ] = 10; + + Visual::Base visual = VisualFactory::Get().CreateVisual( visualMap ); + visual.SetName( "visual1" ); + + Property::Index visualIndex = Control::CONTROL_PROPERTY_END_INDEX + 1; + dummyImpl.RegisterVisual( visualIndex, visual ); + + Animation anim = dummyImpl.CreateTransition( transition ); + DALI_TEST_CHECK( anim ); + + Renderer renderer = actor.GetRendererAt(0); + Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, PrimitiveVisual::Property::MIX_COLOR ); + Property::Index opacityIndex = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); application.SendNotification(); application.Render(0); - DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Color::MAGENTA, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); anim.Play(); @@ -328,15 +412,18 @@ int UtcDaliTransitionDataMap2P(void) application.Render(500); // Start animation application.Render(500); // Halfway thru anim application.SendNotification(); - DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), (Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION); application.Render(500); // End of anim application.SendNotification(); - DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Color::RED, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::RED), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION); END_TEST; } + int UtcDaliTransitionDataMap3P(void) { TestApplication application; @@ -447,19 +534,167 @@ int UtcDaliTransitionDataMap4P(void) application.Render(0); DALI_TEST_EQUALS( renderer.GetProperty(sizeIndex), Vector2(10.0f, 10.0f), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector2 >( sizeIndex ), Vector2(10.0f, 10.0f), TEST_LOCATION); + + anim.Play(); + + application.SendNotification(); + application.Render(0); + application.Render(500); // Start animation + application.Render(500); // Halfway thru anim + application.SendNotification(); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector2 >( sizeIndex ), Vector2(60.0f, 60.0f), TEST_LOCATION); + + application.Render(500); // End of anim + application.SendNotification(); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector2 >( sizeIndex ), Vector2(110.0f, 110.0f), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliTransitionDataMap5P(void) +{ + TestApplication application; + + tet_printf("Testing animation visual opacity using stylesheet equivalent maps\n"); + + Property::Map map; + map["target"] = "visual1"; + map["property"] = "opacity"; + map["initialValue"] = 0.0f; + map["targetValue"] = 1.0f; + map["animator"] = Property::Map() + .Add("alphaFunction", "EASE_IN_OUT") + .Add("timePeriod", Property::Map() + .Add("delay", 0.5f) + .Add("duration", 1.0f)); + + Dali::Toolkit::TransitionData transition = TransitionData::New( map ); + + DummyControl actor = DummyControl::New(); + actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); + actor.SetName("Actor1"); + actor.SetColor(Color::CYAN); + Stage::GetCurrent().Add(actor); + + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + + Property::Map visualMap; + visualMap[Visual::Property::TYPE] = Visual::COLOR; + visualMap[ColorVisual::Property::MIX_COLOR] = Color::MAGENTA; + Visual::Base visual = VisualFactory::Get().CreateVisual( visualMap ); + visual.SetName( "visual1" ); + + Property::Index visualIndex = Control::CONTROL_PROPERTY_END_INDEX + 1; + dummyImpl.RegisterVisual( visualIndex, visual ); + + Animation anim = dummyImpl.CreateTransition( transition ); + DALI_TEST_CHECK( anim ); + + Renderer renderer = actor.GetRendererAt(0); + Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + Property::Index opacityIndex = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); + application.SendNotification(); + application.Render(0); + + DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 0.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty(Renderer::Property::BLEND_MODE), (int)BlendMode::ON, TEST_LOCATION ); + + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 0.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION ); anim.Play(); application.SendNotification(); + application.Render(500); // Start animation + application.Render(500); // Halfway thru anim + application.SendNotification(); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 0.5f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION ); + + application.Render(501); // End of anim + application.SendNotification(); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::AUTO, TEST_LOCATION ); + + END_TEST; +} + + +int UtcDaliTransitionDataMap6P(void) +{ + TestApplication application; + + tet_printf("Testing animation visual opacity using stylesheet equivalent maps\n"); + + Property::Map map; + map["target"] = "visual1"; + map["property"] = "opacity"; + map["targetValue"] = 0.0f; + map["animator"] = Property::Map() + .Add("alphaFunction", "EASE_IN_OUT") + .Add("timePeriod", Property::Map() + .Add("delay", 0.5f) + .Add("duration", 1.0f)); + + Dali::Toolkit::TransitionData transition = TransitionData::New( map ); + + DummyControl actor = DummyControl::New(); + actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); + actor.SetName("Actor1"); + actor.SetColor(Color::CYAN); + Stage::GetCurrent().Add(actor); + + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + + Property::Map visualMap; + visualMap[Visual::Property::TYPE] = Visual::COLOR; + visualMap[ColorVisual::Property::MIX_COLOR] = Color::MAGENTA; + Visual::Base visual = VisualFactory::Get().CreateVisual( visualMap ); + visual.SetName( "visual1" ); + + Property::Index visualIndex = Control::CONTROL_PROPERTY_END_INDEX + 1; + dummyImpl.RegisterVisual( visualIndex, visual ); + + Animation anim = dummyImpl.CreateTransition( transition ); + DALI_TEST_CHECK( anim ); + + Renderer renderer = actor.GetRendererAt(0); + Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + Property::Index opacityIndex = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); + application.SendNotification(); application.Render(0); + + DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); + + // Note, This should be testing for AUTO + // this is the same problem as C# target value being set before Play is called. + // @todo How was this solved? + DALI_TEST_EQUALS( renderer.GetProperty(Renderer::Property::BLEND_MODE), (int)BlendMode::ON, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION ); + + anim.Play(); + + application.SendNotification(); application.Render(500); // Start animation application.Render(500); // Halfway thru anim application.SendNotification(); - DALI_TEST_EQUALS( renderer.GetProperty(sizeIndex), Vector2(60.0f, 60.0f), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 0.5f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION ); application.Render(500); // End of anim application.SendNotification(); - DALI_TEST_EQUALS( renderer.GetProperty(sizeIndex), Vector2(110.0f, 110.0f), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 0.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION ); END_TEST; } @@ -506,8 +741,8 @@ int UtcDaliTransitionDataMapN3(void) Property::Map map; map["target"] = "visual1"; map["property"] = "mixColor"; - map["initialValue"] = Color::MAGENTA; - map["targetValue"] = Color::RED; + map["initialValue"] = Vector3(Color::MAGENTA); + map["targetValue"] = Vector3(Color::RED); map["animator"] = Property::Map() .Add("alphaFunction", "EASE_OUT_BACK") .Add("timePeriod", Property::Map() @@ -526,7 +761,7 @@ int UtcDaliTransitionDataMapN3(void) DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); Property::Map visualMap; visualMap[Visual::Property::TYPE] = Visual::COLOR; - visualMap[ColorVisual::Property::MIX_COLOR] = Color::MAGENTA; + visualMap[ColorVisual::Property::MIX_COLOR] = Vector3(Color::MAGENTA); Visual::Base visual = VisualFactory::Get().CreateVisual( visualMap ); visual.SetName( "visual1" ); @@ -548,8 +783,8 @@ int UtcDaliTransitionDataMapN4(void) Property::Map map; map["target"] = "visual1"; map["property"] = "mixColor"; - map["initialValue"] = Color::MAGENTA; - map["targetValue"] = Color::RED; + map["initialValue"] = Vector3(Color::MAGENTA); + map["targetValue"] = Vector3(Color::RED); map["animator"] = Property::Map() .Add("alphaFunction", Vector3(.1f,1.0f,0.5f)) .Add("timePeriod", Property::Map() @@ -583,9 +818,11 @@ int UtcDaliTransitionDataMapN4(void) Renderer renderer = actor.GetRendererAt(0); Property::Index mixColorIdx = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + Property::Index opacityIdx = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); tet_printf( "Test that the property has been set to target value\n"); - DALI_TEST_EQUALS(renderer.GetProperty(mixColorIdx), Color::RED, 0.001, TEST_LOCATION); + DALI_TEST_EQUALS(renderer.GetProperty(mixColorIdx), Vector3(Color::RED), 0.001, TEST_LOCATION); + DALI_TEST_EQUALS(renderer.GetProperty(opacityIdx), 1.0f, 0.001, TEST_LOCATION); END_TEST; } @@ -636,7 +873,7 @@ int UtcDaliTransitionDataMapN5(void) Property::Index mixColorIdx = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); tet_printf( "Test that the property has been set to target value\n"); - DALI_TEST_EQUALS(renderer.GetProperty(mixColorIdx), Color::RED, 0.001, TEST_LOCATION); + DALI_TEST_EQUALS(renderer.GetProperty(mixColorIdx), Vector3(Color::RED), 0.001, TEST_LOCATION); END_TEST; } @@ -685,9 +922,11 @@ int UtcDaliTransitionDataMapN6(void) Renderer renderer = actor.GetRendererAt(0); Property::Index mixColorIdx = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + Property::Index opacityIdx = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); tet_printf( "Test that the property has been set to target value\n"); - DALI_TEST_EQUALS(renderer.GetProperty(mixColorIdx), Color::RED, 0.001, TEST_LOCATION); + DALI_TEST_EQUALS(renderer.GetProperty(mixColorIdx), Vector3(Color::RED), 0.001, TEST_LOCATION); + DALI_TEST_EQUALS(renderer.GetProperty(opacityIdx), 1.0f, 0.001, TEST_LOCATION); END_TEST; } @@ -852,7 +1091,8 @@ int UtcDaliTransitionDataGetAnimatorP(void) Property::Map map8; map8["target"] = "Visual1"; - map8["property"] = "colorAlpha"; + map8["property"] = "opacity"; + map8["initialValue"] = 0.0f; map8["targetValue"] = 1.0f; map8["animator"] = Property::Map() .Add("alphaFunction", "EASE_IN")