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=4edcaad75b78724e6949fce8b43d432ce711f27e;hp=f2e761f49359b32f7bb4a72e0bf78b14cd21dec4;hb=184e719fa04c4a5bbe171c3be7da133e2a7a0399;hpb=f4c1e7f52d49c3ce033b9ee4c3c7414b06a22d45 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 f2e761f..4edcaad --- 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) 2016 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. @@ -19,14 +19,14 @@ #include #include -#include #include #include +#include #include #include #include -#include +#include using namespace Dali; using namespace Toolkit; @@ -35,7 +35,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. @@ -44,34 +43,6 @@ const char* const OPTION_CLIPBOARD("optionClipboard"); // "Clipboard" popup const Size CONTROL_SIZE( 300.f, 60.f ); -const std::string DEFAULT_FONT_DIR( "/resources/fonts" ); - -class ControlImpl : public ControlInterface, public Text::EditableControlInterface -{ -public: - ControlImpl() - : ControlInterface() - {} - - virtual ~ControlImpl() - {} - - virtual void AddDecoration( Actor& actor, bool needsClipping ) - {} - - virtual void RequestTextRelayout() - {} - - virtual void TextChanged() - {} - - virtual void MaxLengthReached() - {} - - virtual void InputStyleChanged( InputStyle::Mask inputStyleMask ) - {} -}; - std::string gClipboardText; void ContentSelectedCallback( ClipboardEventNotifier& notifier ) { @@ -87,9 +58,73 @@ int UtcDaliTextController(void) // Creates a text controller. ControllerPtr controller = Controller::New(); + DALI_TEST_CHECK( controller ); + + tet_result(TET_PASS); + END_TEST; +} + +int UtcDaliTextControllerSetGetScrollEnabled(void) +{ + tet_infoline(" UtcDaliTextControllerSetGetScrollEnabled"); + ToolkitTestApplication application; + // Creates a text controller. + ControllerPtr controller = Controller::New(); DALI_TEST_CHECK( controller ); + // Configures the text controller similarly to the text-editor. + ConfigureTextEditor( controller ); + + DALI_TEST_CHECK( !controller->IsHorizontalScrollEnabled() ); + DALI_TEST_CHECK( controller->IsVerticalScrollEnabled() ); + + // Configures the text controller similarly to the text-field. + ConfigureTextField( controller ); + + DALI_TEST_CHECK( controller->IsHorizontalScrollEnabled() ); + DALI_TEST_CHECK( !controller->IsVerticalScrollEnabled() ); + + // Configures the text controller similarly to the text-label. + ConfigureTextLabel( controller ); + + DALI_TEST_CHECK( !controller->IsHorizontalScrollEnabled() ); + DALI_TEST_CHECK( !controller->IsVerticalScrollEnabled() ); + + tet_result(TET_PASS); + END_TEST; +} + +int UtcDaliTextControllerSetIsTextElide(void) +{ + tet_infoline(" UtcDaliTextControllerSetIsTextElide"); + ToolkitTestApplication application; + + // Creates a text controller. + ControllerPtr controller = Controller::New(); + DALI_TEST_CHECK( controller ); + + // Configures the text controller similarly to the text-editor. + ConfigureTextEditor( controller ); + DALI_TEST_EQUALS( false, controller->IsTextElideEnabled(), TEST_LOCATION ); + + controller->SetTextElideEnabled( true ); + DALI_TEST_EQUALS( true, controller->IsTextElideEnabled(), TEST_LOCATION ); + + // Configures the text controller similarly to the text-field. + ConfigureTextField( controller ); + DALI_TEST_EQUALS( false, controller->IsTextElideEnabled(), TEST_LOCATION ); + + controller->SetTextElideEnabled( true ); + DALI_TEST_EQUALS( true, controller->IsTextElideEnabled(), TEST_LOCATION ); + + // Configures the text controller similarly to the text-label. + ConfigureTextLabel( controller ); + DALI_TEST_EQUALS( true, controller->IsTextElideEnabled(), TEST_LOCATION ); + + controller->SetTextElideEnabled( false ); + DALI_TEST_EQUALS( false, controller->IsTextElideEnabled(), TEST_LOCATION ); + tet_result(TET_PASS); END_TEST; } @@ -101,7 +136,6 @@ int UtcDaliTextControllerEnableCursorBlinking(void) // Creates a text controller. ControllerPtr controller = Controller::New(); - DALI_TEST_CHECK( controller ); // There is no text input enabled. @@ -111,9 +145,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 ); @@ -138,7 +172,7 @@ int UtcDaliTextControllerImfEvent(void) ControllerPtr controller = Controller::New(); std::string text; - ImfManager::ImfEventData imfEvent; + InputMethodContext::EventData imfEvent; DALI_TEST_CHECK( controller ); @@ -147,22 +181,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 = 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 = 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 = 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(); @@ -170,9 +221,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(); @@ -180,9 +231,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(); @@ -190,9 +241,9 @@ 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 ); + // Send PRE_EDIT event + imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "wo", 6, 2 ); + controller->OnInputMethodContextEvent( inputMethodContext, imfEvent ); // Force to update the model. controller->GetNaturalSize(); @@ -200,9 +251,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 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 ); @@ -230,8 +288,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; @@ -404,9 +463,9 @@ int UtcDaliTextControllerSetGetAutoScrollEnabled(void) END_TEST; } -int UtcDaliTextControllerSetGetAutoScrollSpeed(void) +int UtcDaliTextControllerSetGetCheckProperty(void) { - tet_infoline(" UtcDaliTextControllerSetGetAutoScrollSpeed"); + tet_infoline(" UtcDaliTextControllerSetGetCheckProperty"); ToolkitTestApplication application; // Creates a text controller. @@ -414,21 +473,33 @@ int UtcDaliTextControllerSetGetAutoScrollSpeed(void) DALI_TEST_CHECK( controller ); - // Check the default value. - DALI_TEST_EQUALS( 0, controller->GetAutoScrollSpeed(), TEST_LOCATION ); + // 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 ); + + DALI_TEST_CHECK( !controller->IsInputModePassword() ); + + // Set the text input to password. + controller->SetInputModePassword( true ); + + DALI_TEST_CHECK( controller->IsInputModePassword() ); - // Set the auto scroll speed. - controller->SetAutoscrollSpeed( 10 ); + // Unset the text input to password. + controller->SetInputModePassword( false ); - DALI_TEST_EQUALS( 10, controller->GetAutoScrollSpeed(), TEST_LOCATION ); + DALI_TEST_CHECK( !controller->IsInputModePassword() ); tet_result(TET_PASS); END_TEST; } -int UtcDaliTextControllerSetGetAutoScrollLoopCount(void) +int UtcDaliTextControllerSetGetTapLongPressAction(void) { - tet_infoline(" UtcDaliTextControllerSetGetAutoScrollLoopCount"); + tet_infoline(" UtcDaliTextControllerSetGetTapLongPressAction"); ToolkitTestApplication application; // Creates a text controller. @@ -436,89 +507,186 @@ int UtcDaliTextControllerSetGetAutoScrollLoopCount(void) DALI_TEST_CHECK( controller ); - // Check the default value. - DALI_TEST_EQUALS( 0, controller->GetAutoScrollLoopCount(), TEST_LOCATION ); + // Test first with no decorator. - // Set the auto scroll loop count. - controller->SetAutoScrollLoopCount( 5 ); + DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextDoubleTapAction(), TEST_LOCATION ); + controller->SetNoTextDoubleTapAction( Controller::NoTextTap::HIGHLIGHT ); + DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextDoubleTapAction(), TEST_LOCATION ); - DALI_TEST_EQUALS( 5, controller->GetAutoScrollLoopCount(), TEST_LOCATION ); + DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextLongPressAction(), TEST_LOCATION ); + controller->SetNoTextLongPressAction( Controller::NoTextTap::HIGHLIGHT ); + DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextLongPressAction(), TEST_LOCATION ); + + // Add a decorator and re-test. + + // Creates a decorator. + Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller ); + + InputMethodContext inputMethodContext = InputMethodContext::New(); + // Enables the text input. + controller->EnableTextInput( decorator, inputMethodContext ); + + DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextDoubleTapAction(), TEST_LOCATION ); + controller->SetNoTextDoubleTapAction( Controller::NoTextTap::HIGHLIGHT ); + DALI_TEST_EQUALS( Controller::NoTextTap::HIGHLIGHT, controller->GetNoTextDoubleTapAction(), TEST_LOCATION ); + + DALI_TEST_EQUALS( Controller::NoTextTap::SHOW_SELECTION_POPUP, controller->GetNoTextLongPressAction(), TEST_LOCATION ); // The default is SHOW_SELECTION_POPUP + controller->SetNoTextLongPressAction( Controller::NoTextTap::HIGHLIGHT ); + DALI_TEST_EQUALS( Controller::NoTextTap::HIGHLIGHT, controller->GetNoTextLongPressAction(), TEST_LOCATION ); - tet_result(TET_PASS); END_TEST; } -int UtcDaliTextControllerSetGetAutoScrollWrapGap(void) +int UtcDaliTextControllerSetGetLineSpacingProperty(void) { - tet_infoline(" UtcDaliTextControllerSetGetAutoScrollWrapGap"); + tet_infoline(" UtcDaliTextControllerSetGetLineSpacingProperty"); ToolkitTestApplication application; - // Creates a text controller. - ControllerPtr controller = Controller::New(); + const Size size( Dali::Stage::GetCurrent().GetSize() ); - DALI_TEST_CHECK( controller ); + // single line text + const std::string textSingle("A Quick Brown Fox Jumps Over The Lazy Dog"); - // Check the default value. - DALI_TEST_EQUALS( 0.f, controller->GetAutoScrollWrapGap(), Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + // multi-line text + const std::string textMulti("A Quick Brown\nFox Jumps Over\nThe Lazy Dog"); - // Set the auto scroll loop count. - controller->SetAutoScrollWrapGap( 25.f ); + // Creates a text controller. + ControllerPtr controller = Controller::New(); + + ConfigureTextLabel(controller); + + // single line, line spacing = 0px + { + const float EXPECTED_SPACING = 0.0f; + const Vector2 EXPECTED_LAYOUT_SIZE( 343.0f, 19.0f); + const Vector3 EXPECTED_NATURAL_SIZE( 344.0f, 20.0f, 0.0f ); + + controller->SetText(textSingle); + controller->Relayout(size); + controller->SetMultiLineEnabled( false ); + + Vector3 naturalSize = controller->GetNaturalSize(); + Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize(); + float lineSpacing0 = controller->GetDefaultLineSpacing(); + + DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION ); + DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION ); + DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION ); + } + + // single line, line spacing = 20px + { + const float EXPECTED_SPACING = 20.0f; + const Vector2 EXPECTED_LAYOUT_SIZE( 343.0f, 19.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 344.0f, 40.0f, 0.0f ); + + controller->SetText(textSingle); + controller->Relayout(size); + controller->SetDefaultLineSpacing( 20 ); + controller->SetMultiLineEnabled( false ); + + Vector3 naturalSize = controller->GetNaturalSize(); + Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize(); + float lineSpacing0 = controller->GetDefaultLineSpacing(); + + DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION ); + DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION ); + DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION ); + } + + // multi-line, line spacing = 0px + { + const float EXPECTED_SPACING = 0.0f; + const Vector2 EXPECTED_LAYOUT_SIZE( 333.0f, 39.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 120.0f, 58.0f, 0.0f ); + + controller->SetText(textMulti); + controller->Relayout(size); + controller->SetMultiLineEnabled( true ); + controller->SetDefaultLineSpacing( 0 ); + + Vector3 naturalSize = controller->GetNaturalSize(); + Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize(); + float lineSpacing0 = controller->GetDefaultLineSpacing(); + + DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION ); + DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION ); + DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION ); + } + + // multi-line, line spacing = 20px + { + const float EXPECTED_SPACING = 20.0f; + const Vector2 EXPECTED_LAYOUT_SIZE( 119.0f, 57.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 120.0f, 118.0f, 0.0f ); + + controller->SetText(textMulti); + controller->Relayout(size); + controller->SetMultiLineEnabled( true ); + controller->SetDefaultLineSpacing( 20 ); + + Vector3 naturalSize = controller->GetNaturalSize(); + Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize(); + float lineSpacing0 = controller->GetDefaultLineSpacing(); + + DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION ); + DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION ); + DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION ); + } + + // multi-line, line spacing = 30px + { + const float EXPECTED_SPACING = 30.0f; + const Vector2 EXPECTED_LAYOUT_SIZE( 119.0f, 117.0f ); + const Vector3 EXPECTED_NATURAL_SIZE( 120.0f, 148.0f, 0.0f ); + + controller->SetText(textMulti); + controller->Relayout(size); + controller->SetMultiLineEnabled( true ); + controller->SetDefaultLineSpacing( 30 ); + + Vector3 naturalSize = controller->GetNaturalSize(); + Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize(); + float lineSpacing0 = controller->GetDefaultLineSpacing(); + + DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION ); + DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION ); + DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION ); + } - DALI_TEST_EQUALS( 25.f, controller->GetAutoScrollWrapGap(), Math::MACHINE_EPSILON_1000, TEST_LOCATION ); - tet_result(TET_PASS); END_TEST; + } -int UtcDaliTextControllerGetAutoScrollData(void) +int UtcDaliTextControllerCheckBufferIndices(void) { - tet_infoline(" UtcDaliTextControllerGetAutoScrollData"); + tet_infoline(" UtcDaliTextControllerCheckBufferIndices"); ToolkitTestApplication application; - // Load some fonts to get the same metrics on different platforms. - TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get(); - fontClient.SetDpi( 96u, 96u ); - - char* pathNamePtr = get_current_dir_name(); - const std::string pathName( pathNamePtr ); - free( pathNamePtr ); - - fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" ); - // Creates a text controller. ControllerPtr controller = Controller::New(); - DALI_TEST_CHECK( controller ); - - DALI_TEST_CHECK( NULL == controller->GetAutoScrollData() ); + ConfigureTextLabel(controller); - // Set and check some values. - controller->SetAutoscrollSpeed( 10 ); - controller->SetAutoScrollLoopCount( 5 ); - controller->SetAutoScrollWrapGap( 25.f ); + // Set the text + const std::string text("A Quick Brown Fox Jumps Over The Lazy Dog"); + controller->SetText(text); - const ScrollerData* scrollerData = controller->GetAutoScrollData(); - DALI_TEST_CHECK( NULL != controller->GetAutoScrollData() ); + // Get the implementation of the text controller + Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() ); - DALI_TEST_EQUALS( Size::ZERO, scrollerData->mControlSize, TEST_LOCATION ); - DALI_TEST_EQUALS( Size::ZERO, scrollerData->mOffscreenSize, TEST_LOCATION ); - DALI_TEST_EQUALS( 10, scrollerData->mScrollSpeed, TEST_LOCATION ); - DALI_TEST_EQUALS( 5, scrollerData->mLoopCount, TEST_LOCATION ); - DALI_TEST_EQUALS( 25.f, scrollerData->mWrapGap, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); - DALI_TEST_EQUALS( 0.f, scrollerData->mAlignmentOffset, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); - DALI_TEST_CHECK( !scrollerData->mAutoScrollDirectionRTL ); + // Tweak some parameters to make the indices to access the text buffer invalid + mImpl.mTextUpdateInfo.mNumberOfCharactersToAdd = mImpl.mModel->mLogicalModel->mText.Count() * 10u; + mImpl.mTextUpdateInfo.mNumberOfCharactersToRemove = 0u; + mImpl.mTextUpdateInfo.mPreviousNumberOfCharacters = 0u; + mImpl.mOperationsPending = Controller::ALL_OPERATIONS; - // Set some text and layout. - controller->SetMarkupProcessorEnabled( true ); - controller->SetHorizontalAlignment( LayoutEngine::HORIZONTAL_ALIGN_END ); - controller->SetText( "Hello world" ); - controller->Relayout( Size( 100.f, 20.f ) ); - - scrollerData = controller->GetAutoScrollData(); - DALI_TEST_EQUALS( Size( 100.f, 20.f ), scrollerData->mControlSize, TEST_LOCATION ); - DALI_TEST_EQUALS( Size( 80.f, 20.f ), scrollerData->mOffscreenSize, TEST_LOCATION ); - DALI_TEST_EQUALS( 20.f, scrollerData->mAlignmentOffset, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + // Perform a relayout + const Size size( Dali::Stage::GetCurrent().GetSize() ); + controller->Relayout(size); tet_result(TET_PASS); + END_TEST; }