X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-TextEditor.cpp;h=88a3ef3cc5df06f94eb787e6c292932e4fe86f8b;hb=HEAD;hp=fac21a0dc59a87f342ec888d228566eeea6244d6;hpb=9d379104c45c7979f7dcd1ef2f9df84e8cc902c1;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp index fac21a0..6a5745c 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextEditor.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. @@ -18,15 +18,15 @@ #include #include #include +#include #include #include -#include #include #include #include -#include #include +#include #include #include #include @@ -117,6 +117,9 @@ const char* const PROPERTY_NAME_ENABLE_GRAB_HANDLE_POPUP = "enableGrabHan const char* const PROPERTY_NAME_INPUT_METHOD_SETTINGS = "inputMethodSettings"; const char* const PROPERTY_NAME_INPUT_FILTER = "inputFilter"; +const char* const PROPERTY_NAME_REMOVE_FRONT_INSET = "removeFrontInset"; +const char* const PROPERTY_NAME_REMOVE_BACK_INSET = "removeBackInset"; + const Vector4 PLACEHOLDER_TEXT_COLOR(0.8f, 0.8f, 0.8f, 0.8f); const Dali::Vector4 LIGHT_BLUE(0.75f, 0.96f, 1.f, 1.f); // The text highlight color. @@ -391,7 +394,6 @@ public: bool& mFinishedCalled; }; - // Stores data that is populated in the callback and will be read by the test cases struct SignalData { @@ -441,7 +443,6 @@ struct GestureReceivedFunctor SignalData& signalData; }; - } // namespace int UtcDaliToolkitTextEditorConstructorP(void) @@ -636,6 +637,8 @@ int UtcDaliTextEditorGetPropertyP(void) DALI_TEST_CHECK(editor.GetPropertyIndex(PROPERTY_NAME_STRIKETHROUGH) == DevelTextEditor::Property::STRIKETHROUGH); DALI_TEST_CHECK(editor.GetPropertyIndex(PROPERTY_NAME_INPUT_STRIKETHROUGH) == DevelTextEditor::Property::INPUT_STRIKETHROUGH); DALI_TEST_CHECK(editor.GetPropertyIndex(PROPERTY_NAME_SELECTION_POPUP_STYLE) == DevelTextEditor::Property::SELECTION_POPUP_STYLE); + DALI_TEST_CHECK(editor.GetPropertyIndex(PROPERTY_NAME_REMOVE_FRONT_INSET) == DevelTextEditor::Property::REMOVE_FRONT_INSET); + DALI_TEST_CHECK(editor.GetPropertyIndex(PROPERTY_NAME_REMOVE_BACK_INSET) == DevelTextEditor::Property::REMOVE_BACK_INSET); END_TEST; } @@ -1039,6 +1042,8 @@ int UtcDaliTextEditorSetPropertyP(void) outlineMapSet["color"] = Color::RED; outlineMapSet["width"] = 2.0f; + outlineMapSet["offset"] = Vector2(0.0f, 0.0f); + outlineMapSet["blurRadius"] = 0.0f; editor.SetProperty(TextEditor::Property::OUTLINE, outlineMapSet); @@ -1267,6 +1272,18 @@ int UtcDaliTextEditorSetPropertyP(void) editor.SetProperty(DevelTextEditor::Property::MIN_LINE_SIZE, 50.f); DALI_TEST_EQUALS(editor.GetProperty(DevelTextEditor::Property::MIN_LINE_SIZE), 50.0f, Math::MACHINE_EPSILON_1000, TEST_LOCATION); + // Check Remove Front/Back Inset Property + DALI_TEST_CHECK(editor.GetProperty(DevelTextEditor::Property::REMOVE_FRONT_INSET)); + editor.SetProperty(DevelTextEditor::Property::REMOVE_FRONT_INSET, false); + DALI_TEST_CHECK(!editor.GetProperty(DevelTextEditor::Property::REMOVE_FRONT_INSET)); + + DALI_TEST_CHECK(editor.GetProperty(DevelTextEditor::Property::REMOVE_BACK_INSET)); + editor.SetProperty(DevelTextEditor::Property::REMOVE_BACK_INSET, false); + DALI_TEST_CHECK(!editor.GetProperty(DevelTextEditor::Property::REMOVE_BACK_INSET)); + + application.SendNotification(); + application.Render(); + END_TEST; } @@ -1922,6 +1939,207 @@ int utcDaliTextEditorInputStyleChanged02(void) END_TEST; } +int utcDaliTextEditorInputStyleChanged03(void) +{ + // Test InputStyleCahnged signal emitted even if AddIdle failed. + ToolkitTestApplication application; + tet_infoline(" utcDaliTextEditorInputStyleChanged03"); + + // Load some fonts. + + char* pathNamePtr = get_current_dir_name(); + const std::string pathName(pathNamePtr); + free(pathNamePtr); + + TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); + fontClient.SetDpi(93u, 93u); + + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/dejavu/DejaVuSerif.ttf", DEFAULT_FONT_SIZE); + fontClient.GetFontId(pathName + DEFAULT_FONT_DIR + "/dejavu/DejaVuSerif-Bold.ttf", DEFAULT_FONT_SIZE); + + TextEditor editor = TextEditor::New(); + DALI_TEST_CHECK(editor); + + editor.SetProperty(Actor::Property::SIZE, Vector2(300.f, 50.f)); + editor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT); + editor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + + editor.SetProperty(TextEditor::Property::ENABLE_MARKUP, true); + editor.SetProperty(TextEditor::Property::TEXT, "Hello world demo"); + + // connect to the text changed signal. + ConnectionTracker* testTracker = new ConnectionTracker(); + editor.InputStyleChangedSignal().Connect(&TestInputStyleChangedCallback); + bool inputStyleChangedSignal = false; + editor.ConnectSignal(testTracker, "inputStyleChanged", CallbackFunctor(&inputStyleChangedSignal)); + + application.GetScene().Add(editor); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Executes the idle callbacks added by the text control on the change of input style. + application.RunIdles(); + + gInputStyleChangedCallbackCalled = false; + gInputStyleMask = TextEditor::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Create a tap event to touch the text editor. + TestGenerateTap(application, 18.0f, 25.0f); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Executes the idle callbacks added by the text control on the change of input style. + application.RunIdles(); + + DALI_TEST_CHECK(gInputStyleChangedCallbackCalled); + if(gInputStyleChangedCallbackCalled) + { + DALI_TEST_EQUALS(static_cast(gInputStyleMask), static_cast(TextEditor::InputStyle::FONT_FAMILY | TextEditor::InputStyle::POINT_SIZE), TEST_LOCATION); + + const std::string fontFamily = editor.GetProperty(TextEditor::Property::INPUT_FONT_FAMILY).Get(); + DALI_TEST_EQUALS(fontFamily, "DejaVuSerif", TEST_LOCATION); + + const float pointSize = editor.GetProperty(TextEditor::Property::INPUT_POINT_SIZE).Get(); + DALI_TEST_EQUALS(pointSize, 18.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION); + } + DALI_TEST_CHECK(inputStyleChangedSignal); + + gInputStyleChangedCallbackCalled = false; + gInputStyleMask = TextEditor::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Create a tap event to touch the text editor. + TestGenerateTap(application, 30.0f, 25.0f); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Executes the idle callbacks added by the text control on the change of input style. + application.RunIdles(); + + DALI_TEST_CHECK(!gInputStyleChangedCallbackCalled); + DALI_TEST_CHECK(!inputStyleChangedSignal); + + gInputStyleChangedCallbackCalled = false; + gInputStyleMask = TextEditor::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Create a tap event to touch the text editor. + TestGenerateTap(application, 43.0f, 25.0f); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Executes the idle callbacks added by the text control on the change of input style. + application.RunIdles(); + + DALI_TEST_CHECK(gInputStyleChangedCallbackCalled); + if(gInputStyleChangedCallbackCalled) + { + DALI_TEST_EQUALS(static_cast(gInputStyleMask), static_cast(TextEditor::InputStyle::COLOR), TEST_LOCATION); + + const Vector4 color = editor.GetProperty(TextEditor::Property::INPUT_COLOR).Get(); + DALI_TEST_EQUALS(color, Color::GREEN, TEST_LOCATION); + } + DALI_TEST_CHECK(inputStyleChangedSignal); + + gInputStyleChangedCallbackCalled = false; + gInputStyleMask = TextEditor::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Make AddIdle return false. + ToolkitApplication::ADD_IDLE_SUCCESS = false; + + // Create a tap event to touch the text editor. + TestGenerateTap(application, 88.0f, 25.0f); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Execute the idle callbacks. + // And check whether we didn't change of input style. + application.RunIdles(); + + DALI_TEST_CHECK(!gInputStyleChangedCallbackCalled); + DALI_TEST_CHECK(!inputStyleChangedSignal); + + gInputStyleChangedCallbackCalled = false; + gInputStyleMask = TextEditor::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Create a tap event to touch the text editor. + TestGenerateTap(application, 115.0f, 25.0f); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Execute the idle callbacks. + // And check whether we didn't change of input style. + application.RunIdles(); + + DALI_TEST_CHECK(!gInputStyleChangedCallbackCalled); + DALI_TEST_CHECK(!inputStyleChangedSignal); + + gInputStyleChangedCallbackCalled = false; + gInputStyleMask = TextEditor::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Revert AddIdle return true. + ToolkitApplication::ADD_IDLE_SUCCESS = true; + + // Create a tap event to touch the text editor. + TestGenerateTap(application, 164.0f, 25.0f); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Executes the idle callbacks added by the text control on the change of input style. + application.RunIdles(); + + DALI_TEST_CHECK(gInputStyleChangedCallbackCalled); + if(gInputStyleChangedCallbackCalled) + { + DALI_TEST_EQUALS(static_cast(gInputStyleMask), static_cast(TextEditor::InputStyle::FONT_STYLE), TEST_LOCATION); + + Property::Map fontStyleMapSet; + Property::Map fontStyleMapGet; + + fontStyleMapGet = editor.GetProperty(TextEditor::Property::INPUT_FONT_STYLE); + DALI_TEST_EQUALS(fontStyleMapGet.Count(), fontStyleMapSet.Count(), TEST_LOCATION); + DALI_TEST_EQUALS(DaliTestCheckMaps(fontStyleMapGet, fontStyleMapSet), true, TEST_LOCATION); + } + DALI_TEST_CHECK(inputStyleChangedSignal); + + gInputStyleChangedCallbackCalled = false; + gInputStyleMask = TextEditor::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Create a tap event to touch the text editor. + TestGenerateTap(application, 191.0f, 25.0f); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Executes the idle callbacks added by the text control on the change of input style. + application.RunIdles(); + + DALI_TEST_CHECK(!gInputStyleChangedCallbackCalled); + DALI_TEST_CHECK(!inputStyleChangedSignal); + + END_TEST; +} + int utcDaliTextEditorEvent01(void) { ToolkitTestApplication application; @@ -4867,11 +5085,11 @@ int utcDaliTextEditorGeometryEllipsisStart(void) Vector expectedSizes; Vector expectedPositions; - expectedPositions.PushBack(Vector2(37, 0)); - expectedSizes.PushBack(Vector2(20, 25)); + expectedPositions.PushBack(Vector2(38, 0)); + expectedSizes.PushBack(Vector2(21, 25)); expectedPositions.PushBack(Vector2(-1, 25)); - expectedSizes.PushBack(Vector2(52, 25)); + expectedSizes.PushBack(Vector2(53, 25)); TestTextGeometryUtils::CheckGeometryResult(positionsList, sizeList, expectedPositions, expectedSizes); @@ -4919,10 +5137,10 @@ int utcDaliTextEditorGeometryEllipsisMiddle(void) Vector expectedPositions; expectedPositions.PushBack(Vector2(-1, 0)); - expectedSizes.PushBack(Vector2(25, 25)); + expectedSizes.PushBack(Vector2(26, 25)); expectedPositions.PushBack(Vector2(-1, 25)); - expectedSizes.PushBack(Vector2(52, 25)); + expectedSizes.PushBack(Vector2(53, 25)); TestTextGeometryUtils::CheckGeometryResult(positionsList, sizeList, expectedPositions, expectedSizes); @@ -4970,10 +5188,10 @@ int utcDaliTextEditorGeometryEllipsisEnd(void) Vector expectedPositions; expectedPositions.PushBack(Vector2(-1, 0)); - expectedSizes.PushBack(Vector2(59, 25)); + expectedSizes.PushBack(Vector2(60, 25)); expectedPositions.PushBack(Vector2(-1, 25)); - expectedSizes.PushBack(Vector2(38, 25)); + expectedSizes.PushBack(Vector2(39, 25)); TestTextGeometryUtils::CheckGeometryResult(positionsList, sizeList, expectedPositions, expectedSizes); @@ -5017,16 +5235,16 @@ int utcDaliTextEditorGeometryRTL(void) Vector expectedSizes; Vector expectedPositions; - expectedPositions.PushBack(Vector2(24, 0)); - expectedSizes.PushBack(Vector2(33, 25)); + expectedPositions.PushBack(Vector2(25, 0)); + expectedSizes.PushBack(Vector2(34, 25)); expectedPositions.PushBack(Vector2(-1, 25)); - expectedSizes.PushBack(Vector2(52, 25)); + expectedSizes.PushBack(Vector2(53, 25)); expectedPositions.PushBack(Vector2(-1, 50)); - expectedSizes.PushBack(Vector2(59, 25)); + expectedSizes.PushBack(Vector2(60, 25)); - expectedPositions.PushBack(Vector2(61, 75)); + expectedPositions.PushBack(Vector2(63, 75)); expectedSizes.PushBack(Vector2(37, 25)); TestTextGeometryUtils::CheckGeometryResult(positionsList, sizeList, expectedPositions, expectedSizes); @@ -5072,7 +5290,7 @@ int utcDaliTextEditorGeometryGlyphMiddle(void) Vector expectedPositions; expectedPositions.PushBack(Vector2(6, 0)); - expectedSizes.PushBack(Vector2(124, 25)); + expectedSizes.PushBack(Vector2(125, 25)); TestTextGeometryUtils::CheckGeometryResult(positionsList, sizeList, expectedPositions, expectedSizes); @@ -5161,7 +5379,6 @@ int utcDaliTextEditorGeometryNullPtr(void) END_TEST; } - int utcDaliTextEditorSelectionClearedSignal(void) { ToolkitTestApplication application; @@ -6393,6 +6610,66 @@ int utcDaliTextEditorPanGesturePropagation(void) DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); + END_TEST; +} + +int utcDaliTextEditorGetTextBoundingRectangle(void) +{ + ToolkitTestApplication application; + tet_infoline(" utcDaliTextEditorGeometryEllipsisMiddle"); + + TextEditor editor = TextEditor::New(); + DALI_TEST_CHECK(editor); + + application.GetScene().Add(editor); + + editor.SetProperty(TextEditor::Property::POINT_SIZE, 7.f); + editor.SetProperty(Actor::Property::SIZE, Vector2(100.f, 50.f)); + editor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT); + editor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + editor.SetProperty(TextEditor::Property::TEXT, "Hello this is the Text Bounding Rectangle TC"); + + // Avoid a crash when core load gl resources. + application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE); + + // Render and notify + application.SendNotification(); + application.Render(); + + unsigned int startIndex = 0; + unsigned int endIndex = 15; + + Rect<> textBoundingRectangle = DevelTextEditor::GetTextBoundingRectangle(editor, startIndex, endIndex); + Rect<> expectedTextBoundingRectangle = {0, 0, 100, 50}; + + TestTextGeometryUtils::CheckRectGeometryResult(textBoundingRectangle, expectedTextBoundingRectangle); END_TEST; } + +int utcDaliTextEditorRemoveFrontInset(void) +{ + ToolkitTestApplication application; + tet_infoline(" utcDaliTextEditorRemoveFrontInset"); + TextEditor editor = TextEditor::New(); + DALI_TEST_CHECK(editor); + application.GetScene().Add(editor); + application.SendNotification(); + application.Render(); + DevelTextEditor::SetRemoveFrontInset(editor, false); + DALI_TEST_CHECK(!DevelTextEditor::IsRemoveFrontInset(editor)); + END_TEST; +} +int utcDaliTextEditorRemoveBackInset(void) +{ + ToolkitTestApplication application; + tet_infoline(" utcDaliTextEditorRemoveBackInset"); + TextEditor editor = TextEditor::New(); + DALI_TEST_CHECK(editor); + application.GetScene().Add(editor); + application.SendNotification(); + application.Render(); + DevelTextEditor::SetRemoveBackInset(editor, false); + DALI_TEST_CHECK(!DevelTextEditor::IsRemoveBackInset(editor)); + END_TEST; +}