X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-TextField.cpp;h=ccc6bb3ca880794eef1233b6c7fc91b3bb0d574f;hb=9931aa907c307c6cf79923e4b52462996c475dfa;hp=357e4565127b57f033b0275006f4589cfed61cd5;hpb=557926c429fa6d9f4fad47e45caa7cf71644d57b;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp index 357e456..ccc6bb3 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextField.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. @@ -19,7 +19,6 @@ #include #include - #include #include #include @@ -170,8 +169,8 @@ static void LoadMarkerImages(ToolkitTestApplication& app, TextField textField) textField.SetProperty(Toolkit::TextField::Property::SELECTION_HANDLE_PRESSED_IMAGE_RIGHT, propertyMap); textField.SetProperty(Toolkit::TextField::Property::SELECTION_HANDLE_MARKER_IMAGE_LEFT, propertyMap); textField.SetProperty(Toolkit::TextField::Property::SELECTION_HANDLE_MARKER_IMAGE_RIGHT, propertyMap); - textField.SetProperty(Toolkit::TextField::Property::GRAB_HANDLE_IMAGE, propertyMap); - textField.SetProperty(Toolkit::TextField::Property::GRAB_HANDLE_PRESSED_IMAGE, propertyMap); + textField.SetProperty(Toolkit::TextField::Property::GRAB_HANDLE_IMAGE, "image.png"); + textField.SetProperty(Toolkit::TextField::Property::GRAB_HANDLE_PRESSED_IMAGE, "image.png"); } /* @@ -406,7 +405,6 @@ bool DaliTestCheckMaps(const Property::Map& fontStyleMapGet, const Property::Map return true; } - // Stores data that is populated in the callback and will be read by the test cases struct SignalData { @@ -1820,16 +1818,16 @@ int utcDaliTextFieldInputFilterWithInputMethodContext(void) // input text gInputFilteredAcceptedCallbackCalled = false; - imfEvent = InputMethodContext::EventData(InputMethodContext::COMMIT, "Hello1234", 0, 9); + imfEvent = InputMethodContext::EventData(InputMethodContext::COMMIT, "Hello1234", 0, 9); inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent); application.SendNotification(); application.Render(); DALI_TEST_CHECK(gInputFilteredAcceptedCallbackCalled); DALI_TEST_EQUALS(field.GetProperty(TextField::Property::TEXT), std::string("1234"), TEST_LOCATION); - inputFilteredSignal = false; + inputFilteredSignal = false; gInputFilteredRejectedCallbackCalled = false; - imfEvent = InputMethodContext::EventData(InputMethodContext::COMMIT, "1234567", 0, 7); + imfEvent = InputMethodContext::EventData(InputMethodContext::COMMIT, "1234567", 0, 7); inputMethodContext.EventReceivedSignal().Emit(inputMethodContext, imfEvent); application.SendNotification(); application.Render(); @@ -2480,6 +2478,203 @@ int utcDaliTextFieldInputStyleChanged02(void) END_TEST; } +int utcDaliTextFieldInputStyleChanged03(void) +{ + // Test InputStyleCahnged signal emitted even if AddIdle failed. + ToolkitTestApplication application; + tet_infoline(" utcDaliTextFieldInputStyleChanged03"); + + // 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); + + TextField field = TextField::New(); + DALI_TEST_CHECK(field); + + field.SetProperty(Actor::Property::SIZE, Vector2(300.f, 50.f)); + field.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT); + field.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + + field.SetProperty(TextField::Property::ENABLE_MARKUP, true); + field.SetProperty(TextField::Property::TEXT, "Hello world demo"); + + // connect to the text changed signal. + ConnectionTracker* testTracker = new ConnectionTracker(); + field.InputStyleChangedSignal().Connect(&TestInputStyleChangedCallback); + bool inputStyleChangedSignal = false; + field.ConnectSignal(testTracker, "inputStyleChanged", CallbackFunctor(&inputStyleChangedSignal)); + + application.GetScene().Add(field); + + // 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 = TextField::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Create a tap event to touch the text field. + 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(TextField::InputStyle::FONT_FAMILY | TextField::InputStyle::POINT_SIZE), TEST_LOCATION); + + const std::string fontFamily = field.GetProperty(TextField::Property::INPUT_FONT_FAMILY).Get(); + DALI_TEST_EQUALS(fontFamily, "DejaVuSerif", TEST_LOCATION); + + const float pointSize = field.GetProperty(TextField::Property::INPUT_POINT_SIZE).Get(); + DALI_TEST_EQUALS(pointSize, 18.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION); + } + DALI_TEST_CHECK(inputStyleChangedSignal); + + gInputStyleChangedCallbackCalled = false; + gInputStyleMask = TextField::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Create a tap event to touch the text field. + 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 = TextField::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Create a tap event to touch the text field. + 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(TextField::InputStyle::COLOR), TEST_LOCATION); + + const Vector4 color = field.GetProperty(TextField::Property::INPUT_COLOR).Get(); + DALI_TEST_EQUALS(color, Color::GREEN, TEST_LOCATION); + } + DALI_TEST_CHECK(inputStyleChangedSignal); + + gInputStyleChangedCallbackCalled = false; + gInputStyleMask = TextField::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Make AddIdle return false. + ToolkitApplication::ADD_IDLE_SUCCESS = false; + + // Create a tap event to touch the text field. + 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 = TextField::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Create a tap event to touch the text field. + 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 = TextField::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Revert AddIdle return true. + ToolkitApplication::ADD_IDLE_SUCCESS = true; + + // Create a tap event to touch the text field. + 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(TextField::InputStyle::FONT_STYLE), TEST_LOCATION); + + const std::string style = field.GetProperty(TextField::Property::INPUT_FONT_STYLE).Get(); + DALI_TEST_CHECK(style.empty()); + } + DALI_TEST_CHECK(inputStyleChangedSignal); + + gInputStyleChangedCallbackCalled = false; + gInputStyleMask = TextField::InputStyle::NONE; + inputStyleChangedSignal = false; + + // Create a tap event to touch the text field. + 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 utcDaliTextFieldEvent01(void) { ToolkitTestApplication application; @@ -2832,6 +3027,10 @@ int utcDaliTextFieldEvent04(void) // Tap grab handle TestGenerateTap(application, 0.0f, 40.0f); + + field.SetProperty(TextField::Property::POINT_SIZE, 12.f); + DALI_TEST_EQUALS(field.GetProperty(TextField::Property::INPUT_POINT_SIZE), 12.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION); + END_TEST; } @@ -2981,8 +3180,9 @@ int utcDaliTextFieldEvent08(void) ToolkitTestApplication application; tet_infoline(" utcDaliTextFieldEvent08"); - Dali::TextClipboard clipboard = TextClipboard::Get(); - clipboard.SetItem("testTextFieldEvent"); + Dali::Clipboard clipboard = Clipboard::Get(); + Dali::Clipboard::ClipData data("text/plain;charset=utf-8", "testTextFieldEvent"); + clipboard.SetData(data); // Checks Longpress when only place holder text @@ -4789,7 +4989,7 @@ int utcDaliTextFieldGeometryEllipsisStart(void) Vector expectedPositions; expectedPositions.PushBack(Vector2(14, 0)); - expectedSizes.PushBack(Vector2(106, 25)); + expectedSizes.PushBack(Vector2(107, 25)); TestTextGeometryUtils::CheckGeometryResult(positionsList, sizeList, expectedPositions, expectedSizes); @@ -4836,7 +5036,7 @@ int utcDaliTextFieldGeometryEllipsisEnd(void) Vector expectedPositions; expectedPositions.PushBack(Vector2(-2, 0)); - expectedSizes.PushBack(Vector2(122, 25)); + expectedSizes.PushBack(Vector2(123, 25)); TestTextGeometryUtils::CheckGeometryResult(positionsList, sizeList, expectedPositions, expectedSizes); @@ -4881,7 +5081,7 @@ int utcDaliTextFieldGeometryRTL(void) Vector expectedPositions; expectedPositions.PushBack(Vector2(38, 0)); - expectedSizes.PushBack(Vector2(73, 25)); + expectedSizes.PushBack(Vector2(75, 25)); TestTextGeometryUtils::CheckGeometryResult(positionsList, sizeList, expectedPositions, expectedSizes); @@ -4926,14 +5126,13 @@ int utcDaliTextFieldGeometryGlyphMiddle(void) Vector expectedPositions; expectedPositions.PushBack(Vector2(6, 0)); - expectedSizes.PushBack(Vector2(124, 25)); + expectedSizes.PushBack(Vector2(125, 25)); TestTextGeometryUtils::CheckGeometryResult(positionsList, sizeList, expectedPositions, expectedSizes); END_TEST; } - int utcDaliTextFieldGeometryNullPtr(void) { ToolkitTestApplication application; @@ -5783,7 +5982,6 @@ int utcDaliTextFieldPanGesturePropagation(void) DALI_TEST_EQUALS(true, data.functorCalled, TEST_LOCATION); data.Reset(); - END_TEST; } @@ -5810,13 +6008,79 @@ int utcDaliTextFieldGetTextBoundingRectangle(void) application.SendNotification(); application.Render(); - unsigned int startIndex = 0; - unsigned int endIndex = 15; + unsigned int startIndex = 0; + unsigned int endIndex = 15; - Rect<> textBoundingRectangle = DevelTextField::GetTextBoundingRectangle(field, startIndex, endIndex); + Rect<> textBoundingRectangle = DevelTextField::GetTextBoundingRectangle(field, startIndex, endIndex); Rect<> expectedTextBoundingRectangle = {0, 0, 100, 25}; TestTextGeometryUtils::CheckRectGeometryResult(textBoundingRectangle, expectedTextBoundingRectangle); END_TEST; +} + +int utcDaliTextFieldDecoratorColor(void) +{ + ToolkitTestApplication application; + tet_infoline(" utcDaliTextFieldDecoratorColor"); + TextField textField = TextField::New(); + DALI_TEST_CHECK(textField); + LoadMarkerImages(application, textField); + application.GetScene().Add(textField); + + // Render and notify + application.SendNotification(); + application.Render(); + + textField.SetProperty(TextField::Property::TEXT, "العالم Hello"); + textField.SetProperty(TextField::Property::POINT_SIZE, 10.f); + textField.SetProperty(Actor::Property::SIZE, Vector2(300.f, 50.f)); + textField.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT); + textField.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT); + + // Avoid a crash when core load gl resources. + application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE); + + application.SendNotification(); + application.Render(); + + textField.SetKeyInputFocus(); + + application.SendNotification(); + application.Render(); + + // Create a tap event to touch the text field. + TestGenerateTap(application, 1.0f, 25.0f, 100); + + // Render and notify + application.SendNotification(); + application.Render(); + + // Double tap to select a word. + TestGenerateTap(application, 1.0f, 25.0f, 200); + + application.SendNotification(); + application.Render(); + + // At this point, the text decorator's primary/secondary cursor, grab/left/right handle and highlight actor were all created. + // Check some properties for coverage. + textField.SetProperty(TextField::Property::PRIMARY_CURSOR_COLOR, Color::RED); + DALI_TEST_EQUALS(textField.GetProperty(TextField::Property::PRIMARY_CURSOR_COLOR), Color::RED, TEST_LOCATION); + + textField.SetProperty(TextField::Property::SECONDARY_CURSOR_COLOR, Color::BLUE); + DALI_TEST_EQUALS(textField.GetProperty(TextField::Property::SECONDARY_CURSOR_COLOR), Color::BLUE, TEST_LOCATION); + + textField.SetProperty(DevelTextField::Property::GRAB_HANDLE_COLOR, Color::GREEN); + DALI_TEST_EQUALS(textField.GetProperty(DevelTextField::Property::GRAB_HANDLE_COLOR), Color::GREEN, TEST_LOCATION); + + textField.SetProperty(TextField::Property::SELECTION_HIGHLIGHT_COLOR, Color::GREEN); + DALI_TEST_EQUALS(textField.GetProperty(TextField::Property::SELECTION_HIGHLIGHT_COLOR), Color::GREEN, TEST_LOCATION); + + textField.SetProperty(TextField::Property::CURSOR_WIDTH, 3); + DALI_TEST_EQUALS(textField.GetProperty(TextField::Property::CURSOR_WIDTH), 3, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + + END_TEST; } \ No newline at end of file