X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-Visual.cpp;h=dae8540bd4af5ce71c735cbebcb9572b7f8ae9d5;hp=175e834ba381eded61bd21e47c8597d1e75b5a3d;hb=23446c257d6ae1977bb69e53353fb1ccd5409432;hpb=73af44fd04b52cf0509279c5869b63ec9c690959 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp index 175e834..dae8540 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -141,6 +142,38 @@ 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); + Shader shader = renderer.GetShader(); + Property::Value value = shader.GetProperty(Shader::Property::PROGRAM); + Property::Map* map = value.GetMap(); + DALI_TEST_CHECK(map); + + Property::Value* fragment = map->Find("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; + 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); + } + + Property::Value* vertex = map->Find("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); + } +} + } //namespace void dali_visual_startup(void) @@ -906,7 +939,7 @@ int UtcDaliVisualGetPropertyMap6(void) value = resultMap.Find(ImageVisual::Property::BORDER, Property::RECTANGLE); DALI_TEST_CHECK(value); - DALI_TEST_CHECK(value->Get >() == border); + DALI_TEST_CHECK(value->Get>() == border); value = resultMap.Find(DevelImageVisual::Property::AUXILIARY_IMAGE, Property::STRING); DALI_TEST_CHECK(value); @@ -947,7 +980,7 @@ int UtcDaliVisualGetPropertyMap6(void) value = resultMap.Find(ImageVisual::Property::BORDER, Property::RECTANGLE); DALI_TEST_CHECK(value); - DALI_TEST_CHECK(value->Get >() == border); + DALI_TEST_CHECK(value->Get>() == border); END_TEST; } @@ -1793,6 +1826,66 @@ int UtcDaliVisualGetPropertyMap13(void) END_TEST; } +int UtcDaliVisualAnimateArcVisual(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliVisualAnimateArcVisual color"); + + static std::vector customUniforms = + { + UniformData("startAngle", Property::Type::FLOAT), + UniformData("sweepAngle", Property::Type::FLOAT), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, DevelVisual::ARC); + propertyMap.Insert(Visual::Property::MIX_COLOR, Color::BLUE); + propertyMap.Insert(DevelArcVisual::Property::START_ANGLE, 0.0f); + propertyMap.Insert(DevelArcVisual::Property::SWEEP_ANGLE, 90.0f); + propertyMap.Insert(DevelArcVisual::Property::CAP, DevelArcVisual::Cap::ROUND); + propertyMap.Insert(DevelArcVisual::Property::THICKNESS, 20.0f); + Visual::Base arcVisual = factory.CreateVisual(propertyMap); + + DummyControl actor = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, arcVisual); + actor.SetProperty(Actor::Property::SIZE, Vector2(2000.f, 2000.f)); + actor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER); + application.GetScene().Add(actor); + + DALI_TEST_EQUALS(actor.GetRendererCount(), 1u, TEST_LOCATION); + + Renderer renderer = actor.GetRendererAt(0); + Property::Index index = renderer.GetPropertyIndex(DevelArcVisual::Property::SWEEP_ANGLE); + + Animation animation = Animation::New(4.0f); + animation.AnimateTo(Property(renderer, index), 50.0f); + animation.AnimateTo(DevelControl::GetVisualProperty(actor, DummyControl::Property::TEST_VISUAL, DevelArcVisual::Property::START_ANGLE), 40.0f); + animation.Play(); + + application.SendNotification(); + application.Render(0); + application.Render(2000u); // halfway point + + float sweepAngle = renderer.GetCurrentProperty(index); + DALI_TEST_EQUALS(sweepAngle, 70.0f, 0.0001f, TEST_LOCATION); + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("startAngle", 20.0f), true, TEST_LOCATION); + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("sweepAngle", 70.0f), true, TEST_LOCATION); + + application.Render(2000u); // another halfway point + + sweepAngle = renderer.GetCurrentProperty(index); + DALI_TEST_EQUALS(sweepAngle, 50.0f, 0.0001f, TEST_LOCATION); + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("startAngle", 40.0f), true, TEST_LOCATION); + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("sweepAngle", 50.0f), true, TEST_LOCATION); + + END_TEST; +} + int UtcDaliVisualAnimateBorderVisual01(void) { ToolkitTestApplication application; @@ -4104,7 +4197,8 @@ int UtcDaliVisualRoundedCorner(void) application.SendNotification(); application.Render(); - DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + // Trigger count is 2 - load & render a frame + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); application.SendNotification(); application.Render(); @@ -4480,7 +4574,8 @@ int UtcDaliVisualBorderline(void) application.SendNotification(); application.Render(); - DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + // Trigger count is 2 - load & render a frame + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); application.SendNotification(); application.Render(); @@ -5512,8 +5607,8 @@ int UtcDaliVisualGetVisualProperty07(void) application.SendNotification(); application.Render(); - // Wait for image loading - DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + // Trigger count is 2 - load & render a frame + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(2), true, TEST_LOCATION); application.SendNotification(); application.Render(); @@ -5606,6 +5701,10 @@ int UtcDaliVisualUpdateProperty(void) Vector3 targetMixColor = Vector3(1.0f, 0.4f, 0.2f); bool targetPreMultipliedAlpha = originalMap[Visual::Property::PREMULTIPLIED_ALPHA].Get() ^ true; DevelVisual::FittingMode targetVisualFittingMode = DevelVisual::CENTER; + Vector4 targetCornerRadius = Vector4(10.0f, 0.0f, 1.0f, 2.0f); + float targetBorderlineWidth = 20.0f; + Vector4 targetBorderlineColor = Color::RED; + float targetBorderlineOffset = 1.0f; Property::Map targetPropertyMap; targetPropertyMap[Visual::Property::OPACITY] = targetOpacity; @@ -5613,6 +5712,10 @@ int UtcDaliVisualUpdateProperty(void) targetPropertyMap[Visual::Property::MIX_COLOR] = targetMixColor; targetPropertyMap[Visual::Property::PREMULTIPLIED_ALPHA] = targetPreMultipliedAlpha; targetPropertyMap[DevelVisual::Property::VISUAL_FITTING_MODE] = targetVisualFittingMode; + targetPropertyMap[DevelVisual::Property::CORNER_RADIUS] = targetCornerRadius; + targetPropertyMap[DevelVisual::Property::BORDERLINE_WIDTH] = targetBorderlineWidth; + targetPropertyMap[DevelVisual::Property::BORDERLINE_COLOR] = targetBorderlineColor; + targetPropertyMap[DevelVisual::Property::BORDERLINE_OFFSET] = targetBorderlineOffset; // Update Properties DevelControl::DoAction(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Action::UPDATE_PROPERTY, targetPropertyMap); @@ -5638,6 +5741,104 @@ int UtcDaliVisualUpdateProperty(void) DALI_TEST_CHECK(visualFittingModeValue); DALI_TEST_EQUALS(visualFittingModeValue->Get(), "CENTER", 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); + + 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(), targetBorderlineColor, TEST_LOCATION); + + Property::Value* borderlineOffsetValue = resultMap.Find(DevelVisual::Property::BORDERLINE_OFFSET, Property::FLOAT); + DALI_TEST_CHECK(borderlineOffsetValue); + DALI_TEST_EQUALS(borderlineOffsetValue->Get(), targetBorderlineOffset, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliVisualUpdatePropertyInvalidType(void) +{ + ToolkitTestApplication application; + tet_infoline("UtcDaliVisualUpdatePropertyInvalidType: Test update property by DoAction. But some value is not invalid to update"); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap[Visual::Property::TYPE] = Visual::Type::N_PATCH; + propertyMap[ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME; + + 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); + + float targetOpacity = 0.5f; + Vector3 targetMixColor = Vector3(1.0f, 0.4f, 0.2f); + bool targetPreMultipliedAlpha = originalMap[Visual::Property::PREMULTIPLIED_ALPHA].Get() ^ true; + DevelVisual::FittingMode targetVisualFittingMode = DevelVisual::CENTER; + Vector4 targetCornerRadius = Vector4(10.0f, 0.0f, 1.0f, 2.0f); + float targetBorderlineWidth = 20.0f; + Vector4 targetBorderlineColor = Color::RED; + float targetBorderlineOffset = 1.0f; + + Property::Map targetPropertyMap; + targetPropertyMap[Visual::Property::OPACITY] = targetOpacity; + targetPropertyMap[ImageVisual::Property::URL] = "foobar"; + targetPropertyMap[Visual::Property::MIX_COLOR] = targetMixColor; + targetPropertyMap[Visual::Property::PREMULTIPLIED_ALPHA] = targetPreMultipliedAlpha; + targetPropertyMap[DevelVisual::Property::VISUAL_FITTING_MODE] = targetVisualFittingMode; + + // Properties that N_PATCH visual could not used. + targetPropertyMap[DevelVisual::Property::CORNER_RADIUS] = targetCornerRadius; + targetPropertyMap[DevelVisual::Property::BORDERLINE_WIDTH] = targetBorderlineWidth; + targetPropertyMap[DevelVisual::Property::BORDERLINE_COLOR] = targetBorderlineColor; + targetPropertyMap[DevelVisual::Property::BORDERLINE_OFFSET] = targetBorderlineOffset; + + // Update Properties + 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* colorValue = resultMap.Find(Visual::Property::MIX_COLOR, Property::VECTOR4); + DALI_TEST_CHECK(colorValue); + DALI_TEST_EQUALS(colorValue->Get(), Vector4(targetMixColor.r, targetMixColor.g, targetMixColor.b, targetOpacity), TEST_LOCATION); + + Property::Value* urlValue = resultMap.Find(ImageVisual::Property::URL, Property::STRING); + DALI_TEST_CHECK(urlValue); + // NOTE : NPatchVisual URL must NOT changed. + DALI_TEST_EQUALS(urlValue->Get(), TEST_NPATCH_FILE_NAME, TEST_LOCATION); + + Property::Value* preMultipliedValue = resultMap.Find(Visual::Property::PREMULTIPLIED_ALPHA, Property::BOOLEAN); + DALI_TEST_CHECK(preMultipliedValue); + DALI_TEST_EQUALS(preMultipliedValue->Get(), targetPreMultipliedAlpha, TEST_LOCATION); + + Property::Value* visualFittingModeValue = resultMap.Find(DevelVisual::Property::VISUAL_FITTING_MODE, Property::STRING); + DALI_TEST_CHECK(visualFittingModeValue); + DALI_TEST_EQUALS(visualFittingModeValue->Get(), "CENTER", TEST_LOCATION); + + // We don't check properties value that N_PATCH visual could not used. + // It is undefined. + END_TEST; } @@ -5671,27 +5872,14 @@ int UtcDaliVisualUpdatePropertyChangeShader01(void) application.SendNotification(); application.Render(); - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos); - } + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BORDERLINE", false}, + {"#define IS_REQUIRED_ROUNDED_CORNER", false}, + }, + TEST_LOCATION); + callStack.Reset(); callStack.Enable(true); @@ -5716,27 +5904,13 @@ int UtcDaliVisualUpdatePropertyChangeShader01(void) DALI_TEST_CHECK(cornerRadiusPolicyValue); DALI_TEST_EQUALS(cornerRadiusPolicyValue->Get(), static_cast(Toolkit::Visual::Transform::Policy::RELATIVE), TEST_LOCATION); - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - } + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BORDERLINE", false}, + {"#define IS_REQUIRED_ROUNDED_CORNER", true}, + }, + TEST_LOCATION); // Send shader compile signal application.SendNotification(); @@ -5786,29 +5960,13 @@ int UtcDaliVisualUpdatePropertyChangeShader01(void) DALI_TEST_CHECK(borderlineOffsetValue); DALI_TEST_EQUALS(borderlineOffsetValue->Get(), targetBorderlineOffset, TEST_LOCATION); - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") != std::string::npos); - // Note : mAlwaysUsingCornerRadius is true. - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") != std::string::npos); - // Note : mAlwaysUsingCornerRadius is true. - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - } + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BORDERLINE", true}, + {"#define IS_REQUIRED_ROUNDED_CORNER", true}, // Note : mAlwaysUsingCornerRadius is true. + }, + TEST_LOCATION); // Send shader compile signal application.SendNotification(); @@ -5854,29 +6012,13 @@ int UtcDaliVisualUpdatePropertyChangeShader01(void) DALI_TEST_CHECK(borderlineOffsetValue); DALI_TEST_EQUALS(borderlineOffsetValue->Get(), 0.0f, TEST_LOCATION); - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - // Note : mAlwaysUsingBorderline and mAlwaysUsingCornerRadius is true. - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") != std::string::npos); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - // Note : mAlwaysUsingBorderline and mAlwaysUsingCornerRadius is true. - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") != std::string::npos); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - } + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BORDERLINE", true}, // Note : mAlwaysUsingBorderline is true. + {"#define IS_REQUIRED_ROUNDED_CORNER", true}, // Note : mAlwaysUsingCornerRadius is true. + }, + TEST_LOCATION); // Send shader compile signal application.SendNotification(); @@ -5919,27 +6061,13 @@ int UtcDaliVisualUpdatePropertyChangeShader02(void) application.SendNotification(); application.Render(); - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos); - } + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BORDERLINE", false}, + {"#define IS_REQUIRED_ROUNDED_CORNER", false}, + }, + TEST_LOCATION); Vector4 targetCornerRadius = Vector4(0.0f, 0.0f, 0.0f, 0.0f); @@ -5960,29 +6088,13 @@ int UtcDaliVisualUpdatePropertyChangeShader02(void) DALI_TEST_CHECK(cornerRadiusValue); DALI_TEST_EQUALS(cornerRadiusValue->Get(), targetCornerRadius, TEST_LOCATION); - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - // Note : corner radius is zero. so we don't change shader! - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - // Note : corner radius is zero. so we don't change shader! - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos); - } + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BORDERLINE", false}, + {"#define IS_REQUIRED_ROUNDED_CORNER", false}, // Note : corner radius is zero. so we don't change shader! + }, + TEST_LOCATION); // Send shader compile signal application.SendNotification(); @@ -6023,29 +6135,13 @@ int UtcDaliVisualUpdatePropertyChangeShader02(void) DALI_TEST_CHECK(borderlineOffsetValue); DALI_TEST_EQUALS(borderlineOffsetValue->Get(), targetBorderlineOffset, TEST_LOCATION); - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - // Note : borderline width is zero. so we don't change shader! - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - // Note : borderline width is zero. so we don't change shader! - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos); - } + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BORDERLINE", false}, // Note : borderline width is zero. so we don't change shader! + {"#define IS_REQUIRED_ROUNDED_CORNER", false}, + }, + TEST_LOCATION); // Send shader compile signal application.SendNotification(); @@ -6086,29 +6182,14 @@ int UtcDaliVisualUpdatePropertyChangeShader03(void) application.SendNotification(); application.Render(); - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BLUR 1") == std::string::npos); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BLUR 1") == std::string::npos); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") == std::string::npos); - } + 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); @@ -6136,31 +6217,14 @@ int UtcDaliVisualUpdatePropertyChangeShader03(void) DALI_TEST_CHECK(cornerRadiusValue); DALI_TEST_EQUALS(cornerRadiusValue->Get(), targetCornerRadius, TEST_LOCATION); - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BLUR 1") != std::string::npos); - // Note : We ignore borderline when blur radius occured - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BLUR 1") != std::string::npos); - // Note : We ignore borderline when blur radius occured - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - } + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BLUR", true}, + {"#define IS_REQUIRED_BORDERLINE", false}, // Note : We ignore borderline when blur radius occured + {"#define IS_REQUIRED_ROUNDED_CORNER", true}, + }, + TEST_LOCATION); // Send shader compile signal application.SendNotification(); @@ -6193,33 +6257,14 @@ int UtcDaliVisualUpdatePropertyChangeShader03(void) DALI_TEST_CHECK(cornerRadiusValue); DALI_TEST_EQUALS(cornerRadiusValue->Get(), Vector4::ZERO, TEST_LOCATION); - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - // Note : mAlwaysUsingBlurRadius and mAlwaysUsingCornerRadius is true. - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BLUR 1") != std::string::npos); - // Note : We ignore borderline when blur radius occured - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - // Note : mAlwaysUsingBlurRadius and mAlwaysUsingCornerRadius is true. - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BLUR 1") != std::string::npos); - // Note : We ignore borderline when blur radius occured - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - } + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BLUR", true}, // Note : mAlwaysUsingBlurRadius is true. + {"#define IS_REQUIRED_BORDERLINE", false}, // Note : We ignore borderline when blur radius occured + {"#define IS_REQUIRED_ROUNDED_CORNER", true}, // Note : mAlwaysUsingCornerRadius is true. + }, + TEST_LOCATION); // Send shader compile signal application.SendNotification(); @@ -6264,27 +6309,14 @@ int UtcDaliVisualUpdatePropertyChangeShader04(void) application.SendNotification(); application.Render(); - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - } + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BORDERLINE", false}, + {"#define IS_REQUIRED_ROUNDED_CORNER", true}, + }, + TEST_LOCATION); + callStack.Reset(); callStack.Enable(true); @@ -6298,29 +6330,14 @@ int UtcDaliVisualUpdatePropertyChangeShader04(void) application.Render(); application.Render(1001u); // End of animation - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - // Note : mAlwaysUsingCornerRadius is true. - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") == std::string::npos); - // Note : mAlwaysUsingCornerRadius is true. - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - } + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BORDERLINE", false}, + {"#define IS_REQUIRED_ROUNDED_CORNER", true}, // Note : mAlwaysUsingCornerRadius is true. + }, + TEST_LOCATION); + callStack.Enable(false); // Shader not changed DALI_TEST_CHECK(!callStack.FindMethod("CreateShader")); @@ -6350,29 +6367,13 @@ int UtcDaliVisualUpdatePropertyChangeShader04(void) DALI_TEST_CHECK(borderlineWidthValue); DALI_TEST_EQUALS(borderlineWidthValue->Get(), targetBorderlineWidth, TEST_LOCATION); - // Get shader - { - Renderer renderer = dummyControl.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* fragment = map->Find("fragment"); // fragment key name from shader-impl.cpp - DALI_TEST_CHECK(fragment); - std::string fragmentShader; - DALI_TEST_CHECK(fragment->Get(fragmentShader)); - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_BORDERLINE 1") != std::string::npos); - // Note : mAlwaysUsingCornerRadius is true. - DALI_TEST_CHECK(fragmentShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - - Property::Value* vertex = map->Find("vertex"); // vertex key name from shader-impl.cpp - std::string vertexShader; - DALI_TEST_CHECK(vertex->Get(vertexShader)); - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_BORDERLINE 1") != std::string::npos); - // Note : mAlwaysUsingCornerRadius is true. - DALI_TEST_CHECK(vertexShader.find("#define IS_REQUIRED_ROUNDED_CORNER 1") != std::string::npos); - } + TestShaderCodeContainSubstrings( + dummyControl, + { + {"#define IS_REQUIRED_BORDERLINE", true}, + {"#define IS_REQUIRED_ROUNDED_CORNER", true}, // Note : mAlwaysUsingCornerRadius is true. + }, + TEST_LOCATION); // Send shader compile signal application.SendNotification();