X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit-internal%2Futc-Dali-Visuals-internal.cpp;h=7b0e2f85e0df67276ee792856a8713bab4759bbd;hp=13464d39b7cdad2f28c89c5be5b6e4ebbda54697;hb=HEAD;hpb=26a3b93400d9b9de81db36cbe4cea39f51940d10 diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Visuals-internal.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Visuals-internal.cpp index 13464d3..77b2d14 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Visuals-internal.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Visuals-internal.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -21,58 +21,61 @@ #include #include -#include #include +#include + #include -#include +#include #include -#include +#include +#include + #include <../dali-toolkit/dali-toolkit-test-utils/dummy-control.h> -#include +#include using namespace Dali; using namespace Toolkit; namespace { +const char* TEST_VECTOR_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/insta_camera.json"; +const char* TEST_GIF_FILE_NAME = TEST_RESOURCE_DIR "/anim.gif"; -const char* TEST_VECTOR_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/insta_camera.json"; - -} +} // namespace int UtcDaliVisualAction(void) { ToolkitTestApplication application; - tet_infoline( "Register an ImageVisual and and perform an Action on Visual directly" ); - Vector2 controlSize( 20.f, 30.f ); + tet_infoline("Register an ImageVisual and and perform an Action on Visual directly"); + Vector2 controlSize(20.f, 30.f); //Created DummyVisual - Property::Map settings; - Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings ); + Property::Map settings; + Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New(settings); - DummyControl dummyControl = DummyControl::New( true ); - Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); - tet_infoline( "Register visual and stage control" ); + tet_infoline("Register visual and stage control"); - Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( dummyVisualPtr.Get() ); - dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle ); - dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); - application.GetScene().Add( dummyControl ); + Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base(dummyVisualPtr.Get()); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visualBaseHandle); + dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); + application.GetScene().Add(dummyControl); application.SendNotification(); application.Render(); - tet_infoline( "Check action counter is 0 before DoAction" ); - DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION ); + tet_infoline("Check action counter is 0 before DoAction"); + DALI_TEST_EQUALS(dummyVisualPtr->GetActionCounter(), 0, TEST_LOCATION); - tet_infoline( "Perform TEST_ACTION action on Visual. Should increase the action counter" ); + tet_infoline("Perform TEST_ACTION action on Visual. Should increase the action counter"); - Property::Map attributes; - Toolkit::Internal::Visual::Base& internalVisualBase = GetImplementation( visualBaseHandle ); - internalVisualBase.DoAction( Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes ); + Property::Map attributes; + Toolkit::Internal::Visual::Base& internalVisualBase = GetImplementation(visualBaseHandle); + internalVisualBase.DoAction(Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes); application.SendNotification(); - DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 1, TEST_LOCATION ); + DALI_TEST_EQUALS(dummyVisualPtr->GetActionCounter(), 1, TEST_LOCATION); END_TEST; } @@ -80,39 +83,39 @@ int UtcDaliVisualAction(void) int UtcDaliVisualActionNotImplemented(void) { ToolkitTestApplication application; - tet_infoline( "Register an ImageVisual and and perform an Action on a Visual which does not support any Actions" ); - Vector2 controlSize( 20.f, 30.f ); + tet_infoline("Register an ImageVisual and and perform an Action on a Visual which does not support any Actions"); + Vector2 controlSize(20.f, 30.f); //Created DummyVisual - Property::Map settings; - Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New( settings ); + Property::Map settings; + Toolkit::Internal::DummyVisualPtr dummyVisualPtr = Toolkit::Internal::DummyVisual::New(settings); - DummyControl dummyControl = DummyControl::New( true ); - Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); - tet_infoline( "Register visual and stage control" ); + tet_infoline("Register visual and stage control"); VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; - propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR); - propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); - Visual::Base visual = factory.CreateVisual( propertyMap ); + propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR); + propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); + Visual::Base visual = factory.CreateVisual(propertyMap); - dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); - application.GetScene().Add( dummyControl ); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual); + dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); + application.GetScene().Add(dummyControl); application.SendNotification(); application.Render(); - tet_infoline( "Check action counter is 0 before DoAction" ); - DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION ); + tet_infoline("Check action counter is 0 before DoAction"); + DALI_TEST_EQUALS(dummyVisualPtr->GetActionCounter(), 0, TEST_LOCATION); - tet_infoline( "Perform TEST_ACTION action on Color Visual which does not support it.. Should not increment the action counter" ); + tet_infoline("Perform TEST_ACTION action on Color Visual which does not support it.. Should not increment the action counter"); Property::Map attributes; - GetImplementation( visual ).DoAction( Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes ); + GetImplementation(visual).DoAction(Dali::Toolkit::Internal::DummyVisual::TEST_ACTION, attributes); application.SendNotification(); - DALI_TEST_EQUALS( dummyVisualPtr->GetActionCounter() , 0, TEST_LOCATION ); + DALI_TEST_EQUALS(dummyVisualPtr->GetActionCounter(), 0, TEST_LOCATION); END_TEST; } @@ -120,40 +123,40 @@ int UtcDaliVisualActionNotImplemented(void) int UtcDaliVisualSetProperties(void) { ToolkitTestApplication application; - tet_infoline( "Register a visual and SetProperties" ); + tet_infoline("Register a visual and SetProperties"); Toolkit::Internal::VisualFactoryCache* factoryCache = new Toolkit::Internal::VisualFactoryCache(false); //Created ColorVisual Property::Map propertyMap1; - propertyMap1.Insert(Visual::Property::TYPE, Visual::COLOR); - propertyMap1.Insert(ColorVisual::Property::MIX_COLOR, Color::RED); - Toolkit::Internal::ColorVisualPtr colorVisualPtr = Toolkit::Internal::ColorVisual::New( *factoryCache, propertyMap1 ); + propertyMap1.Insert(Visual::Property::TYPE, Visual::COLOR); + propertyMap1.Insert(ColorVisual::Property::MIX_COLOR, Color::RED); + Toolkit::Internal::ColorVisualPtr colorVisualPtr = Toolkit::Internal::ColorVisual::New(*factoryCache, propertyMap1); - DummyControl dummyControl = DummyControl::New( true ); - Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummyControl.GetImplementation() ); + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); - Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( colorVisualPtr.Get() ); - dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle ); - dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); - application.GetScene().Add( dummyControl ); + Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base(colorVisualPtr.Get()); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visualBaseHandle); + dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); + application.GetScene().Add(dummyControl); application.SendNotification(); application.Render(); Property::Map propertyMap; - propertyMap.Insert( Visual::Property::MIX_COLOR, Color::BLUE ); + propertyMap.Insert(Visual::Property::MIX_COLOR, Color::BLUE); - colorVisualPtr->SetProperties( propertyMap ); + colorVisualPtr->SetProperties(propertyMap); application.SendNotification(); application.Render(); Property::Map resultMap; - visualBaseHandle.CreatePropertyMap( resultMap ); + visualBaseHandle.CreatePropertyMap(resultMap); - Property::Value* colorValue = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 ); - DALI_TEST_CHECK( colorValue ); - DALI_TEST_CHECK( colorValue->Get< Vector4 >() == Color::BLUE ); + Property::Value* colorValue = resultMap.Find(Visual::Property::MIX_COLOR, Property::VECTOR4); + DALI_TEST_CHECK(colorValue); + DALI_TEST_CHECK(colorValue->Get() == Color::BLUE); delete factoryCache; @@ -163,70 +166,111 @@ int UtcDaliVisualSetProperties(void) int UtcDaliAnimatedVectorImageVisualCreateInstancePropertyMap(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliAnimatedVectorImageVisualCreateInstancePropertyMap" ); + tet_infoline("UtcDaliAnimatedVectorImageVisualCreateInstancePropertyMap"); Property::Map propertyMap; - propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE ) - .Add( ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME ); + propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE) + .Add(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME); // request AnimatedVectorImageVisual with a property map - VisualFactory factory = VisualFactory::Get(); - Visual::Base visual = factory.CreateVisual( propertyMap ); - Toolkit::Internal::Visual::Base& visualImpl = GetImplementation( visual ); + VisualFactory factory = VisualFactory::Get(); + Visual::Base visual = factory.CreateVisual(propertyMap); + Toolkit::Internal::Visual::Base& visualImpl = GetImplementation(visual); Property::Map resultMap; - visualImpl.CreateInstancePropertyMap( resultMap ); + visualImpl.CreateInstancePropertyMap(resultMap); // check the property values from the returned map from a visual - DALI_TEST_CHECK( resultMap.Empty() ); // Now the map is empty + DALI_TEST_CHECK(resultMap.Empty()); // Now the map is empty END_TEST; } -int UtcDaliAnimatedVectorImageVisualSetProperties(void) +int UtcDaliAnimatedImageVisualCreateInstancePropertyMap(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliAnimatedVectorImageVisualSetProperties" ); + tet_infoline("UtcDaliAnimatedImageVisualCreateInstancePropertyMap"); 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::PLAY_RANGE, Vector2( 0.2f, 0.8f ) ); + propertyMap.Add(Toolkit::Visual::Property::TYPE, Visual::ANIMATED_IMAGE) + .Add(ImageVisual::Property::URL, TEST_GIF_FILE_NAME) + .Add(ImageVisual::Property::DESIRED_WIDTH, 10) + .Add(ImageVisual::Property::DESIRED_HEIGHT, 12); + + // request AnimatedVectorImageVisual with a property map + VisualFactory factory = VisualFactory::Get(); + Visual::Base visual = factory.CreateVisual(propertyMap); + Toolkit::Internal::Visual::Base& visualImpl = GetImplementation(visual); + + Property::Map resultMap; + visualImpl.CreateInstancePropertyMap(resultMap); + + // check the property values from the returned map from a visual + DALI_TEST_EQUALS(resultMap.Count(), 3u, TEST_LOCATION); + + Property::Value* value = resultMap.Find(Toolkit::Visual::Property::TYPE, Property::INTEGER); + DALI_TEST_CHECK(value); + DALI_TEST_CHECK(value->Get() == Visual::ANIMATED_IMAGE); + + value = resultMap.Find(Toolkit::ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER); + DALI_TEST_CHECK(value); + DALI_TEST_CHECK(value->Get() == 10); + + value = resultMap.Find(Toolkit::ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER); + DALI_TEST_CHECK(value); + DALI_TEST_CHECK(value->Get() == 12); + + END_TEST; +} - Visual::Base visual = VisualFactory::Get().CreateVisual( propertyMap ); - Toolkit::Internal::Visual::Base& visualImpl = GetImplementation( visual ); - DALI_TEST_CHECK( visual ); +int UtcDaliAnimatedVectorImageVisualSetProperties(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliAnimatedVectorImageVisualSetProperties"); - DummyControl actor = DummyControl::New( true ); - DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() ); - dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - actor.SetProperty( Actor::Property::SIZE, Vector2( 200.0f, 200.0f ) ); - application.GetScene().Add( actor ); + 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::PLAY_RANGE, Vector2(0.2f, 0.8f)) + .Add(ImageVisual::Property::SYNCHRONOUS_LOADING, false); + + Visual::Base visual = VisualFactory::Get().CreateVisual(propertyMap); + Toolkit::Internal::Visual::Base& visualImpl = GetImplementation(visual); + DALI_TEST_CHECK(visual); + + DummyControl actor = DummyControl::New(true); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, visual); + actor.SetProperty(Actor::Property::SIZE, Vector2(200.0f, 200.0f)); + application.GetScene().Add(actor); application.SendNotification(); application.Render(); + // Trigger count is 2 - load, resource ready + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); + // renderer is added to actor - DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); - Renderer renderer = actor.GetRendererAt( 0u ); - DALI_TEST_CHECK( renderer ); + DALI_TEST_CHECK(actor.GetRendererCount() == 1u); + Renderer renderer = actor.GetRendererAt(0u); + DALI_TEST_CHECK(renderer); Property::Map propertyMap1; - propertyMap1.Add( DevelImageVisual::Property::LOOP_COUNT, 1 ) - .Add( DevelImageVisual::Property::PLAY_RANGE, Vector2( 0.4f, 0.6f ) ); + propertyMap1.Add(DevelImageVisual::Property::LOOP_COUNT, 1) + .Add(DevelImageVisual::Property::PLAY_RANGE, Vector2(0.4f, 0.6f)); - visualImpl.SetProperties( propertyMap1 ); + visualImpl.SetProperties(propertyMap1); application.SendNotification(); application.Render(); - DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); - renderer = actor.GetRendererAt( 0u ); - DALI_TEST_CHECK( renderer ); + DALI_TEST_CHECK(actor.GetRendererCount() == 1u); + renderer = actor.GetRendererAt(0u); + DALI_TEST_CHECK(renderer); - actor.Unparent( ); - DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + actor.Unparent(); + DALI_TEST_CHECK(actor.GetRendererCount() == 0u); END_TEST; } @@ -234,22 +278,65 @@ int UtcDaliAnimatedVectorImageVisualSetProperties(void) int UtcDaliArcVisualCreateInstancePropertyMap(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliArcVisualCreateInstancePropertyMap" ); + tet_infoline("UtcDaliArcVisualCreateInstancePropertyMap"); Property::Map propertyMap; - propertyMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ARC ) - .Add( DevelArcVisual::Property::THICKNESS, 20.0f ); + propertyMap.Add(Toolkit::Visual::Property::TYPE, DevelVisual::ARC) + .Add(DevelArcVisual::Property::THICKNESS, 20.0f); // request ArcVisual with a property map - VisualFactory factory = VisualFactory::Get(); - Visual::Base visual = factory.CreateVisual( propertyMap ); - Toolkit::Internal::Visual::Base& visualImpl = GetImplementation( visual ); + VisualFactory factory = VisualFactory::Get(); + Visual::Base visual = factory.CreateVisual(propertyMap); + Toolkit::Internal::Visual::Base& visualImpl = GetImplementation(visual); Property::Map resultMap; - visualImpl.CreateInstancePropertyMap( resultMap ); + visualImpl.CreateInstancePropertyMap(resultMap); // check the property values from the returned map from a visual - DALI_TEST_CHECK( resultMap.Empty() ); // Now the map is empty + DALI_TEST_CHECK(resultMap.Empty()); // Now the map is empty + + END_TEST; +} +int UtcDaliVisualUpdateBrokenImageRenderer(void) +{ + ToolkitTestApplication application; + tet_infoline("UpdateBrokenImageRenderer Test"); + + Toolkit::Internal::VisualFactoryCache* factoryCache = new Toolkit::Internal::VisualFactoryCache(false); + + std::string defaultBrokenImageUrl = "not-9patch.png"; + + // Set default broken image + factoryCache->SetBrokenImageUrl(defaultBrokenImageUrl, std::vector()); + + //Created dummy renderer + Geometry geometry = factoryCache->GetGeometry(Toolkit::Internal::VisualFactoryCache::QUAD_GEOMETRY); + Shader shader = Shader::New("foo", "bar"); + Renderer renderer = Renderer::New(geometry, shader); + + DALI_TEST_CHECK(renderer); + + // renderer doesn't changed. + factoryCache->UpdateBrokenImageRenderer(renderer, Vector2::ZERO, true); + Shader testShader1 = renderer.GetShader(); + + // Get default image renderer. + factoryCache->UpdateBrokenImageRenderer(renderer, Vector2::ZERO, false); + Shader testShader2 = renderer.GetShader(); + + // Get default image renderer but nine patch. + // Note : This API behavior can be changed. (DALi don't consider about default BrokenImageUrl is failed. + defaultBrokenImageUrl = "yes-9patch.9.png"; + factoryCache->SetBrokenImageUrl(defaultBrokenImageUrl, std::vector()); + factoryCache->UpdateBrokenImageRenderer(renderer, Vector2::ZERO, false); + Shader testShader3 = renderer.GetShader(); + + DALI_TEST_CHECK(testShader1 != factoryCache->GetShader(Toolkit::Internal::VisualFactoryCache::IMAGE_SHADER)); + DALI_TEST_CHECK(testShader1 != factoryCache->GetShader(Toolkit::Internal::VisualFactoryCache::NINE_PATCH_SHADER)); + DALI_TEST_CHECK(testShader2 == factoryCache->GetShader(Toolkit::Internal::VisualFactoryCache::IMAGE_SHADER)); + DALI_TEST_CHECK(testShader3 == factoryCache->GetShader(Toolkit::Internal::VisualFactoryCache::NINE_PATCH_SHADER)); + + delete factoryCache; END_TEST; }