X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit-internal%2Futc-Dali-Text-Controller.cpp;h=e1787c94525b570c0409cf6a8a402b7eb83a6540;hp=ad3660749012600012f729325dc6dcc33ff85a22;hb=2951af4fa549b8383cebb3464fd14eb86a993e25;hpb=3ef464ce8916c3714998c0e1ace1b6d4b5d090bc diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Controller.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Controller.cpp old mode 100644 new mode 100755 index ad36607..e1787c9 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Controller.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Controller.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 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. @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -35,7 +36,6 @@ using namespace Text; namespace { -const char* const OPTION_SELECT_WORD("option-select_word"); // "Select Word" popup option. const char* const OPTION_SELECT_ALL("option-select_all"); // "Select All" popup option. const char* const OPTION_CUT("optionCut"); // "Cut" popup option. const char* const OPTION_COPY("optionCopy"); // "Copy" popup option. @@ -50,6 +50,22 @@ void ContentSelectedCallback( ClipboardEventNotifier& notifier ) gClipboardText = notifier.GetContent(); } +// Generate a KeyEvent to send to Core. +Dali::KeyEvent GenerateKey( const std::string& keyName, + const std::string& keyString, + int keyCode, + int keyModifier, + unsigned long timeStamp, + const Dali::KeyEvent::State& keyState ) +{ + return Dali::KeyEvent( keyName, + keyString, + keyCode, + keyModifier, + timeStamp, + keyState ); +} + } // namespace int UtcDaliTextController(void) @@ -146,9 +162,9 @@ int UtcDaliTextControllerEnableCursorBlinking(void) // Creates a decorator. Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller ); - + InputMethodContext inputMethodContext = InputMethodContext::New(); // Enables the text input. - controller->EnableTextInput( decorator ); + controller->EnableTextInput( decorator, inputMethodContext ); // Enables the cursor blink. controller->SetEnableCursorBlink( true ); @@ -173,7 +189,7 @@ int UtcDaliTextControllerImfEvent(void) ControllerPtr controller = Controller::New(); std::string text; - ImfManager::ImfEventData imfEvent; + InputMethodContext::EventData imfEvent; DALI_TEST_CHECK( controller ); @@ -182,41 +198,39 @@ int UtcDaliTextControllerImfEvent(void) Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller ); + InputMethodContext inputMethodContext = InputMethodContext::New(); // Enables the text input. - controller->EnableTextInput( decorator ); + controller->EnableTextInput( decorator, inputMethodContext ); // Set the placeholder text. controller->SetPlaceholderText( Controller::PLACEHOLDER_TYPE_INACTIVE, "Hello Dali" ); - // Creates an ImfManager. - ImfManager imfManager = ImfManager::Get(); - // For coverage. - imfEvent = ImfManager::ImfEventData( ImfManager::GETSURROUNDING, "", 0, 0 ); - controller->OnImfEvent( imfManager, imfEvent ); + imfEvent = InputMethodContext::EventData( InputMethodContext::GET_SURROUNDING, "", 0, 0 ); + controller->OnInputMethodContextEvent( inputMethodContext, imfEvent ); // Send VOID event. - imfEvent = ImfManager::ImfEventData( ImfManager::VOID, "", 0, 0 ); - controller->OnImfEvent( imfManager, imfEvent ); + imfEvent = InputMethodContext::EventData( InputMethodContext::VOID, "", 0, 0 ); + controller->OnInputMethodContextEvent( inputMethodContext, imfEvent ); controller->GetText( text ); DALI_TEST_CHECK( text.empty() ); - imfEvent = ImfManager::ImfEventData( ImfManager::COMMIT, "Hello ", 0, 6 ); - controller->OnImfEvent( imfManager, imfEvent ); + imfEvent = InputMethodContext::EventData( InputMethodContext::COMMIT, "Hello ", 0, 6 ); + controller->OnInputMethodContextEvent( inputMethodContext, imfEvent ); controller->GetNaturalSize(); // Check 'Delete All' key which means the input panel send a big range - imfEvent = ImfManager::ImfEventData( ImfManager::DELETESURROUNDING, "", -100, 100 ); - controller->OnImfEvent( imfManager, imfEvent ); + imfEvent = InputMethodContext::EventData( InputMethodContext::DELETE_SURROUNDING, "", -100, 100 ); + controller->OnInputMethodContextEvent( inputMethodContext, imfEvent ); controller->GetNaturalSize(); controller->GetText( text ); DALI_TEST_EQUALS( "", text, TEST_LOCATION ); // Send COMMIT event. - imfEvent = ImfManager::ImfEventData( ImfManager::COMMIT, "Hello ", 0, 6 ); - controller->OnImfEvent( imfManager, imfEvent ); + imfEvent = InputMethodContext::EventData( InputMethodContext::COMMIT, "Hello ", 0, 6 ); + controller->OnInputMethodContextEvent( inputMethodContext, imfEvent ); // Force to update the model. controller->GetNaturalSize(); @@ -224,9 +238,9 @@ int UtcDaliTextControllerImfEvent(void) controller->GetText( text ); DALI_TEST_EQUALS( "Hello ", text, TEST_LOCATION ); - // Send PREEDIT event - imfEvent = ImfManager::ImfEventData( ImfManager::PREEDIT, "w", 6, 1 ); - controller->OnImfEvent( imfManager, imfEvent ); + // Send PRE_EDIT event + imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "w", 6, 1 ); + controller->OnInputMethodContextEvent( inputMethodContext, imfEvent ); // Force to update the model. controller->GetNaturalSize(); @@ -234,9 +248,9 @@ int UtcDaliTextControllerImfEvent(void) controller->GetText( text ); DALI_TEST_EQUALS( "Hello w", text, TEST_LOCATION ); - // Send DELETESURROUNDING event - imfEvent = ImfManager::ImfEventData( ImfManager::DELETESURROUNDING, "", -1, 1 ); - controller->OnImfEvent( imfManager, imfEvent ); + // Send DELETE_SURROUNDING event + imfEvent = InputMethodContext::EventData( InputMethodContext::DELETE_SURROUNDING, "", -1, 1 ); + controller->OnInputMethodContextEvent( inputMethodContext, imfEvent ); // Force to update the model. controller->GetNaturalSize(); @@ -244,9 +258,12 @@ int UtcDaliTextControllerImfEvent(void) controller->GetText( text ); DALI_TEST_EQUALS( "Hello ", text, TEST_LOCATION ); - // Send PREEDIT event - imfEvent = ImfManager::ImfEventData( ImfManager::PREEDIT, "wo", 6, 2 ); - controller->OnImfEvent( imfManager, imfEvent ); + // for coverage + inputMethodContext.SetPreeditStyle( InputMethodContext::PreeditStyle::UNDERLINE ); + + // Send PRE_EDIT event + imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "wo", 6, 2 ); + controller->OnInputMethodContextEvent( inputMethodContext, imfEvent ); // Force to update the model. controller->GetNaturalSize(); @@ -254,16 +271,16 @@ int UtcDaliTextControllerImfEvent(void) controller->GetText( text ); DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION ); - // Send GETSURROUNDING event - imfEvent = ImfManager::ImfEventData( ImfManager::GETSURROUNDING, "", 0, 0 ); - controller->OnImfEvent( imfManager, imfEvent ); + // Send GET_SURROUNDING event + imfEvent = InputMethodContext::EventData( InputMethodContext::GET_SURROUNDING, "", 0, 0 ); + controller->OnInputMethodContextEvent( inputMethodContext, imfEvent ); controller->GetText( text ); DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION ); - // Send PRIVATECOMMAND event - imfEvent = ImfManager::ImfEventData( ImfManager::PRIVATECOMMAND, "", 0, 0 ); - controller->OnImfEvent( imfManager, imfEvent ); + // Send PRIVATE_COMMAND event + imfEvent = InputMethodContext::EventData( InputMethodContext::PRIVATE_COMMAND, "", 0, 0 ); + controller->OnInputMethodContextEvent( inputMethodContext, imfEvent ); controller->GetText( text ); DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION ); @@ -291,8 +308,9 @@ int UtcDaliTextControllerTextPopupButtonTouched(void) Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller ); + InputMethodContext inputMethodContext = InputMethodContext::New(); // Enables the text input. - controller->EnableTextInput( decorator ); + controller->EnableTextInput( decorator, inputMethodContext ); // Creates the text's popup. TextSelectionPopupCallbackInterface& callbackInterface = *controller; @@ -479,8 +497,9 @@ int UtcDaliTextControllerSetGetCheckProperty(void) // Creates a decorator. Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller ); + InputMethodContext inputMethodContext = InputMethodContext::New(); // Enables the text input. - controller->EnableTextInput( decorator ); + controller->EnableTextInput( decorator, inputMethodContext ); DALI_TEST_CHECK( !controller->IsInputModePassword() ); @@ -523,8 +542,9 @@ int UtcDaliTextControllerSetGetTapLongPressAction(void) // Creates a decorator. Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller ); + InputMethodContext inputMethodContext = InputMethodContext::New(); // Enables the text input. - controller->EnableTextInput( decorator ); + controller->EnableTextInput( decorator, inputMethodContext ); DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextDoubleTapAction(), TEST_LOCATION ); controller->SetNoTextDoubleTapAction( Controller::NoTextTap::HIGHLIGHT ); @@ -558,8 +578,8 @@ int UtcDaliTextControllerSetGetLineSpacingProperty(void) // single line, line spacing = 0px { const float EXPECTED_SPACING = 0.0f; - const Vector2 EXPECTED_LAYOUT_SIZE( 326.0f, 19.0f); - const Vector3 EXPECTED_NATURAL_SIZE( 326.0f, 20.0f, 0.0f ); + const Vector2 EXPECTED_LAYOUT_SIZE( 342.0f, 19.0f); + const Vector3 EXPECTED_NATURAL_SIZE( 342.0f, 20.0f, 0.0f ); controller->SetText(textSingle); controller->Relayout(size); @@ -577,8 +597,8 @@ int UtcDaliTextControllerSetGetLineSpacingProperty(void) // single line, line spacing = 20px { const float EXPECTED_SPACING = 20.0f; - const Vector2 EXPECTED_LAYOUT_SIZE( 326.0f, 19.0f ); - const Vector3 EXPECTED_NATURAL_SIZE( 326.0f, 40.0f, 0.0f ); + const Vector2 EXPECTED_LAYOUT_SIZE( 342.0f, 19.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 342.0f, 40.0f, 0.0f ); controller->SetText(textSingle); controller->Relayout(size); @@ -597,8 +617,8 @@ int UtcDaliTextControllerSetGetLineSpacingProperty(void) // multi-line, line spacing = 0px { const float EXPECTED_SPACING = 0.0f; - const Vector2 EXPECTED_LAYOUT_SIZE( 318.0f, 39.0f ); - const Vector3 EXPECTED_NATURAL_SIZE( 116.0f, 58.0f, 0.0f ); + const Vector2 EXPECTED_LAYOUT_SIZE( 332.0f, 39.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 118.0f, 58.0f, 0.0f ); controller->SetText(textMulti); controller->Relayout(size); @@ -617,8 +637,8 @@ int UtcDaliTextControllerSetGetLineSpacingProperty(void) // multi-line, line spacing = 20px { const float EXPECTED_SPACING = 20.0f; - const Vector2 EXPECTED_LAYOUT_SIZE( 115.0f, 57.0f ); - const Vector3 EXPECTED_NATURAL_SIZE( 116.0f, 118.0f, 0.0f ); + const Vector2 EXPECTED_LAYOUT_SIZE( 118.0f, 57.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 118.0f, 118.0f, 0.0f ); controller->SetText(textMulti); controller->Relayout(size); @@ -637,8 +657,8 @@ int UtcDaliTextControllerSetGetLineSpacingProperty(void) // multi-line, line spacing = 30px { const float EXPECTED_SPACING = 30.0f; - const Vector2 EXPECTED_LAYOUT_SIZE( 115.0f, 117.0f ); - const Vector3 EXPECTED_NATURAL_SIZE( 116.0f, 148.0f, 0.0f ); + const Vector2 EXPECTED_LAYOUT_SIZE( 118.0f, 117.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 118.0f, 148.0f, 0.0f ); controller->SetText(textMulti); controller->Relayout(size); @@ -690,3 +710,379 @@ int UtcDaliTextControllerCheckBufferIndices(void) END_TEST; } + +int UtcDaliTextControllerCheckInputColorChanged(void) +{ + tet_infoline(" UtcDaliTextControllerCheckInputColorChanged"); + ToolkitTestApplication application; + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + ConfigureTextLabel(controller); + + // Enable the text input. + // Creates a decorator. + Text::DecoratorPtr decorator = Text::Decorator::New( *controller, + *controller ); + InputMethodContext inputMethodContext = InputMethodContext::New(); + // Enables the text input. + controller->EnableTextInput( decorator, inputMethodContext ); + + // Set the text + const std::string text("Hello World!"); + controller->SetText(text); + + const Vector4 inputColor( 0.0f, 0.0f, 0.0f, 1.0f ); + controller->SetInputColor( inputColor ); + + // Get the implementation of the text controller + Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() ); + + // Reset operation + mImpl.mOperationsPending = Controller::NO_OPERATION; + + // simulate a key event. + controller->KeyEvent( GenerateKey( "", "", DALI_KEY_CURSOR_LEFT, 0, 0, Dali::KeyEvent::Down ) ); + + // change the input color + const Vector4 newInputColor( 1.0f, 0.0f, 0.0f, 1.0f ); + controller->SetInputColor( newInputColor ); + + // Check if relayout is requested or not when event state is INACTIVE. + DALI_TEST_EQUALS( EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION ); + DALI_TEST_EQUALS( Controller::COLOR, static_cast( mImpl.mOperationsPending & Controller::COLOR ), TEST_LOCATION ); + + // Perform a relayout + const Size size( Dali::Stage::GetCurrent().GetSize() ); + controller->Relayout(size); + + tet_result(TET_PASS); + + END_TEST; +} + +int UtcDaliTextControllerCheckInputFontFamilyChanged(void) +{ + tet_infoline(" UtcDaliTextControllerCheckInputFontFamilyChanged"); + ToolkitTestApplication application; + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + ConfigureTextLabel(controller); + + // Enable the text input. + // Creates a decorator. + Text::DecoratorPtr decorator = Text::Decorator::New( *controller, + *controller ); + InputMethodContext inputMethodContext = InputMethodContext::New(); + // Enables the text input. + controller->EnableTextInput( decorator, inputMethodContext ); + + // Set the text and font family + const std::string text("Hello World!"); + controller->SetText(text); + controller->SetInputFontFamily("SamsungOneUI_200"); + + // Get the implementation of the text controller + Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() ); + + // Reset operation + mImpl.mOperationsPending = Controller::NO_OPERATION; + + // simulate a key event. + controller->KeyEvent( GenerateKey( "", "", DALI_KEY_CURSOR_LEFT, 0, 0, Dali::KeyEvent::Down ) ); + + // change the input font family + controller->SetInputFontFamily("SamsungOneUI_300"); + + // Check if relayout is requested or not when event state is INACTIVE. + DALI_TEST_EQUALS( EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION ); + DALI_TEST_EQUALS( Controller::VALIDATE_FONTS, static_cast( mImpl.mOperationsPending & Controller::VALIDATE_FONTS ), + TEST_LOCATION ); + + // Perform a relayout + const Size size( Dali::Stage::GetCurrent().GetSize() ); + controller->Relayout(size); + + tet_result(TET_PASS); + + END_TEST; +} + +int UtcDaliTextControllerCheckInputFontWeightChanged(void) +{ + tet_infoline(" UtcDaliTextControllerCheckInputFontWeightChanged"); + ToolkitTestApplication application; + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + ConfigureTextLabel(controller); + + // Enable the text input. + // Creates a decorator. + Text::DecoratorPtr decorator = Text::Decorator::New( *controller, + *controller ); + InputMethodContext inputMethodContext = InputMethodContext::New(); + // Enables the text input. + controller->EnableTextInput( decorator, inputMethodContext ); + + // Set the text + const std::string text("Hello World!"); + controller->SetText(text); + controller->SetInputFontWeight( TextAbstraction::FontWeight::NORMAL ); + + // Get the implementation of the text controller + Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() ); + + // Reset operation + mImpl.mOperationsPending = Controller::NO_OPERATION; + + // simulate a key event. + controller->KeyEvent( GenerateKey( "", "", DALI_KEY_CURSOR_LEFT, 0, 0, Dali::KeyEvent::Down ) ); + + // change the input font weight + controller->SetInputFontWeight( TextAbstraction::FontWeight::BOLD ); + + // Check if relayout is requested or not when event state is INACTIVE. + DALI_TEST_EQUALS( EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION ); + DALI_TEST_EQUALS( Controller::VALIDATE_FONTS, static_cast( mImpl.mOperationsPending & Controller::VALIDATE_FONTS ), + TEST_LOCATION ); + + // Perform a relayout + const Size size( Dali::Stage::GetCurrent().GetSize() ); + controller->Relayout(size); + + tet_result(TET_PASS); + + END_TEST; +} + +int UtcDaliTextControllerCheckInputFontWidthChanged(void) +{ + tet_infoline(" UtcDaliTextControllerCheckInputFontWidthChanged"); + ToolkitTestApplication application; + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + ConfigureTextLabel(controller); + + // Enable the text input. + // Creates a decorator. + Text::DecoratorPtr decorator = Text::Decorator::New( *controller, + *controller ); + InputMethodContext inputMethodContext = InputMethodContext::New(); + // Enables the text input. + controller->EnableTextInput( decorator, inputMethodContext ); + + // Set the text + const std::string text("Hello World!"); + controller->SetText(text); + controller->SetInputFontWidth( TextAbstraction::FontWidth::NORMAL ); + + // Get the implementation of the text controller + Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() ); + + // Reset operation + mImpl.mOperationsPending = Controller::NO_OPERATION; + + // simulate a key event. + controller->KeyEvent( GenerateKey( "", "", DALI_KEY_CURSOR_LEFT, 0, 0, Dali::KeyEvent::Down ) ); + + // change the input font width + controller->SetInputFontWidth( TextAbstraction::FontWidth::EXPANDED ); + + // Check if relayout is requested or not when event state is INACTIVE. + DALI_TEST_EQUALS( EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION ); + DALI_TEST_EQUALS( Controller::VALIDATE_FONTS, static_cast( mImpl.mOperationsPending & Controller::VALIDATE_FONTS ), + TEST_LOCATION ); + + // Perform a relayout + const Size size( Dali::Stage::GetCurrent().GetSize() ); + controller->Relayout(size); + + tet_result(TET_PASS); + + END_TEST; +} + +int UtcDaliTextControllerCheckInputFontSlantChanged(void) +{ + tet_infoline(" UtcDaliTextControllerCheckInputFontSlantChanged"); + ToolkitTestApplication application; + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + ConfigureTextLabel(controller); + + // Enable the text input. + // Creates a decorator. + Text::DecoratorPtr decorator = Text::Decorator::New( *controller, + *controller ); + InputMethodContext inputMethodContext = InputMethodContext::New(); + // Enables the text input. + controller->EnableTextInput( decorator, inputMethodContext ); + + // Set the text + const std::string text("Hello World!"); + controller->SetText(text); + controller->SetInputFontSlant( TextAbstraction::FontSlant::NORMAL ); + + // Get the implementation of the text controller + Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() ); + + // Reset operation + mImpl.mOperationsPending = Controller::NO_OPERATION; + + // simulate a key event. + controller->KeyEvent( GenerateKey( "", "", DALI_KEY_CURSOR_LEFT, 0, 0, Dali::KeyEvent::Down ) ); + + // change the input font slant + controller->SetInputFontSlant( TextAbstraction::FontSlant::ROMAN ); + + // Check if relayout is requested or not when event state is INACTIVE. + DALI_TEST_EQUALS( EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION ); + DALI_TEST_EQUALS( Controller::VALIDATE_FONTS, static_cast( mImpl.mOperationsPending & Controller::VALIDATE_FONTS ), + TEST_LOCATION ); + + // Perform a relayout + const Size size( Dali::Stage::GetCurrent().GetSize() ); + controller->Relayout(size); + + tet_result(TET_PASS); + + END_TEST; +} + +int UtcDaliTextControllerCheckInputFontPointSizeChanged(void) +{ + tet_infoline(" UtcDaliTextControllerCheckInputFontPointSizeChanged"); + ToolkitTestApplication application; + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + ConfigureTextLabel(controller); + + // Enable the text input. + // Creates a decorator. + Text::DecoratorPtr decorator = Text::Decorator::New( *controller, + *controller ); + InputMethodContext inputMethodContext = InputMethodContext::New(); + // Enables the text input. + controller->EnableTextInput( decorator, inputMethodContext ); + + // Set the text + const std::string text("Hello World!"); + controller->SetText(text); + controller->SetInputFontPointSize( 1.0f ); + + // Get the implementation of the text controller + Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() ); + + // Reset operation + mImpl.mOperationsPending = Controller::NO_OPERATION; + + // simulate a key event. + controller->KeyEvent( GenerateKey( "", "", DALI_KEY_CURSOR_LEFT, 0, 0, Dali::KeyEvent::Down ) ); + + // change the input font point size + controller->SetInputFontPointSize( 1.2f ); + + // Check if relayout is requested or not when event state is INACTIVE. + DALI_TEST_EQUALS( EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION ); + DALI_TEST_EQUALS( Controller::VALIDATE_FONTS, static_cast( mImpl.mOperationsPending & Controller::VALIDATE_FONTS ), + TEST_LOCATION ); + + // Perform a relayout + const Size size( Dali::Stage::GetCurrent().GetSize() ); + controller->Relayout(size); + + tet_result(TET_PASS); + + END_TEST; +} + +int UtcDaliTextControllerSelectEvent(void) +{ + tet_infoline(" UtcDaliTextControllerSelectEvent"); + ToolkitTestApplication application; + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + // Configures the text controller similarly to the text-field. + ConfigureTextField( controller ); + + // Set the text + const std::string text("Hello World!"); + controller->SetText( text ); + + // Select the whole text. + controller->SelectEvent( 0.f, 0.f, false ); + + // Perform a relayout + const Size size( Dali::Stage::GetCurrent().GetSize() ); + controller->Relayout(size); + + // Get the implementation of the text controller + Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() ); + + // Check if the whole text is selected or not. + std::string retrieved_text; + mImpl.RetrieveSelection( retrieved_text, false ); + DALI_TEST_EQUALS( "Hello", retrieved_text, TEST_LOCATION ); + + // Select the whole text. + controller->SelectEvent( 0.f, 0.f, true ); + + // Perform a relayout + controller->Relayout( size ); + + mImpl.RetrieveSelection( retrieved_text, false ); + DALI_TEST_EQUALS( text, retrieved_text, TEST_LOCATION ); + + END_TEST; +} + + +int UtcDaliTextControllerMaxLengthSetText(void) +{ + tet_infoline(" UtcDaliTextControllerMaxLengthSetText"); + ToolkitTestApplication application; + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + ConfigureTextLabel(controller); + + const Length MAX_TEXT_LENGTH = 1024u * 32u; + + // make over length world + int maxLength = (1024u * 32u) + 10u; + char world[maxLength]; + for( int i = 0; i < maxLength; i++ ) + { + world[i] = 'a'; + } + + // Set the text + std::string text(world); + controller->SetText( text ); + + // Perform a relayout + const Size size( Dali::Stage::GetCurrent().GetSize() ); + controller->Relayout(size); + + // check text length + controller->GetText( text ); + Length textSize = text.size(); + + DALI_TEST_EQUALS( MAX_TEXT_LENGTH, textSize, TEST_LOCATION ); + + END_TEST; +}