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=de4c4ddec0d7ed74ac0587541508cf3792417f8f;hp=7f3d8aafc2c6867b05df3b8a975179b7fde69333;hb=5a2a5883422f4d114902ac57d57d7d1e973fbb2e;hpb=f7ca0a1c753ea498df357add70b5c7a9bad4ea91 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TransitionData.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TransitionData.cpp index 7f3d8aa..de4c4dd 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TransitionData.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TransitionData.cpp @@ -18,9 +18,11 @@ #include #include #include +#include #include #include #include +#include #include "dummy-control.h" using namespace Dali; @@ -53,6 +55,38 @@ Property::Map CreateMap() return map; } +void CHECK_ARRAY_EQUALS( Property::Array test, Property::Value result ) +{ + if( result.GetType() == Property::ARRAY ) + { + // Compare arrays + Property::Array *resultArray = result.GetArray(); + DALI_TEST_EQUALS( test.Count(), resultArray->Count(), TEST_LOCATION ); + for( size_t i=0; i < std::min(test.Count(), resultArray->Count()); ++i ) + { + Property::Value a = test.GetElementAt(i); + Property::Value b = resultArray->GetElementAt(i); + DALI_TEST_EQUALS( a.GetType(), b.GetType(), TEST_LOCATION ); + DALI_TEST_EQUALS( a, b, 0.001, TEST_LOCATION ); + } + } + else if( result.GetType() == Property::VECTOR4 ) + { + Vector4 value = result.Get(); + DALI_TEST_CHECK( test.Count() >= 4 ); + for( size_t i=0; i < 4; ++i ) + { + Property::Value a = test.GetElementAt(i); + DALI_TEST_EQUALS( a.GetType(), Property::FLOAT, TEST_LOCATION ); + DALI_TEST_EQUALS( a.Get(), value[i], 0.001, TEST_LOCATION ); + } + } + else + { + DALI_TEST_CHECK( 0 ); + } +} + void CHECK_MAP_EQUALS( Property::Map test, Property::Map result ) { DALI_TEST_EQUALS(test.Count(), result.Count(), TEST_LOCATION); @@ -74,22 +108,25 @@ void CHECK_MAP_EQUALS( Property::Map test, Property::Map result ) DALI_TEST_CHECK( value != NULL ); if( value != NULL ) { - DALI_TEST_EQUALS( keyValue.second.GetType(), value->GetType(), TEST_LOCATION ); if( keyValue.second.GetType() == Property::MAP ) { + DALI_TEST_EQUALS( keyValue.second.GetType(), value->GetType(), TEST_LOCATION ); CHECK_MAP_EQUALS( *(keyValue.second.GetMap()), *(value->GetMap()) ); } else if( keyValue.second.GetType() == Property::ARRAY ) { + CHECK_ARRAY_EQUALS( *(keyValue.second.GetArray()), *value ); } else if( keyValue.second.GetType() == Property::STRING ) { + DALI_TEST_EQUALS( keyValue.second.GetType(), value->GetType(), TEST_LOCATION ); std::string str; value->Get(str); DALI_TEST_EQUALS( keyValue.second, str.c_str(), TEST_LOCATION ); } else { + DALI_TEST_EQUALS( keyValue.second.GetType(), value->GetType(), TEST_LOCATION ); DALI_TEST_EQUALS( keyValue.second, *value, 0.001f, TEST_LOCATION ); } } @@ -211,34 +248,39 @@ int UtcDaliTransitionDataMap1P(void) visual.SetName( "visual1" ); Property::Index visualIndex = Control::CONTROL_PROPERTY_END_INDEX + 1; - dummyImpl.RegisterVisual( visualIndex, actor, visual ); + dummyImpl.RegisterVisual( visualIndex, visual ); Animation anim = dummyImpl.CreateTransition( transition ); DALI_TEST_CHECK( anim ); Renderer renderer = actor.GetRendererAt(0); - Property::Index mixColorIndex = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR ); + Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + Property::Index opacityIndex = DevelHandle::GetPropertyIndex( renderer, DevelVisual::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.GetProperty(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.GetProperty(mixColorIndex), (Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetProperty(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.GetProperty(mixColorIndex), Vector3(Color::RED), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION ); END_TEST; } + + int UtcDaliTransitionDataMap2P(void) { TestApplication application; @@ -247,7 +289,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; @@ -274,17 +315,19 @@ int UtcDaliTransitionDataMap2P(void) visual.SetName( "visual1" ); Property::Index visualIndex = Control::CONTROL_PROPERTY_END_INDEX + 1; - dummyImpl.RegisterVisual( visualIndex, actor, visual ); + dummyImpl.RegisterVisual( visualIndex, visual ); Animation anim = dummyImpl.CreateTransition( transition ); DALI_TEST_CHECK( anim ); Renderer renderer = actor.GetRendererAt(0); - Property::Index mixColorIndex = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR ); + Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + Property::Index opacityIndex = DevelHandle::GetPropertyIndex( renderer, DevelVisual::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.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION); anim.Play(); @@ -293,28 +336,228 @@ 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.GetProperty(mixColorIndex), Vector3(Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetProperty(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.GetProperty(mixColorIndex), Vector3(Color::RED), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION); END_TEST; } -int UtcDaliTransitionDataMapP3(void) +int UtcDaliTransitionDataMap2Pb(void) { TestApplication application; - tet_printf("Testing animation of a visual's placement actor property\n"); + tet_printf("Testing animation of a visual property using programmatic maps\n"); Property::Map map; map["target"] = "visual1"; - map["property"] = "color"; + 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, DevelVisual::Property::OPACITY ); + application.SendNotification(); + application.Render(0); + + DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetProperty(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.GetProperty(mixColorIndex), Vector3(Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION); + + application.Render(500); // End of anim + application.SendNotification(); + DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::RED), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION); + + END_TEST; +} + + +int UtcDaliTransitionDataMap3P(void) +{ + TestApplication application; + + tet_printf("Testing animation of an actor's position property using bezier curve\n"); + + Property::Map map; + map["target"] = "Actor1"; + map["property"] = "position"; + map["initialValue"] = Vector3(0, 0, 0); + map["targetValue"] = Vector3(100, 100, 0); + map["animator"] = Property::Map() + .Add("alphaFunction", Vector4(0.71, -0.57, 0.42, 1.38) ) + .Add("timePeriod", Property::Map() + .Add("delay", 0.0f) + .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"); + Stage::GetCurrent().Add(actor); + + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + Animation anim = dummyImpl.CreateTransition( transition ); + DALI_TEST_CHECK( anim ); + + application.SendNotification(); + application.Render(0); + DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(0,0,0), 0.001f, TEST_LOCATION); + + anim.Play(); + + application.SendNotification(); + application.Render(0); + + application.Render(250); // 25% + application.SendNotification(); + DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(-10,-10,0), 1.0, TEST_LOCATION); // High epsilon as we don't have exact figure for bezier curve at 50% + + application.Render(250); // Halfway thru map1 anim + application.SendNotification(); + DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(24,24,0), 1.0, TEST_LOCATION); // High epsilon as we don't have exact figure for bezier curve at 50% + + application.Render(250); // End of map1 anim + application.SendNotification(); + DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(100,100,0), 1.0, TEST_LOCATION); // High epsilon as we don't have exact figure for bezier curve + + application.Render(250); // End of map1 anim + application.SendNotification(); + DALI_TEST_EQUALS( actor.GetCurrentPosition(), Vector3(100,100,0), TEST_LOCATION ); + END_TEST; +} + + +int UtcDaliTransitionDataMap4P(void) +{ + TestApplication application; + + tet_printf("Testing animation of a visual's transform property using programmatic maps\n"); + + Property::Map map1; + map1["target"] = "testVisual"; + map1["property"] = "offset"; + map1["initialValue"] = Vector2(0.0f, 0.0f); + map1["targetValue"] = Vector2(100.0f, 100.0f); + map1["animator"] = Property::Map() + .Add("alphaFunction", "LINEAR") + .Add("timePeriod", Property::Map() + .Add("delay", 0.5f) + .Add("duration", 1.0f)); + + Property::Map map2; + map2["target"] = "testVisual"; + map2["property"] = "size"; + map2["initialValue"] = Vector2(10.0f, 10.0f); + map2["targetValue"] = Vector2(110.0f, 110.0f); + map2["animator"] = Property::Map() + .Add("alphaFunction", "LINEAR") + .Add("timePeriod", Property::Map() + .Add("delay", 0.5f) + .Add("duration", 1.0f)); + + Dali::Toolkit::TransitionData transition = TransitionData::New( Property::Array().Add(map1).Add(map2) ); + + DummyControl actor = DummyControl::New(); + actor.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); + actor.SetName("Actor1"); + 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( "testVisual" ); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + Animation anim = dummyImpl.CreateTransition( transition ); + DALI_TEST_CHECK( anim ); + + Renderer renderer = actor.GetRendererAt(0); + Property::Index sizeIndex = renderer.GetPropertyIndex( "size" ); + application.SendNotification(); + application.Render(0); + + DALI_TEST_EQUALS( renderer.GetProperty(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.GetProperty(sizeIndex), Vector2(60.0f, 60.0f), TEST_LOCATION); + + application.Render(500); // End of anim + application.SendNotification(); + DALI_TEST_EQUALS( renderer.GetProperty(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) @@ -337,30 +580,113 @@ int UtcDaliTransitionDataMapP3(void) visual.SetName( "visual1" ); Property::Index visualIndex = Control::CONTROL_PROPERTY_END_INDEX + 1; - dummyImpl.RegisterVisual( visualIndex, actor, visual ); + 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, DevelVisual::Property::OPACITY ); application.SendNotification(); application.Render(0); - DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::MAGENTA, TEST_LOCATION); + + 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 ); anim.Play(); application.SendNotification(); + application.Render(500); // Start animation + application.Render(500); // Halfway thru anim + application.SendNotification(); + DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 0.5f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty(Renderer::Property::BLEND_MODE), (int)BlendMode::ON, TEST_LOCATION ); + + application.Render(501); // End of anim + application.SendNotification(); + DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty(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, DevelVisual::Property::OPACITY ); + application.SendNotification(); application.Render(0); - application.Render(500); - application.Render(500); // Halfway thru map1 anim + + DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetProperty(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 ); + + anim.Play(); + application.SendNotification(); - DALI_TEST_EQUALS( actor.GetCurrentColor(), (Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); + application.Render(500); // Start animation + application.Render(500); // Halfway thru anim + application.SendNotification(); + DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 0.5f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty(Renderer::Property::BLEND_MODE), (int)BlendMode::ON, TEST_LOCATION ); - application.Render(500); // End of map1 anim + application.Render(500); // End of anim application.SendNotification(); - DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::RED, TEST_LOCATION ); + 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 ); + END_TEST; } + int UtcDaliTransitionDataMap1N(void) { TestApplication application; @@ -402,8 +728,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() @@ -422,18 +748,177 @@ int UtcDaliTransitionDataMapN3(void) DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); Property::Map visualMap; visualMap[Visual::Property::TYPE] = Visual::COLOR; + visualMap[ColorVisual::Property::MIX_COLOR] = Vector3(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 ); + END_TEST; +} + + +int UtcDaliTransitionDataMapN4(void) +{ + TestApplication application; + + tet_printf("Testing visual doesn't animate with duff bezier data \n"); + + Property::Map map; + map["target"] = "visual1"; + map["property"] = "mixColor"; + 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() + .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 ); + + application.SendNotification(); + application.Render(0); + application.SendNotification(); + + Renderer renderer = actor.GetRendererAt(0); + Property::Index mixColorIdx = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + Property::Index opacityIdx = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::OPACITY ); + + tet_printf( "Test that the property has been set to target value\n"); + 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; +} + +int UtcDaliTransitionDataMapN5(void) +{ + TestApplication application; + + tet_printf("Testing visual doesn't animate with duff bezier data \n"); + + Property::Map map; + map["target"] = "visual1"; + map["property"] = "mixColor"; + map["initialValue"] = Color::MAGENTA; + map["targetValue"] = Color::RED; + map["animator"] = Property::Map() + .Add("alphaFunction", Property::Array().Add(.1f).Add(1.0f).Add(0.5f)) + .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 ); + + application.SendNotification(); + application.Render(0); + application.SendNotification(); + + Renderer renderer = actor.GetRendererAt(0); + 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), Vector3(Color::RED), 0.001, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliTransitionDataMapN6(void) +{ + TestApplication application; + + tet_printf("Testing visual doesn't animate with duff bezier data \n"); + + Property::Map map; + map["target"] = "visual1"; + map["property"] = "mixColor"; + map["initialValue"] = Color::MAGENTA; + map["targetValue"] = Color::RED; + map["animator"] = Property::Map() + .Add("alphaFunction", Property::Array().Add("1").Add("Two").Add("3").Add("4")) + .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, actor, visual ); + dummyImpl.RegisterVisual( visualIndex, visual ); Animation anim = dummyImpl.CreateTransition( transition ); DALI_TEST_CHECK( !anim ); + + application.SendNotification(); + application.Render(0); + application.SendNotification(); + + Renderer renderer = actor.GetRendererAt(0); + Property::Index mixColorIdx = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + Property::Index opacityIdx = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::OPACITY ); + + tet_printf( "Test that the property has been set to target value\n"); + 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; } + int UtcDaliTransitionDataArrayP(void) { TestApplication application; @@ -593,7 +1078,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") @@ -613,9 +1099,31 @@ int UtcDaliTransitionDataGetAnimatorP(void) .Add("duration", 1.0f)); Property::Map map10; - map10["target"] = "Actor1"; - map10["property"] = "orientation"; - map10["targetValue"] = Quaternion( Radian(Math::PI_2), Vector3::ZAXIS ); + map10["target"] = "Actor2"; + map10["property"] = "scale"; + map10["initialValue"] = Vector3(0,0,0); + map10["targetValue"] = Vector3(1,1,1); + map10["animator"] = Property::Map() + .Add("alphaFunction", Vector4(.23,.4,.8,1.2)) + .Add("timePeriod", Property::Map() + .Add("delay", 0.0f) + .Add("duration", 1.0f)); + + Property::Map map11; + map11["target"] = "Actor2"; + map11["property"] = "scale"; + map11["initialValue"] = Vector3(0,0,0); + map11["targetValue"] = Vector3(1,1,1); + map11["animator"] = Property::Map() + .Add("alphaFunction", Property::Array().Add(.23f).Add(.4f).Add(.8f).Add(.2f)) + .Add("timePeriod", Property::Map() + .Add("delay", 0.0f) + .Add("duration", 1.0f)); + + Property::Map map12; + map12["target"] = "Actor1"; + map12["property"] = "orientation"; + map12["targetValue"] = Quaternion( Radian(Math::PI_2), Vector3::ZAXIS ); Property::Array array; array.PushBack(map1); @@ -628,6 +1136,8 @@ int UtcDaliTransitionDataGetAnimatorP(void) array.PushBack(map8); array.PushBack(map9); array.PushBack(map10); + array.PushBack(map11); + array.PushBack(map12); Dali::Toolkit::TransitionData transition = TransitionData::New( array );