X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-Visual.cpp;h=30b0e1e227ef023ebb7452f83677f77e5c64b76f;hb=HEAD;hp=dae8540bd4af5ce71c735cbebcb9572b7f8ae9d5;hpb=4d8dff121a1c79d5a545bc80b1a18b7f0f12beb5;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp index dae8540..e2659ff 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 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. @@ -141,7 +141,6 @@ bool DaliTestCheckMaps(const Property::Map& fontStyleMapGet, const Property::Map return true; } - void TestShaderCodeContainSubstrings(Control control, std::vector> substringCheckList, const char* location) { Renderer renderer = control.GetRendererAt(0); @@ -150,6 +149,17 @@ void TestShaderCodeContainSubstrings(Control control, std::vectorFind("vertex"); // vertex key name from shader-impl.cpp + std::string vertexShader; + DALI_TEST_CHECK(vertex->Get(vertexShader)); + for(const auto& checkPair : substringCheckList) + { + const auto& keyword = checkPair.first; + const auto& expect = checkPair.second; + tet_printf("check [%s] %s exist in vertex shader\n", keyword.c_str(), expect ? "is" : "is not"); + DALI_TEST_EQUALS((vertexShader.find(keyword.c_str()) != std::string::npos), expect, location); + } + Property::Value* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp DALI_TEST_CHECK(fragment); std::string fragmentShader; @@ -161,6 +171,15 @@ void TestShaderCodeContainSubstrings(Control control, std::vector>> substringCheckList, const char* location) +{ + Renderer renderer = control.GetRendererAt(0); + Shader shader = renderer.GetShader(); + Property::Value value = shader.GetProperty(Shader::Property::PROGRAM); + Property::Map* map = value.GetMap(); + DALI_TEST_CHECK(map); Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp std::string vertexShader; @@ -168,10 +187,22 @@ void TestShaderCodeContainSubstrings(Control control, std::vectorFind("fragment"); // fragment key name from shader-impl.cpp + DALI_TEST_CHECK(fragment); + std::string fragmentShader; + DALI_TEST_CHECK(fragment->Get(fragmentShader)); + for(const auto& checkPair : substringCheckList) + { + const auto& keyword = checkPair.first; + const auto& expect = checkPair.second.second; + tet_printf("check [%s] %s exist in fragment shader\n", keyword.c_str(), expect ? "is" : "is not"); + DALI_TEST_EQUALS((fragmentShader.find(keyword.c_str()) != std::string::npos), expect, location); + } } } //namespace @@ -1259,7 +1290,7 @@ int UtcDaliVisualGetPropertyMap10(void) propertyMap.Insert("underline", underlineMapSet.Add("enable", true).Add("color", Color::GREEN).Add("height", 1).Add("type", Text::Underline::Type::SOLID).Add("dashWidth", 2).Add("dashGap", 1)); Property::Map outlineMapSet; - propertyMap.Insert("outline", outlineMapSet.Add("color", Color::YELLOW).Add("width", 1)); + propertyMap.Insert("outline", outlineMapSet.Add("color", Color::YELLOW).Add("width", 1).Add("offset", Vector2(2.0f, 2.0f)).Add("blurRadius", 3.0f)); Property::Map backgroundMapSet; propertyMap.Insert("textBackground", backgroundMapSet.Add("enable", true).Add("color", Color::CYAN)); @@ -3731,11 +3762,11 @@ int UtcDaliRegisterVisualOrder(void) dummyImpl.RegisterVisual(DummyControl::Property::FOCUS_VISUAL, focusVisual); DALI_TEST_CHECK(focusVisual.GetDepthIndex() > foregroundVisual.GetDepthIndex()); - tet_infoline("Set depth index on a new visual before registering, the depth index should not have been changed"); + tet_infoline("Set depth index on a new visual before registering, the depth index should not have been changed, and be clampled"); Visual::Base labelVisual = factory.CreateVisual(propertyMap); - labelVisual.SetDepthIndex(-2000); + labelVisual.SetDepthIndex(static_cast(Toolkit::DepthIndex::MINIMUM_DEPTH_INDEX) - 100); dummyImpl.RegisterVisual(DummyControl::Property::LABEL_VISUAL, labelVisual); - DALI_TEST_EQUALS(labelVisual.GetDepthIndex(), -2000, TEST_LOCATION); + DALI_TEST_EQUALS(labelVisual.GetDepthIndex(), static_cast(Toolkit::DepthIndex::MINIMUM_DEPTH_INDEX), TEST_LOCATION); tet_infoline("Replace visual, the depth index should be the same as what was previously set"); const int testVisual2DepthIndex = testVisual2.GetDepthIndex(); @@ -3744,11 +3775,11 @@ int UtcDaliRegisterVisualOrder(void) dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL2, testVisual2Replacement); DALI_TEST_EQUALS(testVisual2Replacement.GetDepthIndex(), testVisual2DepthIndex, TEST_LOCATION); - tet_infoline("Replace visual and set a depth index on the replacement, the depth index of the replacement should be honoured"); + tet_infoline("Replace visual and set a depth index on the replacement, the depth index of the replacement should be honoured, and be clampled"); Visual::Base anotherTestVisual2Replacement = factory.CreateVisual(propertyMap); - anotherTestVisual2Replacement.SetDepthIndex(2000); + anotherTestVisual2Replacement.SetDepthIndex(static_cast(Toolkit::DepthIndex::MAXIMUM_DEPTH_INDEX) + 100); dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL2, anotherTestVisual2Replacement); - DALI_TEST_EQUALS(anotherTestVisual2Replacement.GetDepthIndex(), 2000, TEST_LOCATION); + DALI_TEST_EQUALS(anotherTestVisual2Replacement.GetDepthIndex(), static_cast(Toolkit::DepthIndex::MAXIMUM_DEPTH_INDEX), TEST_LOCATION); dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); application.GetScene().Add(dummyControl); @@ -3775,7 +3806,7 @@ int UtcDaliRegisterVisualOrder02(void) dummyControl.SetProperty(Control::Property::BACKGROUND, propertyMap); - const int TEST_VISUAL_1_DEPTH_INDEX = 0; + const int TEST_VISUAL_1_DEPTH_INDEX = static_cast(Toolkit::DepthIndex::CONTENT); tet_printf("Register visual, should have depth index of %d\n", TEST_VISUAL_1_DEPTH_INDEX); Visual::Base testVisual1 = factory.CreateVisual(propertyMap); dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, testVisual1); @@ -3784,7 +3815,14 @@ int UtcDaliRegisterVisualOrder02(void) tet_printf("Register another visual, should have a depth index greater than previous(%d)\n", TEST_VISUAL_1_DEPTH_INDEX); Visual::Base testVisual2 = factory.CreateVisual(propertyMap); dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL2, testVisual2); - DALI_TEST_CHECK(testVisual2.GetDepthIndex() > testVisual1.GetDepthIndex()); + DALI_TEST_GREATER(testVisual2.GetDepthIndex(), testVisual1.GetDepthIndex(), TEST_LOCATION); + + const int TEST_VISUAL_2_DEPTH_INDEX = testVisual2.GetDepthIndex(); + + tet_printf("Register other visual, should have a depth index greater than previous(%d)\n", TEST_VISUAL_2_DEPTH_INDEX); + Visual::Base testVisual3 = factory.CreateVisual(propertyMap); + dummyImpl.RegisterVisual(DummyControl::Property::FOREGROUND_VISUAL, testVisual3, Toolkit::DepthIndex::AUTO_INDEX); + DALI_TEST_GREATER(testVisual3.GetDepthIndex(), testVisual2.GetDepthIndex(), TEST_LOCATION); dummyControl.SetProperty(Actor::Property::SIZE, Vector2(200.f, 200.f)); application.GetScene().Add(dummyControl); @@ -4182,6 +4220,7 @@ int UtcDaliVisualRoundedCorner(void) properties["cornerRadius"] = Vector4(1.0f, 100.0f, 10.0f, 0.1f); // Dummy Input properties["cornerRadius"] = cornerRadius; properties[DevelVisual::Property::CORNER_RADIUS_POLICY] = Toolkit::Visual::Transform::Policy::RELATIVE; + properties["synchronousLoading"] = false; Visual::Base visual = factory.CreateVisual(properties); @@ -4559,6 +4598,7 @@ int UtcDaliVisualBorderline(void) properties[DevelVisual::Property::BORDERLINE_WIDTH] = borderlineWidth; properties["borderlineColor"] = borderlineColor; properties[DevelVisual::Property::BORDERLINE_OFFSET] = borderlineOffset; + properties[ImageVisual::Property::SYNCHRONOUS_LOADING] = false; Visual::Base visual = factory.CreateVisual(properties); @@ -5248,6 +5288,7 @@ int UtcDaliVisualGetVisualProperty03(void) static std::vector customUniforms = { + UniformData("pixelArea", Property::Type::VECTOR4), UniformData("cornerRadius", Property::Type::VECTOR4), UniformData("borderlineWidth", Property::Type::FLOAT), UniformData("borderlineColor", Property::Type::VECTOR4), @@ -5277,6 +5318,7 @@ int UtcDaliVisualGetVisualProperty03(void) application.Render(); float targetOpacity = 0.5f; + Vector4 targetPixelArea(0.0f, 1.0f, 2.0f, -0.5f); Vector4 targetCornerRadius(20.0f, 20.0f, 0.0f, 0.0f); float targetBorderlineWidth = 10.0f; Vector4 targetBorderlineColor(1.0f, 0.0f, 1.0f, 0.5f); @@ -5284,6 +5326,7 @@ int UtcDaliVisualGetVisualProperty03(void) Animation animation = Animation::New(1.0f); animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::OPACITY), targetOpacity); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, ImageVisual::Property::PIXEL_AREA), targetPixelArea); animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::CORNER_RADIUS), targetCornerRadius); animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_WIDTH), targetBorderlineWidth); animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::BORDERLINE_COLOR), targetBorderlineColor); @@ -5302,6 +5345,10 @@ int UtcDaliVisualGetVisualProperty03(void) DALI_TEST_CHECK(colorValue); DALI_TEST_EQUALS(colorValue->Get(), Vector4(1.0f, 1.0f, 1.0f, targetOpacity), TEST_LOCATION); + Property::Value* pixelAreaValue = resultMap.Find(ImageVisual::Property::PIXEL_AREA, Property::VECTOR4); + DALI_TEST_CHECK(pixelAreaValue); + DALI_TEST_EQUALS(pixelAreaValue->Get(), targetPixelArea, TEST_LOCATION); + Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4); DALI_TEST_CHECK(cornerRadiusValue); DALI_TEST_EQUALS(cornerRadiusValue->Get(), targetCornerRadius, TEST_LOCATION); @@ -5319,11 +5366,15 @@ int UtcDaliVisualGetVisualProperty03(void) DALI_TEST_EQUALS(borderlineOffsetValue->Get(), targetBorderlineOffset, TEST_LOCATION); // Test uniform value + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("pixelArea", targetPixelArea), true, TEST_LOCATION); DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("cornerRadius", targetCornerRadius), true, TEST_LOCATION); DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("borderlineWidth", targetBorderlineWidth), true, TEST_LOCATION); DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("borderlineColor", targetBorderlineColor), true, TEST_LOCATION); DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("borderlineOffset", targetBorderlineOffset), true, TEST_LOCATION); + // Test non-animatable index, for coverage. + DALI_TEST_EQUALS(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, ImageVisual::Property::URL).propertyIndex, Property::INVALID_INDEX, TEST_LOCATION); + END_TEST; } @@ -5595,6 +5646,7 @@ int UtcDaliVisualGetVisualProperty07(void) Property::Map propertyMap; propertyMap.Insert(Visual::Property::TYPE, DevelVisual::Type::ANIMATED_VECTOR_IMAGE); propertyMap.Insert(ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME); + propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, false); Visual::Base animatedVectorVisual = factory.CreateVisual(propertyMap); @@ -5665,10 +5717,10 @@ int UtcDaliVisualGetVisualProperty07(void) END_TEST; } -int UtcDaliVisualUpdateProperty(void) +int UtcDaliVisualUpdateProperty01(void) { ToolkitTestApplication application; - tet_infoline("UtcDaliVisualUpdateProperty: Test update property by DoAction. Standard case"); + tet_infoline("UtcDaliVisualUpdateProperty01: Test update property by DoAction. Standard case"); VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; @@ -5760,6 +5812,82 @@ int UtcDaliVisualUpdateProperty(void) END_TEST; } +int UtcDaliVisualUpdateProperty02(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliVisualUpdateProperty02: Test update property by DoAction. Initialize as zero, and update non-zero case"); + + Vector4 borderlineColor = Color::BLUE; + float borderlineOffset = 1.0f; + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap[Visual::Property::TYPE] = Visual::Type::IMAGE; + propertyMap[ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME; + propertyMap[Visual::Property::MIX_COLOR] = Color::BLUE; + propertyMap[DevelVisual::Property::VISUAL_FITTING_MODE] = DevelVisual::FIT_WIDTH; + propertyMap[DevelVisual::Property::CORNER_RADIUS] = 0.0f; + propertyMap[DevelVisual::Property::CORNER_RADIUS_POLICY] = Toolkit::Visual::Transform::Policy::RELATIVE; + propertyMap[DevelVisual::Property::BORDERLINE_WIDTH] = 0.0f; + propertyMap[DevelVisual::Property::BORDERLINE_COLOR] = borderlineColor; + propertyMap[DevelVisual::Property::BORDERLINE_OFFSET] = borderlineOffset; + + Visual::Base imageVisual = factory.CreateVisual(propertyMap); + + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual); + dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f); + application.GetScene().Add(dummyControl); + + application.SendNotification(); + application.Render(); + + // Wait for image loading + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + + Property::Map originalMap; + imageVisual.CreatePropertyMap(originalMap); + + Vector4 targetCornerRadius = Vector4(10.0f, 0.0f, 1.0f, 2.0f); + float targetBorderlineWidth = 20.0f; + + Property::Map targetPropertyMap; + targetPropertyMap[DevelVisual::Property::CORNER_RADIUS] = targetCornerRadius; + targetPropertyMap[DevelVisual::Property::BORDERLINE_WIDTH] = targetBorderlineWidth; + + // Update Properties + DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Action::UPDATE_PROPERTY, targetPropertyMap); + + Property::Map resultMap; + imageVisual.CreatePropertyMap(resultMap); + + Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4); + DALI_TEST_CHECK(cornerRadiusValue); + DALI_TEST_EQUALS(cornerRadiusValue->Get(), targetCornerRadius, TEST_LOCATION); + + Property::Value* cornerRadiusPolicyValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS_POLICY, Property::INTEGER); + DALI_TEST_CHECK(cornerRadiusPolicyValue); + DALI_TEST_EQUALS(cornerRadiusPolicyValue->Get(), static_cast(Toolkit::Visual::Transform::Policy::RELATIVE), TEST_LOCATION); + + Property::Value* borderlineWidthValue = resultMap.Find(DevelVisual::Property::BORDERLINE_WIDTH, Property::FLOAT); + DALI_TEST_CHECK(borderlineWidthValue); + DALI_TEST_EQUALS(borderlineWidthValue->Get(), targetBorderlineWidth, TEST_LOCATION); + + Property::Value* borderlineColorValue = resultMap.Find(DevelVisual::Property::BORDERLINE_COLOR, Property::VECTOR4); + DALI_TEST_CHECK(borderlineColorValue); + DALI_TEST_EQUALS(borderlineColorValue->Get(), borderlineColor, TEST_LOCATION); + + Property::Value* borderlineOffsetValue = resultMap.Find(DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT); + DALI_TEST_CHECK(borderlineOffsetValue); + DALI_TEST_EQUALS(borderlineOffsetValue->Get(), borderlineOffset, TEST_LOCATION); + + END_TEST; +} + int UtcDaliVisualUpdatePropertyInvalidType(void) { ToolkitTestApplication application; @@ -6385,3 +6513,143 @@ int UtcDaliVisualUpdatePropertyChangeShader04(void) END_TEST; } + +int UtcDaliVisualUpdatePropertyChangeShader05(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliVisualUpdatePropertyChangeShader05: Test update property under glsl version is under 300"); + + auto originalShaderVersion = application.GetGlAbstraction().GetShaderLanguageVersion(); + + // Change the shader language version forcely! + application.GetGlAbstraction().mShaderLanguageVersion = 200; + + try + { + TraceCallStack& callStack = application.GetGraphicsController().mCallStack; + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + // Case ImageVisual + propertyMap[Visual::Property::TYPE] = Visual::Type::COLOR; + propertyMap[ColorVisual::Property::MIX_COLOR] = Color::BLUE; + + Visual::Base imageVisual = factory.CreateVisual(propertyMap); + + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual); + dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f); + application.GetScene().Add(dummyControl); + + application.SendNotification(); + application.Render(); + + application.SendNotification(); + application.Render(); + + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BLUR", false}, + {"#define IS_REQUIRED_BORDERLINE", false}, + {"#define IS_REQUIRED_ROUNDED_CORNER", false}, + }, + TEST_LOCATION); + + float targetBlurRadius = 15.0f; + Vector4 targetCornerRadius = Vector4(1.0f, 0.1f, 1.1f, 0.0f); + + Property::Map targetPropertyMap; + targetPropertyMap[DevelColorVisual::Property::BLUR_RADIUS] = targetBlurRadius; + targetPropertyMap[DevelVisual::Property::CORNER_RADIUS] = targetCornerRadius; + targetPropertyMap[DevelVisual::Property::BORDERLINE_WIDTH] = 10.0f; // Don't care. just dummy + + callStack.Reset(); + callStack.Enable(true); + + // Update Properties with CornerRadius + DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Action::UPDATE_PROPERTY, targetPropertyMap); + + Property::Map resultMap; + imageVisual.CreatePropertyMap(resultMap); + + // Test property values: they should be updated + Property::Value* blurRadiusValue = resultMap.Find(DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT); + DALI_TEST_CHECK(blurRadiusValue); + DALI_TEST_EQUALS(blurRadiusValue->Get(), targetBlurRadius, TEST_LOCATION); + + Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4); + DALI_TEST_CHECK(cornerRadiusValue); + DALI_TEST_EQUALS(cornerRadiusValue->Get(), targetCornerRadius, TEST_LOCATION); + + TestShaderCodeContainSubstringsForEachShader( + dummyControl, + { + {"#define IS_REQUIRED_BLUR", {true, true}}, + {"#define IS_REQUIRED_BORDERLINE", {false, false}}, // Note : We ignore borderline when blur radius occured + {"#define IS_REQUIRED_ROUNDED_CORNER", {true, true}}, + {"#define SL_VERSION_LOW", {false, true}}, + }, + TEST_LOCATION); + + // Send shader compile signal + application.SendNotification(); + application.Render(); + + callStack.Enable(false); + + // Shader changed + DALI_TEST_CHECK((callStack.FindMethod("CreateShader"))); + callStack.Reset(); + callStack.Enable(true); + + Property::Map targetPropertyMap2; + targetPropertyMap2[DevelColorVisual::Property::BLUR_RADIUS] = 0.0f; + targetPropertyMap2[DevelVisual::Property::CORNER_RADIUS] = Vector4::ZERO; + targetPropertyMap2[DevelVisual::Property::BORDERLINE_WIDTH] = 15.0f; // Don't care. just dummy + + // Update Properties with CornerRadius + DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Action::UPDATE_PROPERTY, targetPropertyMap2); + + Property::Map resultMap2; + imageVisual.CreatePropertyMap(resultMap2); + + // Test property values: they should be updated + blurRadiusValue = resultMap2.Find(DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT); + DALI_TEST_CHECK(blurRadiusValue); + DALI_TEST_EQUALS(blurRadiusValue->Get(), 0.0f, TEST_LOCATION); + + cornerRadiusValue = resultMap2.Find(DevelVisual::Property::CORNER_RADIUS, Property::VECTOR4); + DALI_TEST_CHECK(cornerRadiusValue); + DALI_TEST_EQUALS(cornerRadiusValue->Get(), Vector4::ZERO, TEST_LOCATION); + + TestShaderCodeContainSubstringsForEachShader( + dummyControl, + { + {"#define IS_REQUIRED_BLUR", {true, true}}, // Note : mAlwaysUsingBlurRadius is true. + {"#define IS_REQUIRED_BORDERLINE", {false, false}}, // Note : We ignore borderline when blur radius occured + {"#define IS_REQUIRED_ROUNDED_CORNER", {true, true}}, // Note : mAlwaysUsingCornerRadius is true. + {"#define SL_VERSION_LOW", {false, true}}, + }, + TEST_LOCATION); + + // Send shader compile signal + application.SendNotification(); + application.Render(); + + callStack.Enable(false); + + // Shader not changed + DALI_TEST_CHECK(!(callStack.FindMethod("CreateShader"))); + } + catch(...) + { + DALI_TEST_CHECK(false); + } + + // Revert shader version. We should revert it even if UTC failed. + application.GetGlAbstraction().mShaderLanguageVersion = originalShaderVersion; + + END_TEST; +} \ No newline at end of file