X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-TextEditor.cpp;h=fac21a0dc59a87f342ec888d228566eeea6244d6;hb=HEAD;hp=81f69a7aefbbfa15a9a34df2b42ff380d726672c;hpb=f8c5751dd0c375ecbfafa72b7c1ac36fe3d060fd;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 81f69a7..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 #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; @@ -2166,7 +2384,7 @@ int utcDaliTextEditorEvent03(void) application.Render(); // Send some taps and check text controller with clipboard window - Dali::TextClipboard clipboard = TextClipboard::Get(); + Dali::Clipboard clipboard = Clipboard::Get(); clipboard.ShowClipboard(); TestGenerateTap(application, 3.0f, 25.0f, 100); clipboard.HideClipboard(); @@ -5161,7 +5379,6 @@ int utcDaliTextEditorGeometryNullPtr(void) END_TEST; } - int utcDaliTextEditorSelectionClearedSignal(void) { ToolkitTestApplication application; @@ -6393,7 +6610,6 @@ int utcDaliTextEditorPanGesturePropagation(void) DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); - END_TEST; } @@ -6420,13 +6636,40 @@ int utcDaliTextEditorGetTextBoundingRectangle(void) application.SendNotification(); application.Render(); - unsigned int startIndex = 0; - unsigned int endIndex = 15; + unsigned int startIndex = 0; + unsigned int endIndex = 15; - Rect<> textBoundingRectangle = DevelTextEditor::GetTextBoundingRectangle(editor, startIndex, endIndex); + Rect<> textBoundingRectangle = DevelTextEditor::GetTextBoundingRectangle(editor, startIndex, endIndex); Rect<> expectedTextBoundingRectangle = {0, 0, 100, 50}; TestTextGeometryUtils::CheckRectGeometryResult(textBoundingRectangle, expectedTextBoundingRectangle); END_TEST; -} \ No newline at end of file +} + +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; +}