X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-ImageVisual.cpp;h=fdf1697a965cd6d25ebc9786760f7526262199fc;hb=refs%2Fchanges%2F48%2F258148%2F4;hp=d34f6653d968de3ebd433f85b51a3155c323213c;hpb=43ca048f4200d2f1d6e59c2163af59cd99a45b2e;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp index d34f665..fdf1697 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -20,11 +20,11 @@ #include #include #include -#include #include #include #include #include +#include #include #include "dummy-control.h" @@ -115,7 +115,7 @@ void TestVisualRender( ToolkitTestApplication& application, actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); // Send messages to update application.Render(); // process update and render @@ -184,7 +184,7 @@ int UtcDaliImageVisualPropertyMap(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -203,7 +203,7 @@ int UtcDaliImageVisualPropertyMap(void) DALI_TEST_EQUALS( preMultipliedAlpha2, true, TEST_LOCATION ); DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -240,7 +240,7 @@ int UtcDaliImageVisualNoPremultipliedAlpha01(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -261,7 +261,7 @@ int UtcDaliImageVisualNoPremultipliedAlpha01(void) DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -297,7 +297,7 @@ int UtcDaliImageVisualNoPremultipliedAlpha02(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -343,7 +343,7 @@ int UtcDaliImageVisualNoPremultipliedAlpha02(void) newActor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( newActor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( newActor ); + application.GetScene().Add( newActor ); application.SendNotification(); application.Render(); @@ -367,7 +367,7 @@ int UtcDaliImageVisualNoPremultipliedAlpha02(void) DALI_TEST_CHECK( srcFactorAlpha == BlendFactor::ONE ); DALI_TEST_CHECK( destFactorAlpha == BlendFactor::ONE_MINUS_SRC_ALPHA ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -400,7 +400,7 @@ int UtcDaliImageVisualRemoteImageLoad(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -411,12 +411,57 @@ int UtcDaliImageVisualRemoteImageLoad(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; } + +int UtcDaliImageVisualWithNativeImage(void) +{ + ToolkitTestApplication application; + tet_infoline( "Use Native Image as url" ); + + NativeImageSourcePtr nativeImageSource = NativeImageSource::New(500, 500, NativeImageSource::COLOR_DEPTH_DEFAULT); + std::string url = Dali::Toolkit::Image::GenerateUrl(nativeImageSource); + + VisualFactory factory = VisualFactory::Get(); + DALI_TEST_CHECK( factory ); + + Property::Map propertyMap; + propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::IMAGE ); + propertyMap.Insert( ImageVisual::Property::URL, url ); + + Visual::Base visual = factory.CreateVisual( propertyMap ); + DALI_TEST_CHECK( visual ); + + DummyControl actor = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + + DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); + + application.GetScene().Add( actor ); + + DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); + + Renderer renderer = actor.GetRendererAt(0); + Shader shader = renderer.GetShader(); + + Property::Value value = shader.GetProperty(Shader::Property::PROGRAM); + DALI_TEST_CHECK(value.GetType() == Property::MAP); + const Property::Map* outMap = value.GetMap(); + std::string fragmentShader = (*outMap)["fragment"].Get(); + + const char* fragmentPrefix = nativeImageSource->GetCustomFragmentPrefix(); + size_t pos = fragmentShader.find(fragmentPrefix); + + DALI_TEST_EQUALS( pos != std::string::npos, true, TEST_LOCATION ); + + END_TEST; +} + int UtcDaliImageVisualTextureReuse1(void) { ToolkitTestApplication application; @@ -434,7 +479,7 @@ int UtcDaliImageVisualTextureReuse1(void) drawTrace.Enable(true); Actor actor = CreateActorWithImageVisual( propertyMap ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); // Wait for image to load @@ -451,7 +496,7 @@ int UtcDaliImageVisualTextureReuse1(void) drawTrace.Reset(); Actor actor2 = CreateActorWithImageVisual( propertyMap ); - Stage::GetCurrent().Add(actor2); + application.GetScene().Add(actor2); application.SendNotification(); // Send messages to update application.Render(); // process update and render @@ -464,11 +509,12 @@ int UtcDaliImageVisualTextureReuse1(void) DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); DALI_TEST_EQUALS( drawTrace.CountMethod("DrawArrays"), 2, TEST_LOCATION ); - DALI_TEST_EQUALS( textureTrace.CountMethod("BindTexture"), 0, TEST_LOCATION ); + // TODO: Temporarily commented out the line below when caching is disabled. Will need to add it back. +// DALI_TEST_EQUALS( textureTrace.CountMethod("BindTexture"), 0, TEST_LOCATION ); tet_infoline("Test that removing 1 actor doesn't delete the texture\n"); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); application.SendNotification(); application.Render(); @@ -477,7 +523,7 @@ int UtcDaliImageVisualTextureReuse1(void) tet_infoline("Test that removing last actor does delete the texture\n"); - Stage::GetCurrent().Remove( actor2 ); // Detaches remaining ImageVisual + application.GetScene().Remove( actor2 ); // Detaches remaining ImageVisual application.SendNotification(); application.Render(); @@ -504,7 +550,7 @@ int UtcDaliImageVisualTextureReuse2(void) drawTrace.Enable(true); Actor actor = CreateActorWithImageVisual( propertyMap ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); // Wait for image to load @@ -524,7 +570,7 @@ int UtcDaliImageVisualTextureReuse2(void) propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 100 ); propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 100 ); Actor actor2 = CreateActorWithImageVisual( propertyMap ); - Stage::GetCurrent().Add(actor2); + application.GetScene().Add(actor2); application.SendNotification(); @@ -542,15 +588,15 @@ int UtcDaliImageVisualTextureReuse2(void) DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION ); DALI_TEST_EQUALS( drawTrace.CountMethod("DrawArrays"), 2, TEST_LOCATION ); TraceCallStack::NamedParams tex1; - tex1["texture"] = "1"; + tex1["texture"] << 1; TraceCallStack::NamedParams tex2; - tex1["texture"] = "2"; + tex2["texture"] << 2; DALI_TEST_EQUALS( textureTrace.FindMethodAndParams("BindTexture", tex1), true, TEST_LOCATION ); DALI_TEST_EQUALS( textureTrace.FindMethodAndParams("BindTexture", tex2), true, TEST_LOCATION ); tet_infoline("Test that removing 1 actor deletes it's texture\n"); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); application.SendNotification(); application.Render(); @@ -559,7 +605,7 @@ int UtcDaliImageVisualTextureReuse2(void) tet_infoline("Test that removing last actor deletes it's texture\n"); - Stage::GetCurrent().Remove( actor2 ); + application.GetScene().Remove( actor2 ); application.SendNotification(); application.Render(); @@ -575,6 +621,15 @@ int UtcDaliImageVisualCustomWrapModePixelArea(void) ToolkitTestApplication application; tet_infoline( "Request image visual with a Property::Map, test custom wrap mode and pixel area with atlasing" ); + static std::vector customUniforms = + { + UniformData("pixelArea", Property::Type::VECTOR4), + UniformData("wrapMode", Property::Type::VECTOR2), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + VisualFactory factory = VisualFactory::Get(); DALI_TEST_CHECK( factory ); @@ -608,7 +663,7 @@ int UtcDaliImageVisualCustomWrapModePixelArea(void) dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); actor.SetProperty( Actor::Property::SIZE, Vector2(2000, 2000) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // loading started application.SendNotification(); @@ -620,10 +675,10 @@ int UtcDaliImageVisualCustomWrapModePixelArea(void) // WITH atlasing, the wrapping is handled manually in shader, so the following gl function should not be called std::stringstream out; - out << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_S << ", " << GL_MIRRORED_REPEAT; + out << std::hex << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_S << ", " << GL_MIRRORED_REPEAT; DALI_TEST_CHECK( !texParameterTrace.FindMethodAndParams("TexParameteri", out.str()) ); out.str(""); - out << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_T << ", " << GL_REPEAT; + out << std::hex << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_T << ", " << GL_REPEAT; DALI_TEST_CHECK( !texParameterTrace.FindMethodAndParams("TexParameteri", out.str()) ); // test the uniforms which used to handle the wrap mode @@ -654,6 +709,14 @@ int UtcDaliImageVisualCustomWrapModeNoAtlas(void) ToolkitTestApplication application; tet_infoline( "Request image visual with a Property::Map, test custom wrap mode and pixel area without atlasing" ); + static std::vector customUniforms = + { + UniformData("pixelArea", Property::Type::VECTOR4), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + VisualFactory factory = VisualFactory::Get(); DALI_TEST_CHECK( factory ); @@ -678,19 +741,22 @@ int UtcDaliImageVisualCustomWrapModeNoAtlas(void) TestGlAbstraction& gl = application.GetGlAbstraction(); TraceCallStack& textureTrace = gl.GetTextureTrace(); textureTrace.Enable(true); + textureTrace.EnableLogging(true); TraceCallStack& texParameterTrace = gl.GetTexParameterTrace(); texParameterTrace.Enable( true ); + texParameterTrace.EnableLogging( true ); DummyControl actor = DummyControl::New(); DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); actor.SetProperty( Actor::Property::SIZE, Vector2(2000, 2000) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // loading started application.SendNotification(); application.Render(); + application.SendNotification(); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); @@ -698,10 +764,10 @@ int UtcDaliImageVisualCustomWrapModeNoAtlas(void) // WITHOUT atlasing, the wrapping is handled by setting gl texture parameters std::stringstream out; - out << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_S << ", " << GL_MIRRORED_REPEAT; + out << std::hex << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_S << ", " << GL_MIRRORED_REPEAT; DALI_TEST_CHECK( texParameterTrace.FindMethodAndParams("TexParameteri", out.str()) ); out.str(""); - out << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_T << ", " << GL_REPEAT; + out << std::hex << GL_TEXTURE_2D << ", " << GL_TEXTURE_WRAP_T << ", " << GL_REPEAT; DALI_TEST_CHECK( texParameterTrace.FindMethodAndParams("TexParameteri", out.str()) ); // test the uniforms which used to handle the wrap mode @@ -728,6 +794,14 @@ int UtcDaliImageVisualAnimateMixColor(void) ToolkitTestApplication application; tet_infoline( "Animate mix color" ); + static std::vector customUniforms = + { + UniformData("mixColor", Property::Type::VECTOR3), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + application.GetPlatform().SetClosestImageSize( Vector2(100, 100) ); VisualFactory factory = VisualFactory::Get(); @@ -745,12 +819,12 @@ int UtcDaliImageVisualAnimateMixColor(void) actor.SetProperty( Actor::Property::SIZE, Vector2(2000, 2000) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); actor.SetProperty( Actor::Property::COLOR,Color::BLACK); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index index = DevelHandle::GetPropertyIndex( renderer, Visual::Property::MIX_COLOR ); + Property::Index index = renderer.GetPropertyIndex( Visual::Property::MIX_COLOR ); Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::AUTO, TEST_LOCATION ); @@ -774,12 +848,15 @@ int UtcDaliImageVisualAnimateMixColor(void) Animation animation = dummyImpl.CreateTransition( transition ); - blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); - DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); - animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE ); animation.Play(); + TestGlAbstraction& glAbstraction = application.GetGlAbstraction(); + glAbstraction.EnableEnableDisableCallTrace( true ); + TraceCallStack& glEnableStack = glAbstraction.GetEnableDisableTrace(); + std::ostringstream blendStr; + blendStr << std::hex << GL_BLEND; + application.SendNotification(); application.Render(0); // Ensure animation starts application.Render(2000u); // Halfway point @@ -789,16 +866,22 @@ int UtcDaliImageVisualAnimateMixColor(void) DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue( "uColor", Vector4( 0.5f, 0.5f, 0.5f, 0.75f ) ), true, TEST_LOCATION ); DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue( "mixColor", testColor ), true, TEST_LOCATION ); + DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Enable", blendStr.str() ) ); + + glEnableStack.Reset(); + application.Render(2000u); // Halfway point between blue and white DALI_TEST_EQUALS( actor.GetCurrentProperty< Vector4 >( Actor::Property::COLOR ), Color::WHITE, TEST_LOCATION ); DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue( "uColor", Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ), true, TEST_LOCATION ); DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue( "mixColor", Vector3( TARGET_MIX_COLOR ) ), true, TEST_LOCATION ); - TestMixColor( visual, Visual::Property::MIX_COLOR, TARGET_MIX_COLOR ); + // GL_BLEND should not be changed: Keep enabled + // TODO: Temporarily commented out the line below when caching is disabled. Will need to add it back. +// DALI_TEST_CHECK( !glEnableStack.FindMethodAndParams( "Enable", blendStr.str().c_str() ) ); + DALI_TEST_CHECK( !glEnableStack.FindMethodAndParams( "Disable", blendStr.str() ) ); - blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); - DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); + TestMixColor( visual, Visual::Property::MIX_COLOR, TARGET_MIX_COLOR ); END_TEST; } @@ -825,13 +908,20 @@ int UtcDaliImageVisualAnimateOpacity(void) actor.SetProperty( Actor::Property::SIZE, Vector2(2000, 2000) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); actor.SetProperty( Actor::Property::COLOR,Color::BLACK); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); - Renderer renderer = actor.GetRendererAt(0); - Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); - DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); + TestGlAbstraction& glAbstraction = application.GetGlAbstraction(); + glAbstraction.EnableEnableDisableCallTrace( true ); + TraceCallStack& glEnableStack = glAbstraction.GetEnableDisableTrace(); + std::ostringstream blendStr; + blendStr << std::hex << GL_BLEND; + + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Enable", blendStr.str()) ); { tet_infoline( "Test that the opacity can be increased to full via animation, and that the blend mode is set appropriately at the start and end of the animation." ); @@ -850,6 +940,8 @@ int UtcDaliImageVisualAnimateOpacity(void) Animation animation = dummyImpl.CreateTransition( transition ); animation.Play(); + glEnableStack.Reset(); + application.SendNotification(); application.Render(0); // Ensure animation starts application.Render(2000u); // Halfway point through animation @@ -865,8 +957,9 @@ int UtcDaliImageVisualAnimateOpacity(void) DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", color ) ); DALI_TEST_EQUALS( color.a, 1.0f, TEST_LOCATION ); - blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); - DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::AUTO, TEST_LOCATION ); + // TODO: Temporarily commented out the line below when caching is disabled. Will need to add it back. +// DALI_TEST_CHECK( !glEnableStack.FindMethodAndParams( "Enable", blendStr.str().c_str() ) ); + DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Disable", blendStr.str() ) ); } @@ -887,8 +980,7 @@ int UtcDaliImageVisualAnimateOpacity(void) Animation animation = dummyImpl.CreateTransition( transition ); animation.Play(); - blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); - DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); + glEnableStack.Reset(); application.SendNotification(); application.Render(0); // Ensure animation starts @@ -899,17 +991,23 @@ int UtcDaliImageVisualAnimateOpacity(void) DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", color ) ); DALI_TEST_EQUALS( color.a, 0.55f, TEST_LOCATION ); + DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Enable", blendStr.str() ) ); + + glEnableStack.Reset(); + application.Render(2016u); // end application.SendNotification(); DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", color ) ); DALI_TEST_EQUALS( color.a, 0.1f, TEST_LOCATION ); - blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); - DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); + // GL_BLEND should not be changed: Keep enabled +// @todo +// TODO: Temporarily commented out the line below when caching is disabled. Will need to add it back. +// DALI_TEST_CHECK( !glEnableStack.FindMethodAndParams( "Enable", blendStr.str() ) ); + DALI_TEST_CHECK( !glEnableStack.FindMethodAndParams( "Disable", blendStr.str() ) ); } - END_TEST; } @@ -963,7 +1061,7 @@ int UtcDaliImageVisualAnimateOpacity02(void) Dali::Toolkit::TransitionData transition = TransitionData::New( array ); Animation animation = dummyImpl.CreateTransition( transition ); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); application.SendNotification(); application.Render(0); // Ensure animation starts @@ -976,26 +1074,32 @@ int UtcDaliImageVisualAnimateOpacity02(void) animation = dummyImpl.CreateTransition( transition ); animation.Play(); + TestGlAbstraction& glAbstraction = application.GetGlAbstraction(); + glAbstraction.EnableEnableDisableCallTrace( true ); + TraceCallStack& glEnableStack = glAbstraction.GetEnableDisableTrace(); + std::ostringstream blendStr; + blendStr << std::hex << GL_BLEND; + application.SendNotification(); application.Render(0); // Ensure animation starts application.Render(2000u); // Halfway point through animation application.SendNotification(); // Handle any signals - blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); - DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); + DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Enable", blendStr.str() ) ); Vector4 color; DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", color ) ); DALI_TEST_EQUALS( color.a, 0.5f, TEST_LOCATION ); + glEnableStack.Reset(); + application.Render(2001u); // end application.SendNotification(); // ensure animation finished signal is sent DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", color ) ); DALI_TEST_EQUALS( color.a, 1.0f, TEST_LOCATION ); - blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); - DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::AUTO, TEST_LOCATION ); + DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Disable", blendStr.str() ) ); END_TEST; } @@ -1007,6 +1111,14 @@ int UtcDaliImageVisualAnimatePixelArea(void) ToolkitTestApplication application; tet_infoline( "ImageVisual animate pixel area" ); + static std::vector customUniforms = + { + UniformData("pixelArea", Property::Type::VECTOR4), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + application.GetPlatform().SetClosestImageSize( Vector2(100, 100) ); VisualFactory factory = VisualFactory::Get(); @@ -1024,12 +1136,12 @@ int UtcDaliImageVisualAnimatePixelArea(void) actor.SetProperty( Actor::Property::SIZE, Vector2(2000, 2000) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); actor.SetProperty( Actor::Property::COLOR,Color::BLACK); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index index = DevelHandle::GetPropertyIndex( renderer, Visual::Property::MIX_COLOR ); + Property::Index index = renderer.GetPropertyIndex( Visual::Property::MIX_COLOR ); tet_infoline("Test that the renderer has the mixColor property"); DALI_TEST_CHECK( index != Property::INVALID_INDEX ); @@ -1081,10 +1193,10 @@ int UtcDaliImageVisualTextureCancelRemoteLoad(void) drawTrace.Enable(true); Actor actor = CreateActorWithImageVisual( propertyMap ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); application.SendNotification(); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); @@ -1120,12 +1232,12 @@ int UtcDaliImageVisualTextureCancelAsyncLoad(void) DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() ); dummyImpl.RegisterVisual( Control::Property::BACKGROUND, visual ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Cancel loading - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Create another visual with the same image visual = factory.CreateVisual( propertyMap ); @@ -1173,7 +1285,7 @@ int UtcDaliImageVisualSetInvalidAsyncImage(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1184,7 +1296,7 @@ int UtcDaliImageVisualSetInvalidAsyncImage(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -1217,15 +1329,20 @@ int UtcDaliImageVisualSetInvalidSyncImage(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); + // Check resource status + Visual::ResourceStatus status = actor.GetVisualResourceStatus(Control::CONTROL_PROPERTY_END_INDEX + 1); + DALI_TEST_EQUALS(status, Visual::ResourceStatus::FAILED, TEST_LOCATION); + + // The broken image should be shown. DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -1258,7 +1375,7 @@ int UtcDaliImageVisualSetInvalidRemoteImage(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1269,7 +1386,7 @@ int UtcDaliImageVisualSetInvalidRemoteImage(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -1310,7 +1427,7 @@ int UtcDaliImageVisualAlphaMask(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); DALI_TEST_EQUALS( actor.IsResourceReady(), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -1365,7 +1482,7 @@ int UtcDaliImageVisualSynchronousLoadAlphaMask(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); DALI_TEST_EQUALS( actor.IsResourceReady(), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Do not wait for any EventThreadTrigger in synchronous alpha mask. @@ -1421,7 +1538,7 @@ int UtcDaliImageVisualRemoteAlphaMask(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -1476,7 +1593,7 @@ int UtcDaliImageVisualAlphaMaskCrop(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); DALI_TEST_EQUALS( actor.IsResourceReady(), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -1522,7 +1639,7 @@ int UtcDaliImageVisualReleasePolicy01(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1572,7 +1689,7 @@ int UtcDaliImageVisualReleasePolicy02(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1623,7 +1740,7 @@ int UtcDaliImageVisualReleasePolicy03(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1679,7 +1796,7 @@ int UtcDaliImageVisualReleasePolicy04(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1762,7 +1879,7 @@ int UtcDaliImageVisualReleasePolicy06(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1829,7 +1946,7 @@ int UtcDaliImageVisualReleasePolicy07(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1889,7 +2006,7 @@ int UtcDaliImageVisualReleasePolicy08(void) DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); textureTrace.Reset(); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1907,7 +2024,7 @@ int UtcDaliImageVisualReleasePolicy08(void) // 2.Remove actor from stage. In this case, renderer also is deleted. tet_infoline( "Remove actor from stage" ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); application.SendNotification(); application.Render(); @@ -1918,7 +2035,7 @@ int UtcDaliImageVisualReleasePolicy08(void) // 3.Add actor in stage. In this case, renderer is created. tet_infoline( "Add actor in stage" ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); application.SendNotification(); application.Render(); @@ -1986,7 +2103,7 @@ int UtcDaliImageVisualLoadPolicy01(void) imageVisual.Reset(); // reduce ref count so only the control keeps the visual alive. actor.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); tet_infoline( "Ensure nothing triggers another load as texure already loaded" ); const unsigned int TIME_OUT_3_SECONDS = 3; DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1, TIME_OUT_3_SECONDS ), false, TEST_LOCATION ); @@ -2040,7 +2157,7 @@ int UtcDaliImageVisualLoadPolicy02(void) imageVisual.Reset(); // reduce ref count so only the control keeps the visual alive. actor.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); tet_infoline( "Allow image time to load" ); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -2168,7 +2285,7 @@ int UtcDaliImageVisualLoadPolicy05(void) actor.ResourceReadySignal().Connect( &ResourceReadySignal); Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); actor.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); tet_infoline( "Create visual with ATTACHED load policy" ); Visual::Base imageVisual = CreateVisualWithPolicy( TEST_IMAGE_FILE_NAME, ImageVisual::Property::LOAD_POLICY, ImageVisual::LoadPolicy::ATTACHED ); @@ -2221,7 +2338,7 @@ int UtcDaliImageVisualOrientationCorrection(void) tet_infoline( "Create control for visual, need to loaded it" ); DummyControl actor = DummyControl::New(true); Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, imageVisual ); // Wait for image to load @@ -2289,7 +2406,7 @@ int UtcDaliImageVisualCustomShader(void) dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - Stage::GetCurrent().Add( dummy ); + application.GetScene().Add( dummy ); application.SendNotification(); application.Render(); @@ -2321,7 +2438,7 @@ int UtcDaliImageVisualCustomShader(void) dummyImpl1.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual1 ); dummy1.SetProperty( Actor::Property::SIZE, Vector2( 200, 200 ) ); dummy1.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - Stage::GetCurrent().Add( dummy1 ); + application.GetScene().Add( dummy1 ); TestGlAbstraction& glAbstraction = application.GetGlAbstraction(); glAbstraction.EnableEnableDisableCallTrace( true ); @@ -2331,8 +2448,8 @@ int UtcDaliImageVisualCustomShader(void) TraceCallStack& glEnableStack = glAbstraction.GetEnableDisableTrace(); std::ostringstream blendStr; - blendStr << GL_BLEND; - DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Enable", blendStr.str().c_str() ) ); + blendStr << std::hex << GL_BLEND; + DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Enable", blendStr.str() ) ); END_TEST; } @@ -2380,7 +2497,7 @@ int UtcDaliImageVisualLoadReady01(void) actor.ResourceReadySignal().Connect( &ResourceReadySignal); Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); actor.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) ); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); tet_infoline( "Create visual with IMMEDIATE load policy" ); Visual::Base imageVisual1 = CreateVisualWithPolicy( TEST_IMAGE_FILE_NAME, ImageVisual::Property::LOAD_POLICY, ImageVisual::LoadPolicy::IMMEDIATE ); @@ -2415,7 +2532,7 @@ int UtcDaliImageVisualLoadReady01(void) dummyImpl2.RegisterVisual( DummyControl::Property::TEST_VISUAL, imageVisual2 ); actor2.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) ); - Stage::GetCurrent().Add(actor2); + application.GetScene().Add(actor2); tet_infoline( "Wait for loading thread to finish"); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );