X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-AnimatedVectorImageVisual.cpp;h=92cc20300da96b9ae730ac24feacc91aad084199;hb=3b147431173dca18392a6e9b724c50a54822004f;hp=f69ae926c482f824e2ec6fef30fe54ed35a63828;hpb=7b406456059abec8a9085c02814e3ea526fc525a;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/utc-Dali-AnimatedVectorImageVisual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-AnimatedVectorImageVisual.cpp index f69ae92..92cc203 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-AnimatedVectorImageVisual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-AnimatedVectorImageVisual.cpp @@ -34,6 +34,8 @@ #include #include #include + +#include #include #include @@ -86,8 +88,8 @@ int UtcDaliVisualFactoryGetAnimatedVectorImageVisual01(void) application.SendNotification(); application.Render(); - // Trigger count is 2 - load & render a frame - DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); + // Trigger count is 1 - render a frame + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); // renderer is added to actor DALI_TEST_CHECK(actor.GetRendererCount() == 1u); @@ -108,7 +110,8 @@ int UtcDaliVisualFactoryGetAnimatedVectorImageVisual02(void) Property::Map propertyMap; propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) - .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME); + .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -152,7 +155,8 @@ int UtcDaliVisualFactoryGetAnimatedVectorImageVisual03(void) .Add(DevelImageVisual::Property::LOOP_COUNT, 3) .Add(DevelImageVisual::Property::PLAY_RANGE, playRange) .Add(DevelVisual::Property::CORNER_RADIUS, 50.0f) - .Add(DevelVisual::Property::BORDERLINE_WIDTH, 20.0f); + .Add(DevelVisual::Property::BORDERLINE_WIDTH, 20.0f) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -186,6 +190,7 @@ int UtcDaliVisualFactoryGetAnimatedVectorImageVisual04(void) tet_infoline("UtcDaliVisualFactoryGetAnimatedVectorImageVisual04: Request animated vector image visual with a Property::Map"); int startFrame = 1, endFrame = 3; + int desiredWidth = 100, desiredHeight = 150; float cornerRadius = 22.0f; float borderlineWidth = 2.0f; Vector4 borderlineColor = Vector4(1.0f, 1.0f, 1.0f, 1.0f); @@ -205,7 +210,9 @@ int UtcDaliVisualFactoryGetAnimatedVectorImageVisual04(void) .Add("cornerRadius", cornerRadius) .Add("borderlineWidth", borderlineWidth) .Add("borderlineColor", borderlineColor) - .Add("borderlineOffset", borderlineOffset); + .Add("borderlineOffset", borderlineOffset) + .Add("desiredWidth", desiredWidth) + .Add("desiredHeight", desiredHeight); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -219,8 +226,8 @@ int UtcDaliVisualFactoryGetAnimatedVectorImageVisual04(void) application.SendNotification(); application.Render(); - // Trigger count is 2 - load & render a frame - DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); + // Trigger count is 1 - render a frame + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); // renderer is added to actor DALI_TEST_CHECK(actor.GetRendererCount() == 1u); @@ -281,6 +288,14 @@ int UtcDaliVisualFactoryGetAnimatedVectorImageVisual04(void) DALI_TEST_CHECK(value); DALI_TEST_EQUALS(value->Get(), borderlineOffset, TEST_LOCATION); + value = resultMap.Find(ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS(value->Get(), desiredWidth, TEST_LOCATION); + + value = resultMap.Find(ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS(value->Get(), desiredHeight, TEST_LOCATION); + actor.Unparent(); DALI_TEST_CHECK(actor.GetRendererCount() == 0u); @@ -293,6 +308,7 @@ int UtcDaliAnimatedVectorImageVisualGetPropertyMap01(void) tet_infoline("UtcDaliAnimatedVectorImageVisualGetPropertyMap01"); int startFrame = 1, endFrame = 3; + int desiredWidth = 100, desiredHeight = 150; Vector4 cornerRadius(50.0f, 22.0f, 0.0f, 3.0f); float borderlineWidth = 2.3f; Vector4 borderlineColor = Vector4(0.3f, 0.3f, 1.0f, 1.0f); @@ -310,7 +326,10 @@ int UtcDaliAnimatedVectorImageVisualGetPropertyMap01(void) .Add(DevelVisual::Property::CORNER_RADIUS_POLICY, Visual::Transform::Policy::RELATIVE) .Add(DevelVisual::Property::BORDERLINE_WIDTH, borderlineWidth) .Add(DevelVisual::Property::BORDERLINE_COLOR, borderlineColor) - .Add(DevelVisual::Property::BORDERLINE_OFFSET, borderlineOffset); + .Add(DevelVisual::Property::BORDERLINE_OFFSET, borderlineOffset) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false) + .Add(ImageVisual::Property::DESIRED_WIDTH, desiredWidth) + .Add(ImageVisual::Property::DESIRED_HEIGHT, desiredHeight); // request AnimatedVectorImageVisual with a property map VisualFactory factory = VisualFactory::Get(); @@ -391,6 +410,14 @@ int UtcDaliAnimatedVectorImageVisualGetPropertyMap01(void) DALI_TEST_CHECK(value); DALI_TEST_EQUALS(value->Get(), borderlineOffset, TEST_LOCATION); + value = resultMap.Find(ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS(value->Get(), desiredWidth, TEST_LOCATION); + + value = resultMap.Find(ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER); + DALI_TEST_CHECK(value); + DALI_TEST_EQUALS(value->Get(), desiredHeight, TEST_LOCATION); + // request AnimatedVectorImageVisual with an URL Visual::Base visual2 = factory.CreateVisual(TEST_VECTOR_IMAGE_FILE_NAME, ImageDimensions()); @@ -421,7 +448,8 @@ int UtcDaliAnimatedVectorImageVisualPlayback(void) Visual::Base visual = factory.CreateVisual( Property::Map() .Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) - .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME)); + .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false)); DummyControl dummyControl = DummyControl::New(true); Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); @@ -568,8 +596,8 @@ int UtcDaliAnimatedVectorImageVisualCustomShader(void) application.SendNotification(); application.Render(); - // Trigger count is 2 - load & render a frame - DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); + // Trigger count is 1 - render a frame + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); Renderer renderer = dummy.GetRendererAt(0); Shader shader2 = renderer.GetShader(); @@ -595,7 +623,11 @@ int UtcDaliAnimatedVectorImageVisualNaturalSize(void) tet_infoline("UtcDaliAnimatedVectorImageVisualNaturalSize"); VisualFactory factory = VisualFactory::Get(); - Visual::Base visual = factory.CreateVisual(TEST_VECTOR_IMAGE_FILE_NAME, ImageDimensions()); + Visual::Base visual = factory.CreateVisual( + Property::Map() + .Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) + .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false)); DALI_TEST_CHECK(visual); DummyControl actor = DummyControl::New(true); @@ -610,6 +642,9 @@ int UtcDaliAnimatedVectorImageVisualNaturalSize(void) application.SendNotification(); application.Render(); + // Trigger count is 1 - load + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + visual.GetNaturalSize(naturalSize); DALI_TEST_EQUALS(naturalSize, Vector2(100.0f, 100.0f), TEST_LOCATION); // 100x100 is the content default size. @@ -634,7 +669,8 @@ int UtcDaliAnimatedVectorImageVisualLoopCount(void) Property::Map propertyMap; propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) - .Add(DevelImageVisual::Property::LOOP_COUNT, 3); + .Add(DevelImageVisual::Property::LOOP_COUNT, 3) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -678,7 +714,8 @@ int UtcDaliAnimatedVectorImageVisualPlayRange(void) Property::Map propertyMap; propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) - .Add(DevelImageVisual::Property::PLAY_RANGE, array); + .Add(DevelImageVisual::Property::PLAY_RANGE, array) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -706,8 +743,9 @@ int UtcDaliAnimatedVectorImageVisualPlayRange(void) Renderer renderer = actor.GetRendererAt(0u); DALI_TEST_CHECK(renderer); - Property::Map map = actor.GetProperty(DummyControl::Property::TEST_VISUAL); - Property::Value* value = map.Find(DevelImageVisual::Property::PLAY_RANGE); + Property::Map map = actor.GetProperty(DummyControl::Property::TEST_VISUAL); + Property::Value* value = map.Find(DevelImageVisual::Property::PLAY_RANGE); + int totalFrameNumber = map.Find(DevelImageVisual::Property::TOTAL_FRAME_NUMBER)->Get(); int resultStartFrame, resultEndFrame; Property::Array* result = value->GetArray(); @@ -741,8 +779,8 @@ int UtcDaliAnimatedVectorImageVisualPlayRange(void) result->GetElementAt(0).Get(resultStartFrame); result->GetElementAt(1).Get(resultEndFrame); - DALI_TEST_EQUALS(startFrame, resultStartFrame, TEST_LOCATION); // Should not be changed - DALI_TEST_EQUALS(endFrame, resultEndFrame, TEST_LOCATION); + DALI_TEST_EQUALS(resultStartFrame, 1, TEST_LOCATION); + DALI_TEST_EQUALS(resultEndFrame, totalFrameNumber - 1, TEST_LOCATION); // Should be clamped DevelControl::DoAction(actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PAUSE, Property::Map()); @@ -800,13 +838,15 @@ int UtcDaliAnimatedVectorImageVisualPlayRangeMarker(void) ToolkitTestApplication application; tet_infoline("UtcDaliAnimatedVectorImageVisualPlayRangeMarker"); + // Set 1 marker as array Property::Array array; array.PushBack(VECTOR_ANIMATION_MARKER_NAME_1); Property::Map propertyMap; propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) - .Add(DevelImageVisual::Property::PLAY_RANGE, array); + .Add(DevelImageVisual::Property::PLAY_RANGE, array) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -845,6 +885,31 @@ int UtcDaliAnimatedVectorImageVisualPlayRangeMarker(void) DALI_TEST_EQUALS(VECTOR_ANIMATION_MARKER_START_FRAME_1, resultStartFrame, TEST_LOCATION); DALI_TEST_EQUALS(VECTOR_ANIMATION_MARKER_END_FRAME_1, resultEndFrame, TEST_LOCATION); + // Set 1 marker as string + array.Clear(); + + attributes.Clear(); + attributes.Add(DevelImageVisual::Property::PLAY_RANGE, VECTOR_ANIMATION_MARKER_NAME_1); + DevelControl::DoAction(actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelVisual::Action::UPDATE_PROPERTY, attributes); + + // To make event trigger + actor.SetProperty(Actor::Property::SIZE, Vector2(40.0f, 40.0f)); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + + map = actor.GetProperty(DummyControl::Property::TEST_VISUAL); + value = map.Find(DevelImageVisual::Property::PLAY_RANGE); + + result = value->GetArray(); + result->GetElementAt(0).Get(resultStartFrame); + result->GetElementAt(1).Get(resultEndFrame); + + DALI_TEST_EQUALS(VECTOR_ANIMATION_MARKER_START_FRAME_1, resultStartFrame, TEST_LOCATION); + DALI_TEST_EQUALS(VECTOR_ANIMATION_MARKER_END_FRAME_1, resultEndFrame, TEST_LOCATION); + // Set 2 markers array.Clear(); array.PushBack(VECTOR_ANIMATION_MARKER_NAME_1); @@ -932,8 +997,8 @@ int UtcDaliAnimatedVectorImageVisualAnimationFinishedSignal(void) application.SendNotification(); application.Render(); - // Wait for animation finish - load, render, finish - DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(3), true, TEST_LOCATION); + // Wait for animation finish - render, finish + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); Property::Map map = actor.GetProperty(DummyControl::Property::TEST_VISUAL); Property::Value* value = map.Find(DevelImageVisual::Property::PLAY_STATE); @@ -952,7 +1017,8 @@ int UtcDaliAnimatedVectorImageVisualJumpTo(void) Property::Map propertyMap; propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) - .Add(DevelImageVisual::Property::LOOP_COUNT, 3); + .Add(DevelImageVisual::Property::LOOP_COUNT, 3) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -1084,7 +1150,8 @@ int UtcDaliAnimatedVectorImageVisualUpdateProperty(void) propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) .Add(DevelImageVisual::Property::LOOP_COUNT, 3) - .Add(DevelImageVisual::Property::PLAY_RANGE, playRange); + .Add(DevelImageVisual::Property::PLAY_RANGE, playRange) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -1203,7 +1270,8 @@ int UtcDaliAnimatedVectorImageVisualStopBehavior(void) propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) .Add(DevelImageVisual::Property::LOOP_COUNT, 3) - .Add(DevelImageVisual::Property::STOP_BEHAVIOR, DevelImageVisual::StopBehavior::FIRST_FRAME); + .Add(DevelImageVisual::Property::STOP_BEHAVIOR, DevelImageVisual::StopBehavior::FIRST_FRAME) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -1311,7 +1379,8 @@ int UtcDaliAnimatedVectorImageVisualLoopingMode(void) .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) .Add(DevelImageVisual::Property::LOOP_COUNT, 3) .Add(DevelImageVisual::Property::STOP_BEHAVIOR, DevelImageVisual::StopBehavior::LAST_FRAME) - .Add(DevelImageVisual::Property::LOOPING_MODE, DevelImageVisual::LoopingMode::AUTO_REVERSE); + .Add(DevelImageVisual::Property::LOOPING_MODE, DevelImageVisual::LoopingMode::AUTO_REVERSE) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -1402,8 +1471,8 @@ int UtcDaliAnimatedVectorImageVisualPropertyNotification(void) application.SendNotification(); application.Render(); - // Trigger count is 2 - load & render a frame - DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); + // Trigger count is 1 - render a frame + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0u); DALI_TEST_CHECK(renderer); @@ -1482,7 +1551,8 @@ int UtcDaliAnimatedVectorImageVisualMultipleInstances(void) Property::Map propertyMap; propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) - .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME); + .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual1 = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual1); @@ -1498,7 +1568,8 @@ int UtcDaliAnimatedVectorImageVisualMultipleInstances(void) propertyMap.Clear(); propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) - .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME); + .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual2 = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual2); @@ -1511,6 +1582,9 @@ int UtcDaliAnimatedVectorImageVisualMultipleInstances(void) application.GetScene().Add(actor2); + application.SendNotification(); + application.Render(); + // Trigger count is 4 - load & render a frame for each instance DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(4), true, TEST_LOCATION); @@ -1552,7 +1626,8 @@ int UtcDaliAnimatedVectorImageVisualControlVisibilityChanged(void) Property::Map propertyMap; propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) - .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME); + .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -1619,8 +1694,8 @@ int UtcDaliAnimatedVectorImageVisualWindowVisibilityChanged(void) application.SendNotification(); application.Render(); - // Trigger count is 2 - load & render a frame - DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); + // Trigger count is 1 - render a frame + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); Property::Map attributes; DevelControl::DoAction(actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes); @@ -1657,7 +1732,8 @@ int UtcDaliAnimatedVectorImageVisualInvalidFile01(void) Property::Map propertyMap; propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) - .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_INVALID_FILE_NAME); + .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_INVALID_FILE_NAME) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -1715,9 +1791,6 @@ int UtcDaliAnimatedVectorImageVisualInvalidFile02(void) application.SendNotification(); application.Render(); - // Trigger count is 1 - load - DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); - // Add to the Scene after loading application.GetScene().Add(actor); @@ -1746,7 +1819,8 @@ int UtcDaliAnimatedVectorImageVisualInvalidFile03(void) Property::Map propertyMap; propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) - .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_INVALID_FILE_NAME); + .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_INVALID_FILE_NAME) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -1784,7 +1858,8 @@ int UtcDaliAnimatedVectorImageVisualFrameDrops(void) Property::Map propertyMap; propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) - .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME_FRAME_DROP); + .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME_FRAME_DROP) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); DALI_TEST_CHECK(visual); @@ -1798,6 +1873,12 @@ int UtcDaliAnimatedVectorImageVisualFrameDrops(void) application.GetScene().Add(actor); + application.SendNotification(); + application.Render(); + + // Trigger count is 2 - load, render the first frame + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); + Property::Map map = actor.GetProperty(DummyControl::Property::TEST_VISUAL); Property::Value* value = map.Find(DevelImageVisual::Property::TOTAL_FRAME_NUMBER); int totalFrameNumber = value->Get(); @@ -1811,8 +1892,8 @@ int UtcDaliAnimatedVectorImageVisualFrameDrops(void) application.SendNotification(); application.Render(); - // Trigger count is 3 - load, render the first frame & calculating frame drops - DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(3), true, TEST_LOCATION); + // Trigger count is 1 - calculating frame drops + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); // Check dropped frame uint32_t frames = Test::VectorAnimationRenderer::GetDroppedFrames(); @@ -1841,9 +1922,10 @@ int UtcDaliAnimatedVectorImageVisualSize(void) application.GetScene().Add(actor); application.SendNotification(); + application.Render(); - // Trigger count is 2 - load, resource ready - DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); + // Trigger count is 1 - resource ready + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); textureTrace.Enable(true); @@ -1879,3 +1961,135 @@ int UtcDaliAnimatedVectorImageVisualSize(void) END_TEST; } + +namespace +{ +bool gDynamicPropertyCallbackFired = false; + +Property::Value FillColorCallback(int32_t id, VectorAnimationRenderer::VectorProperty property, uint32_t frameNumber) +{ + gDynamicPropertyCallbackFired = true; + + if(frameNumber < 3) + { + return Vector3(0, 0, 1); + } + else + { + return Vector3(1, 0, 0); + } +} +} // namespace + +int UtcDaliAnimatedVectorImageVisualDynamicProperty(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliAnimatedVectorImageVisualDynamicProperty"); + + VisualFactory factory = VisualFactory::Get(); + Visual::Base visual = factory.CreateVisual( + Property::Map() + .Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) + .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false)); + DALI_TEST_CHECK(visual); + + DummyControl actor = DummyControl::New(true); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual); + + Vector2 controlSize(20.f, 30.f); + actor.SetProperty(Actor::Property::SIZE, controlSize); + + application.GetScene().Add(actor); + + gDynamicPropertyCallbackFired = false; + + // Set dynamic property + DevelAnimatedVectorImageVisual::DynamicPropertyInfo info; + info.id = 1; + info.keyPath = "Test.Path"; + info.property = static_cast(VectorAnimationRenderer::VectorProperty::FILL_COLOR); + info.callback = MakeCallback(FillColorCallback); + + DevelControl::DoActionExtension(actor, DummyControl::Property::TEST_VISUAL, DevelAnimatedVectorImageVisual::Action::SET_DYNAMIC_PROPERTY, Any(info)); + + Property::Map attributes; + DevelControl::DoAction(actor, DummyControl::Property::TEST_VISUAL, Dali::Toolkit::DevelAnimatedVectorImageVisual::Action::PLAY, attributes); + + application.SendNotification(); + application.Render(); + + // Trigger count is 2 - load & render a frame + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); + + // Test whether the property callback is called + DALI_TEST_EQUALS(gDynamicPropertyCallbackFired, true, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliAnimatedVectorImageVisualDesiredSize(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliAnimatedVectorImageVisualDesiredSize"); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + int desiredWidth = 150, desiredHeight = 200; + + Visual::Base visual = VisualFactory::Get().CreateVisual(TEST_VECTOR_IMAGE_FILE_NAME, ImageDimensions(desiredWidth, desiredHeight)); + DALI_TEST_CHECK(visual); + + DummyControl actor = DummyControl::New(true); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual); + + application.GetScene().Add(actor); + + application.SendNotification(); + application.Render(); + + // Trigger count is 1 - resource ready + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + + textureTrace.Enable(true); + + application.SendNotification(); + application.Render(); + + { + std::stringstream out; + out << GL_TEXTURE_2D << ", " << 0u << ", " << desiredWidth << ", " << desiredHeight; + DALI_TEST_CHECK(textureTrace.FindMethodAndParams("TexImage2D", out.str().c_str())); + } + + // Unparent to make next trigger + actor.Unparent(); + + application.SendNotification(); + application.Render(); + + // Set visual size + actor.SetProperty(Actor::Property::SIZE, Vector2(300.0f, 300.0f)); + application.GetScene().Add(actor); + + application.SendNotification(); + application.Render(); + + // Trigger count is 1 - resource ready + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + + textureTrace.Reset(); + + application.SendNotification(); + application.Render(); + + { + std::stringstream out; + out << GL_TEXTURE_2D << ", " << 0u << ", " << desiredWidth << ", " << desiredHeight; + DALI_TEST_CHECK(textureTrace.FindMethodAndParams("TexImage2D", out.str().c_str())); // The size should not be changed + } + + END_TEST; +}