/*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 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.
#include <dali-toolkit-test-suite-utils.h>
#include <dali-toolkit/dali-toolkit.h>
-#include <toolkit-text-utils.h>
#include <dali-toolkit/internal/controls/text-controls/text-field-impl.h>
-#include <dali-toolkit/internal/text/text-controller.h>
+#include <dali-toolkit/internal/text/controller/text-controller-impl.h>
+#include <dali-toolkit/internal/text/controller/text-controller.h>
#include <dali-toolkit/internal/text/text-control-interface.h>
#include <dali-toolkit/internal/text/text-editable-control-interface.h>
-#include <dali-toolkit/internal/text/text-controller-impl.h>
+#include <dali/devel-api/events/key-event-devel.h>
+#include <toolkit-text-utils.h>
using namespace Dali;
using namespace Toolkit;
namespace
{
+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.
+const char* const OPTION_PASTE("optionPaste"); // "Paste" popup option.
+const char* const OPTION_CLIPBOARD("optionClipboard"); // "Clipboard" 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.
-const char* const OPTION_PASTE("optionPaste"); // "Paste" popup option.
-const char* const OPTION_CLIPBOARD("optionClipboard"); // "Clipboard" popup option.
-
-const Size CONTROL_SIZE( 300.f, 60.f );
-
-std::string gClipboardText;
-void ContentSelectedCallback( ClipboardEventNotifier& notifier )
-{
- gClipboardText = notifier.GetContent();
-}
+const Size CONTROL_SIZE(300.f, 60.f);
// 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 )
+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 );
+ return DevelKeyEvent::New(keyName, "", keyString, keyCode, keyModifier, timeStamp, keyState, "", "", Device::Class::NONE, Device::Subclass::NONE);
}
} // namespace
// Creates a text controller.
ControllerPtr controller = Controller::New();
- DALI_TEST_CHECK( controller );
+ DALI_TEST_CHECK(controller);
tet_result(TET_PASS);
END_TEST;
// Creates a text controller.
ControllerPtr controller = Controller::New();
- DALI_TEST_CHECK( controller );
+ DALI_TEST_CHECK(controller);
// Configures the text controller similarly to the text-editor.
- ConfigureTextEditor( controller );
+ ConfigureTextEditor(controller);
- DALI_TEST_CHECK( !controller->IsHorizontalScrollEnabled() );
- DALI_TEST_CHECK( controller->IsVerticalScrollEnabled() );
+ DALI_TEST_CHECK(!controller->IsHorizontalScrollEnabled());
+ DALI_TEST_CHECK(controller->IsVerticalScrollEnabled());
// Configures the text controller similarly to the text-field.
- ConfigureTextField( controller );
+ ConfigureTextField(controller);
- DALI_TEST_CHECK( controller->IsHorizontalScrollEnabled() );
- DALI_TEST_CHECK( !controller->IsVerticalScrollEnabled() );
+ DALI_TEST_CHECK(controller->IsHorizontalScrollEnabled());
+ DALI_TEST_CHECK(!controller->IsVerticalScrollEnabled());
// Configures the text controller similarly to the text-label.
- ConfigureTextLabel( controller );
+ ConfigureTextLabel(controller);
- DALI_TEST_CHECK( !controller->IsHorizontalScrollEnabled() );
- DALI_TEST_CHECK( !controller->IsVerticalScrollEnabled() );
+ DALI_TEST_CHECK(!controller->IsHorizontalScrollEnabled());
+ DALI_TEST_CHECK(!controller->IsVerticalScrollEnabled());
tet_result(TET_PASS);
END_TEST;
// Creates a text controller.
ControllerPtr controller = Controller::New();
- DALI_TEST_CHECK( controller );
+ DALI_TEST_CHECK(controller);
// Configures the text controller similarly to the text-editor.
- ConfigureTextEditor( controller );
- DALI_TEST_EQUALS( false, controller->IsTextElideEnabled(), TEST_LOCATION );
+ ConfigureTextEditor(controller);
+ DALI_TEST_EQUALS(false, controller->IsTextElideEnabled(), TEST_LOCATION);
- controller->SetTextElideEnabled( true );
- DALI_TEST_EQUALS( true, 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 );
+ ConfigureTextField(controller);
+ DALI_TEST_EQUALS(false, controller->IsTextElideEnabled(), TEST_LOCATION);
- controller->SetTextElideEnabled( true );
- DALI_TEST_EQUALS( true, 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 );
+ ConfigureTextLabel(controller);
+ DALI_TEST_EQUALS(true, controller->IsTextElideEnabled(), TEST_LOCATION);
- controller->SetTextElideEnabled( false );
- DALI_TEST_EQUALS( false, controller->IsTextElideEnabled(), TEST_LOCATION );
+ controller->SetTextElideEnabled(false);
+ DALI_TEST_EQUALS(false, controller->IsTextElideEnabled(), TEST_LOCATION);
tet_result(TET_PASS);
END_TEST;
// Creates a text controller.
ControllerPtr controller = Controller::New();
- DALI_TEST_CHECK( controller );
+ DALI_TEST_CHECK(controller);
// There is no text input enabled.
- DALI_TEST_CHECK( !controller->GetEnableCursorBlink() );
+ DALI_TEST_CHECK(!controller->GetEnableCursorBlink());
// Enable the text input.
// Creates a decorator.
- Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
- *controller );
+ Text::DecoratorPtr decorator = Text::Decorator::New(*controller,
+ *controller);
InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator, inputMethodContext );
+ controller->EnableTextInput(decorator, inputMethodContext);
// Enables the cursor blink.
- controller->SetEnableCursorBlink( true );
+ controller->SetEnableCursorBlink(true);
- DALI_TEST_CHECK( controller->GetEnableCursorBlink() );
+ DALI_TEST_CHECK(controller->GetEnableCursorBlink());
// Disables the cursor blink.
- controller->SetEnableCursorBlink( false );
+ controller->SetEnableCursorBlink(false);
- DALI_TEST_CHECK( !controller->GetEnableCursorBlink() );
+ DALI_TEST_CHECK(!controller->GetEnableCursorBlink());
tet_result(TET_PASS);
END_TEST;
// Creates a text controller.
ControllerPtr controller = Controller::New();
- std::string text;
+ std::string text;
InputMethodContext::EventData imfEvent;
- DALI_TEST_CHECK( controller );
+ DALI_TEST_CHECK(controller);
// Enable the text input.
// Creates a decorator.
- Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
- *controller );
+ Text::DecoratorPtr decorator = Text::Decorator::New(*controller,
+ *controller);
InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator, inputMethodContext );
+ controller->EnableTextInput(decorator, inputMethodContext);
// Set the placeholder text.
- controller->SetPlaceholderText( Controller::PLACEHOLDER_TYPE_INACTIVE, "Hello Dali" );
+ controller->SetPlaceholderText(Controller::PLACEHOLDER_TYPE_INACTIVE, "Hello Dali");
// For coverage.
- imfEvent = InputMethodContext::EventData( InputMethodContext::GET_SURROUNDING, "", 0, 0 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::GET_SURROUNDING, "", 0, 0);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Send VOID event.
- imfEvent = InputMethodContext::EventData( InputMethodContext::VOID, "", 0, 0 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::VOID, "", 0, 0);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
- controller->GetText( text );
- DALI_TEST_CHECK( text.empty() );
+ controller->GetText(text);
+ DALI_TEST_CHECK(text.empty());
+ DALI_TEST_EQUALS(0u, controller->GetNumberOfCharacters(), TEST_LOCATION); // We should ignore Placeholder text here
- imfEvent = InputMethodContext::EventData( InputMethodContext::COMMIT, "Hello ", 0, 6 );
- controller->OnInputMethodContextEvent( inputMethodContext, 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 = InputMethodContext::EventData( InputMethodContext::DELETE_SURROUNDING, "", -100, 100 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::DELETE_SURROUNDING, "", -100, 100);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(0u, controller->GetNumberOfCharacters(), TEST_LOCATION);
// Send COMMIT event.
- imfEvent = InputMethodContext::EventData( InputMethodContext::COMMIT, "Hello ", 0, 6 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::COMMIT, "Hello ", 0, 6);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Force to update the model.
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello ", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello ", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(6u, controller->GetNumberOfCharacters(), TEST_LOCATION);
// Send PRE_EDIT event
- imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "w", 6, 1 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "w", 6, 1);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Force to update the model.
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello w", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello w", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(7u, controller->GetNumberOfCharacters(), TEST_LOCATION);
// Send DELETE_SURROUNDING event
- imfEvent = InputMethodContext::EventData( InputMethodContext::DELETE_SURROUNDING, "", -1, 1 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::DELETE_SURROUNDING, "", -1, 1);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Force to update the model.
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello ", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello ", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(6u, controller->GetNumberOfCharacters(), TEST_LOCATION);
// for coverage
- inputMethodContext.SetPreeditStyle( InputMethodContext::PreeditStyle::UNDERLINE );
+ inputMethodContext.SetPreeditStyle(InputMethodContext::PreeditStyle::UNDERLINE);
// Send PRE_EDIT event
- imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "wo", 6, 2 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "wo", 6, 2);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Force to update the model.
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello wo", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(8u, controller->GetNumberOfCharacters(), TEST_LOCATION);
// Send GET_SURROUNDING event
- imfEvent = InputMethodContext::EventData( InputMethodContext::GET_SURROUNDING, "", 0, 0 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::GET_SURROUNDING, "", 0, 0);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello wo", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(8u, controller->GetNumberOfCharacters(), TEST_LOCATION);
// Send PRIVATE_COMMAND event
- imfEvent = InputMethodContext::EventData( InputMethodContext::PRIVATE_COMMAND, "", 0, 0 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::PRIVATE_COMMAND, "", 0, 0);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello wo", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(8u, controller->GetNumberOfCharacters(), TEST_LOCATION);
tet_result(TET_PASS);
END_TEST;
// Creates a text controller.
ControllerPtr controller = Controller::New();
- std::string text;
+ std::string text;
InputMethodContext::EventData imfEvent;
- DALI_TEST_CHECK( controller );
+ DALI_TEST_CHECK(controller);
// Configures the text controller similarly to the text-field.
- ConfigureTextField( controller );
+ ConfigureTextField(controller);
InputMethodContext inputMethodContext = InputMethodContext::New();
// Send COMMIT event.
- imfEvent = InputMethodContext::EventData( InputMethodContext::COMMIT, "Hello ", 0, 6 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::COMMIT, "Hello ", 0, 6);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Force to update the model.
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello ", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello ", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(6u, controller->GetNumberOfCharacters(), TEST_LOCATION);
// Send PRE_EDIT event
- imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "w", 6, 1 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
- inputMethodContext.SetPreeditStyle( InputMethodContext::PreeditStyle::NONE );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "w", 6, 1);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
+ inputMethodContext.SetPreeditStyle(InputMethodContext::PreeditStyle::NONE);
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello w", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello w", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(7u, controller->GetNumberOfCharacters(), TEST_LOCATION);
- imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "w", 6, 1 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "w", 6, 1);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Set the preedit style as REVERSE
- inputMethodContext.SetPreeditStyle( InputMethodContext::PreeditStyle::REVERSE );
+ inputMethodContext.SetPreeditStyle(InputMethodContext::PreeditStyle::REVERSE);
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello w", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello w", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(7u, controller->GetNumberOfCharacters(), TEST_LOCATION);
- imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "w", 6, 1 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "w", 6, 1);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Set the preedit style as HIGHLIGHT
- inputMethodContext.SetPreeditStyle( InputMethodContext::PreeditStyle::HIGHLIGHT );
+ inputMethodContext.SetPreeditStyle(InputMethodContext::PreeditStyle::HIGHLIGHT);
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello w", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello w", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(7u, controller->GetNumberOfCharacters(), TEST_LOCATION);
- imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "w", 6, 1 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "w", 6, 1);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Set the preedit style as CUSTOM_PLATFORM_STYLE_1
- inputMethodContext.SetPreeditStyle( InputMethodContext::PreeditStyle::CUSTOM_PLATFORM_STYLE_1 );
+ inputMethodContext.SetPreeditStyle(InputMethodContext::PreeditStyle::CUSTOM_PLATFORM_STYLE_1);
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello w", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello w", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(7u, controller->GetNumberOfCharacters(), TEST_LOCATION);
- imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "w", 6, 1 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "w", 6, 1);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Set the preedit style as CUSTOM_PLATFORM_STYLE_2
- inputMethodContext.SetPreeditStyle( InputMethodContext::PreeditStyle::CUSTOM_PLATFORM_STYLE_2 );
+ inputMethodContext.SetPreeditStyle(InputMethodContext::PreeditStyle::CUSTOM_PLATFORM_STYLE_2);
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello w", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello w", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(7u, controller->GetNumberOfCharacters(), TEST_LOCATION);
- imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "w", 6, 1 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "w", 6, 1);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Set the preedit style as CUSTOM_PLATFORM_STYLE_3
- inputMethodContext.SetPreeditStyle( InputMethodContext::PreeditStyle::CUSTOM_PLATFORM_STYLE_3 );
+ inputMethodContext.SetPreeditStyle(InputMethodContext::PreeditStyle::CUSTOM_PLATFORM_STYLE_3);
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello w", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello w", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(7u, controller->GetNumberOfCharacters(), TEST_LOCATION);
- imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "w", 6, 1 );
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "w", 6, 1);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Set the preedit style as CUSTOM_PLATFORM_STYLE_4
- inputMethodContext.SetPreeditStyle( InputMethodContext::PreeditStyle::CUSTOM_PLATFORM_STYLE_4 );
+ inputMethodContext.SetPreeditStyle(InputMethodContext::PreeditStyle::CUSTOM_PLATFORM_STYLE_4);
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_EQUALS( "Hello w", text, TEST_LOCATION );
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Hello w", text, TEST_LOCATION);
+ DALI_TEST_EQUALS(7u, controller->GetNumberOfCharacters(), TEST_LOCATION);
+
+ tet_result(TET_PASS);
+ END_TEST;
+}
+
+int UtcDaliTextControllerImfPreeditStyleReverse(void)
+{
+ tet_infoline(" UtcDaliTextControllerImfPreeditStyleReverse");
+ ToolkitTestApplication application;
+
+ // Creates a text controller.
+ ControllerPtr controller = Controller::New();
+
+ std::string text;
+ InputMethodContext::EventData imfEvent;
+
+ DALI_TEST_CHECK(controller);
+
+ // Configures the text controller similarly to the text-field.
+ ConfigureTextField(controller);
+
+ InputMethodContext inputMethodContext = InputMethodContext::New();
+
+ // Send PRE_EDIT event
+ imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "Reverse", 0, 7);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
+
+ // For coverage, mEditableControlInterface is required.
+ // Creates a temporary text-field to use mEditableControlInterface.
+ TextField field = TextField::New();
+ Toolkit::Internal::TextField& fieldImpl = GetImpl(field);
+ ControllerPtr fieldController = fieldImpl.GetTextController();
+ Controller::Impl& fieldControllerImpl = Controller::Impl::GetImplementation(*fieldController.Get());
+ Controller::Impl& controllerImpl = Controller::Impl::GetImplementation(*controller.Get());
+
+ // For coverage, mEditableControlInterface is required.
+ controllerImpl.mEditableControlInterface = fieldControllerImpl.mEditableControlInterface;
+
+ // Set the preedit style as REVERSE
+ inputMethodContext.SetPreeditStyle(InputMethodContext::PreeditStyle::REVERSE);
+ controller->GetNaturalSize();
+
+ controller->GetText(text);
+ DALI_TEST_EQUALS("Reverse", text, TEST_LOCATION);
tet_result(TET_PASS);
END_TEST;
// Creates a text controller.
ControllerPtr controller = Controller::New();
- DALI_TEST_CHECK( controller );
+ DALI_TEST_CHECK(controller);
- std::string text;
- PushButton button;
+ std::string text;
+ PushButton button;
Property::Map attributes;
// Enable the text input.
// Creates a decorator.
- Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
- *controller );
+ Text::DecoratorPtr decorator = Text::Decorator::New(*controller,
+ *controller);
InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator, inputMethodContext );
+ controller->EnableTextInput(decorator, inputMethodContext);
// Creates the text's popup.
TextSelectionPopupCallbackInterface& callbackInterface = *controller;
- TextSelectionPopup textPopup = TextSelectionPopup::New( &callbackInterface );
+ TextSelectionPopup textPopup = TextSelectionPopup::New(&callbackInterface);
- Toolkit::TextSelectionPopup::Buttons buttonsToEnable = static_cast<Toolkit::TextSelectionPopup::Buttons>( TextSelectionPopup::CUT |
- TextSelectionPopup::COPY |
- TextSelectionPopup::PASTE |
- TextSelectionPopup::SELECT |
- TextSelectionPopup::SELECT_ALL |
- TextSelectionPopup::CLIPBOARD );
+ Toolkit::TextSelectionPopup::Buttons buttonsToEnable = static_cast<Toolkit::TextSelectionPopup::Buttons>(TextSelectionPopup::CUT |
+ TextSelectionPopup::COPY |
+ TextSelectionPopup::PASTE |
+ TextSelectionPopup::SELECT |
+ TextSelectionPopup::SELECT_ALL |
+ TextSelectionPopup::CLIPBOARD);
- textPopup.EnableButtons( buttonsToEnable );
- Stage::GetCurrent().Add( textPopup );
+ textPopup.EnableButtons(buttonsToEnable);
+ application.GetScene().Add(textPopup);
textPopup.ShowPopup();
// Render and notify
application.Render();
// Sets some text.
- controller->SetText( "Hello world" );
+ controller->SetText("Hello world");
+
+ // When the TextSelectionPopup is active, the controller has focus.
+ controller->KeyboardFocusGainEvent();
// Select the whole text.
- button = PushButton::DownCast( textPopup.FindChildByName( OPTION_SELECT_ALL ) );
- DALI_TEST_CHECK( button );
+ button = PushButton::DownCast(textPopup.FindChildByName(OPTION_SELECT_ALL));
+ DALI_TEST_CHECK(button);
- button.DoAction( "buttonClick", attributes );
+ button.DoAction("buttonClick", attributes);
// Call relayout to process the input events.
- controller->Relayout( CONTROL_SIZE );
+ controller->Relayout(CONTROL_SIZE);
// Cut the text.
- button = PushButton::DownCast( textPopup.FindChildByName( OPTION_CUT ) );
- DALI_TEST_CHECK( button );
+ button = PushButton::DownCast(textPopup.FindChildByName(OPTION_CUT));
+ DALI_TEST_CHECK(button);
- button.DoAction( "buttonClick", attributes );
+ button.DoAction("buttonClick", attributes);
// Force to update the model.
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_CHECK( text.empty() );
+ controller->GetText(text);
+ DALI_TEST_CHECK(text.empty());
// Set text again.
- controller->SetText( "Hello world" );
+ controller->SetText("Hello world");
// Select the whole text.
- button = PushButton::DownCast( textPopup.FindChildByName( OPTION_SELECT_ALL ) );
- DALI_TEST_CHECK( button );
+ button = PushButton::DownCast(textPopup.FindChildByName(OPTION_SELECT_ALL));
+ DALI_TEST_CHECK(button);
- button.DoAction( "buttonClick", attributes );
+ button.DoAction("buttonClick", attributes);
// Call relayout to process the input events.
- controller->Relayout( CONTROL_SIZE );
+ controller->Relayout(CONTROL_SIZE);
// Copy to the clipboard.
- button = PushButton::DownCast( textPopup.FindChildByName( OPTION_COPY ) );
- DALI_TEST_CHECK( button );
+ button = PushButton::DownCast(textPopup.FindChildByName(OPTION_COPY));
+ DALI_TEST_CHECK(button);
- button.DoAction( "buttonClick", attributes );
+ button.DoAction("buttonClick", attributes);
// Call relayout to process the input events.
- controller->Relayout( CONTROL_SIZE );
+ controller->Relayout(CONTROL_SIZE);
// Cut the text.
- button = PushButton::DownCast( textPopup.FindChildByName( OPTION_CUT ) );
- DALI_TEST_CHECK( button );
+ button = PushButton::DownCast(textPopup.FindChildByName(OPTION_CUT));
+ DALI_TEST_CHECK(button);
- button.DoAction( "buttonClick", attributes );
+ button.DoAction("buttonClick", attributes);
// Force to update the model.
controller->GetNaturalSize();
- controller->GetText( text );
- DALI_TEST_CHECK( text.empty() );
-
- ClipboardEventNotifier clipboardEventNotifier = ClipboardEventNotifier::Get();
- clipboardEventNotifier.ContentSelectedSignal().Connect( &ContentSelectedCallback );
+ controller->GetText(text);
+ DALI_TEST_CHECK(text.empty());
// Paste the text.
- button = PushButton::DownCast( textPopup.FindChildByName( OPTION_PASTE ) );
- DALI_TEST_CHECK( button );
+ button = PushButton::DownCast(textPopup.FindChildByName(OPTION_PASTE));
+ DALI_TEST_CHECK(button);
- button.DoAction( "buttonClick", attributes );
+ button.DoAction("buttonClick", attributes);
// Call relayout to process the input events.
- controller->Relayout( CONTROL_SIZE );
+ controller->Relayout(CONTROL_SIZE);
+ controller->GetText(text);
- DALI_TEST_EQUALS( "Hello world", gClipboardText, TEST_LOCATION );
+ DALI_TEST_EQUALS("Hello world", text.c_str(), TEST_LOCATION);
// Show the clipboard.
- button = PushButton::DownCast( textPopup.FindChildByName( OPTION_CLIPBOARD ) );
- DALI_TEST_CHECK( button );
+ button = PushButton::DownCast(textPopup.FindChildByName(OPTION_CLIPBOARD));
+ DALI_TEST_CHECK(button);
- button.DoAction( "buttonClick", attributes );
+ button.DoAction("buttonClick", attributes);
tet_result(TET_PASS);
END_TEST;
// Creates a text controller.
ControllerPtr controller = Controller::New();
- DALI_TEST_CHECK( controller );
+ DALI_TEST_CHECK(controller);
const std::string& shadowProperties = controller->GetInputShadowProperties();
- DALI_TEST_CHECK( shadowProperties.empty() );
+ DALI_TEST_CHECK(shadowProperties.empty());
tet_result(TET_PASS);
END_TEST;
// Creates a text controller.
ControllerPtr controller = Controller::New();
- DALI_TEST_CHECK( controller );
+ DALI_TEST_CHECK(controller);
const std::string& underlineProperties = controller->GetInputUnderlineProperties();
- DALI_TEST_CHECK( underlineProperties.empty() );
+ DALI_TEST_CHECK(underlineProperties.empty());
tet_result(TET_PASS);
END_TEST;
// Creates a text controller.
ControllerPtr controller = Controller::New();
- DALI_TEST_CHECK( controller );
+ DALI_TEST_CHECK(controller);
- DALI_TEST_CHECK( !controller->IsAutoScrollEnabled() );
+ DALI_TEST_CHECK(!controller->IsAutoScrollEnabled());
// The auto scrolling shouldn't be enabled if the multi-line is enabled.
// Enable multi-line.
- controller->SetMultiLineEnabled( true );
+ controller->SetMultiLineEnabled(true);
// Enable text scrolling.
- controller->SetAutoScrollEnabled( true );
+ controller->SetAutoScrollEnabled(true);
- DALI_TEST_CHECK( !controller->IsAutoScrollEnabled() );
+ DALI_TEST_CHECK(!controller->IsAutoScrollEnabled());
// Disable multi-line.
- controller->SetMultiLineEnabled( false );
+ controller->SetMultiLineEnabled(false);
// Enable text scrolling.
- controller->SetAutoScrollEnabled( true );
+ controller->SetAutoScrollEnabled(true);
// Should be ebabled now.
- DALI_TEST_CHECK( controller->IsAutoScrollEnabled() );
+ DALI_TEST_CHECK(controller->IsAutoScrollEnabled());
tet_result(TET_PASS);
END_TEST;
// Creates a text controller.
ControllerPtr controller = Controller::New();
- DALI_TEST_CHECK( controller );
+ DALI_TEST_CHECK(controller);
// Enable the text input.
// Creates a decorator.
- Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller );
+ Text::DecoratorPtr decorator = Text::Decorator::New(*controller, *controller);
InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator, inputMethodContext );
+ controller->EnableTextInput(decorator, inputMethodContext);
- DALI_TEST_CHECK( !controller->IsInputModePassword() );
+ DALI_TEST_CHECK(!controller->IsInputModePassword());
// Set the text input to password.
- controller->SetInputModePassword( true );
+ controller->SetInputModePassword(true);
- DALI_TEST_CHECK( controller->IsInputModePassword() );
+ DALI_TEST_CHECK(controller->IsInputModePassword());
// Unset the text input to password.
- controller->SetInputModePassword( false );
+ controller->SetInputModePassword(false);
- DALI_TEST_CHECK( !controller->IsInputModePassword() );
+ DALI_TEST_CHECK(!controller->IsInputModePassword());
tet_result(TET_PASS);
END_TEST;
// Creates a text controller.
ControllerPtr controller = Controller::New();
- DALI_TEST_CHECK( controller );
+ DALI_TEST_CHECK(controller);
// Test first with no decorator.
- 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(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( Controller::NoTextTap::NO_ACTION, controller->GetNoTextLongPressAction(), TEST_LOCATION );
- controller->SetNoTextLongPressAction( Controller::NoTextTap::HIGHLIGHT );
- DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextLongPressAction(), 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 );
+ Text::DecoratorPtr decorator = Text::Decorator::New(*controller, *controller);
InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator, inputMethodContext );
+ 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::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 );
+ 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);
END_TEST;
}
tet_infoline(" UtcDaliTextControllerSetGetLineSpacingProperty");
ToolkitTestApplication application;
- const Size size( Dali::Stage::GetCurrent().GetSize() );
+ const Size size(application.GetScene().GetSize());
// single line text
const std::string textSingle("A Quick Brown Fox Jumps Over The Lazy Dog");
// single line, line spacing = 0px
{
- const float EXPECTED_SPACING = 0.0f;
- const Vector2 EXPECTED_LAYOUT_SIZE( 360.0f, 19.0f);
- const Vector3 EXPECTED_NATURAL_SIZE( 360.0f, 20.0f, 0.0f );
+ const float EXPECTED_SPACING = 0.0f;
+ const Vector2 EXPECTED_LAYOUT_SIZE(350.0f, 19.0f);
+ const Vector3 EXPECTED_NATURAL_SIZE(350.0f, 20.0f, 0.0f);
controller->SetText(textSingle);
controller->Relayout(size);
- controller->SetMultiLineEnabled( false );
+ controller->SetMultiLineEnabled(false);
Vector3 naturalSize = controller->GetNaturalSize();
Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
- float lineSpacing0 = controller->GetDefaultLineSpacing();
+ 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(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( 360.0f, 19.0f );
- const Vector3 EXPECTED_NATURAL_SIZE( 360.0f, 40.0f, 0.0f );
+ const float EXPECTED_SPACING = 20.0f;
+ const Vector2 EXPECTED_LAYOUT_SIZE(350.0f, 19.0f);
+ const Vector3 EXPECTED_NATURAL_SIZE(350.0f, 40.0f, 0.0f);
controller->SetText(textSingle);
controller->Relayout(size);
- controller->SetDefaultLineSpacing( 20 );
- controller->SetMultiLineEnabled( false );
+ controller->SetDefaultLineSpacing(20);
+ controller->SetMultiLineEnabled(false);
Vector3 naturalSize = controller->GetNaturalSize();
Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
- float lineSpacing0 = controller->GetDefaultLineSpacing();
+ 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(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( 350.0f, 39.0f );
- const Vector3 EXPECTED_NATURAL_SIZE( 124.0f, 58.0f, 0.0f );
+ const float EXPECTED_SPACING = 0.0f;
+ const Vector2 EXPECTED_LAYOUT_SIZE(340.0f, 39.0f);
+ const Vector3 EXPECTED_NATURAL_SIZE(122.0f, 58.0f, 0.0f);
controller->SetText(textMulti);
controller->Relayout(size);
- controller->SetMultiLineEnabled( true );
- controller->SetDefaultLineSpacing( 0 );
+ controller->SetMultiLineEnabled(true);
+ controller->SetDefaultLineSpacing(0);
Vector3 naturalSize = controller->GetNaturalSize();
Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
- float lineSpacing0 = controller->GetDefaultLineSpacing();
+ 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(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( 124.0f, 57.0f );
- const Vector3 EXPECTED_NATURAL_SIZE( 124.0f, 118.0f, 0.0f );
+ const float EXPECTED_SPACING = 20.0f;
+ const Vector2 EXPECTED_LAYOUT_SIZE(121.0f, 57.0f);
+ const Vector3 EXPECTED_NATURAL_SIZE(122.0f, 118.0f, 0.0f);
controller->SetText(textMulti);
controller->Relayout(size);
- controller->SetMultiLineEnabled( true );
- controller->SetDefaultLineSpacing( 20 );
+ controller->SetMultiLineEnabled(true);
+ controller->SetDefaultLineSpacing(20);
Vector3 naturalSize = controller->GetNaturalSize();
Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
- float lineSpacing0 = controller->GetDefaultLineSpacing();
+ 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(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( 124.0f, 117.0f );
- const Vector3 EXPECTED_NATURAL_SIZE( 124.0f, 148.0f, 0.0f );
+ const float EXPECTED_SPACING = 30.0f;
+ const Vector2 EXPECTED_LAYOUT_SIZE(121.0f, 117.0f);
+ const Vector3 EXPECTED_NATURAL_SIZE(122.0f, 148.0f, 0.0f);
controller->SetText(textMulti);
controller->Relayout(size);
- controller->SetMultiLineEnabled( true );
- controller->SetDefaultLineSpacing( 30 );
+ controller->SetMultiLineEnabled(true);
+ controller->SetDefaultLineSpacing(30);
Vector3 naturalSize = controller->GetNaturalSize();
Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
- float lineSpacing0 = controller->GetDefaultLineSpacing();
+ 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(EXPECTED_SPACING, lineSpacing0, TEST_LOCATION);
+ DALI_TEST_EQUALS(EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION);
+ DALI_TEST_EQUALS(EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION);
}
-
END_TEST;
-
}
int UtcDaliTextControllerCheckBufferIndices(void)
controller->SetText(text);
// Get the implementation of the text controller
- Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() );
+ Controller::Impl& mImpl = Controller::Impl::GetImplementation(*controller.Get());
+
+ // 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;
+
+ // Perform a relayout
+ const Size size(application.GetScene().GetSize());
+ controller->Relayout(size);
+
+ // Set the text
+ const std::string emptyText("");
+ controller->SetText(emptyText);
// Tweak some parameters to make the indices to access the text buffer invalid
- mImpl.mTextUpdateInfo.mNumberOfCharactersToAdd = mImpl.mModel->mLogicalModel->mText.Count() * 10u;
+ mImpl.mTextUpdateInfo.mNumberOfCharactersToAdd = 10u;
mImpl.mTextUpdateInfo.mNumberOfCharactersToRemove = 0u;
mImpl.mTextUpdateInfo.mPreviousNumberOfCharacters = 0u;
- mImpl.mOperationsPending = Controller::ALL_OPERATIONS;
+ mImpl.mOperationsPending = Controller::ALL_OPERATIONS;
+
+ // Perform a relayout
+ controller->Relayout(size);
+
+ // Set the text
+ controller->SetText(text);
+
+ // Set the text size
+ controller->SetDefaultFontSize(10.f, Controller::POINT_SIZE);
+
+ // Tweak some parameters to make the indices to access the text buffer invalid
+ mImpl.mTextUpdateInfo.Clear();
// Perform a relayout
- const Size size( Dali::Stage::GetCurrent().GetSize() );
+ controller->GetHeightForWidth(size.width / 2.f);
controller->Relayout(size);
tet_result(TET_PASS);
// Enable the text input.
// Creates a decorator.
- Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
- *controller );
+ Text::DecoratorPtr decorator = Text::Decorator::New(*controller,
+ *controller);
InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator, inputMethodContext );
+ 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 );
+ 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() );
+ 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 ) );
+ 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 );
+ 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<Controller::OperationsMask>( mImpl.mOperationsPending & Controller::COLOR ), TEST_LOCATION );
+ DALI_TEST_EQUALS(EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION);
+ DALI_TEST_EQUALS(Controller::COLOR, static_cast<Controller::OperationsMask>(mImpl.mOperationsPending & Controller::COLOR), TEST_LOCATION);
// Perform a relayout
- const Size size( Dali::Stage::GetCurrent().GetSize() );
+ const Size size(application.GetScene().GetSize());
controller->Relayout(size);
tet_result(TET_PASS);
// Enable the text input.
// Creates a decorator.
- Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
- *controller );
+ Text::DecoratorPtr decorator = Text::Decorator::New(*controller,
+ *controller);
InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator, inputMethodContext );
+ controller->EnableTextInput(decorator, inputMethodContext);
// Set the text and font family
const std::string text("Hello World!");
controller->SetInputFontFamily("SamsungOneUI_200");
// Get the implementation of the text controller
- Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() );
+ 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 ) );
+ 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<Controller::OperationsMask>( mImpl.mOperationsPending & Controller::VALIDATE_FONTS ),
- TEST_LOCATION );
+ DALI_TEST_EQUALS(EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION);
+ DALI_TEST_EQUALS(Controller::VALIDATE_FONTS, static_cast<Controller::OperationsMask>(mImpl.mOperationsPending & Controller::VALIDATE_FONTS), TEST_LOCATION);
// Perform a relayout
- const Size size( Dali::Stage::GetCurrent().GetSize() );
+ const Size size(application.GetScene().GetSize());
controller->Relayout(size);
tet_result(TET_PASS);
// Enable the text input.
// Creates a decorator.
- Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
- *controller );
+ Text::DecoratorPtr decorator = Text::Decorator::New(*controller,
+ *controller);
InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator, inputMethodContext );
+ controller->EnableTextInput(decorator, inputMethodContext);
// Set the text
const std::string text("Hello World!");
controller->SetText(text);
- controller->SetInputFontWeight( TextAbstraction::FontWeight::NORMAL );
+ controller->SetInputFontWeight(TextAbstraction::FontWeight::NORMAL);
// Get the implementation of the text controller
- Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() );
+ 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 ) );
+ controller->KeyEvent(GenerateKey("", "", DALI_KEY_CURSOR_LEFT, 0, 0, Dali::KeyEvent::DOWN));
// change the input font weight
- controller->SetInputFontWeight( TextAbstraction::FontWeight::BOLD );
+ 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<Controller::OperationsMask>( mImpl.mOperationsPending & Controller::VALIDATE_FONTS ),
- TEST_LOCATION );
+ DALI_TEST_EQUALS(EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION);
+ DALI_TEST_EQUALS(Controller::VALIDATE_FONTS, static_cast<Controller::OperationsMask>(mImpl.mOperationsPending & Controller::VALIDATE_FONTS), TEST_LOCATION);
// Perform a relayout
- const Size size( Dali::Stage::GetCurrent().GetSize() );
+ const Size size(application.GetScene().GetSize());
controller->Relayout(size);
tet_result(TET_PASS);
// Enable the text input.
// Creates a decorator.
- Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
- *controller );
+ Text::DecoratorPtr decorator = Text::Decorator::New(*controller,
+ *controller);
InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator, inputMethodContext );
+ controller->EnableTextInput(decorator, inputMethodContext);
// Set the text
const std::string text("Hello World!");
controller->SetText(text);
- controller->SetInputFontWidth( TextAbstraction::FontWidth::NORMAL );
+ controller->SetInputFontWidth(TextAbstraction::FontWidth::NORMAL);
// Get the implementation of the text controller
- Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() );
+ 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 ) );
+ controller->KeyEvent(GenerateKey("", "", DALI_KEY_CURSOR_LEFT, 0, 0, Dali::KeyEvent::DOWN));
// change the input font width
- controller->SetInputFontWidth( TextAbstraction::FontWidth::EXPANDED );
+ 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<Controller::OperationsMask>( mImpl.mOperationsPending & Controller::VALIDATE_FONTS ),
- TEST_LOCATION );
+ DALI_TEST_EQUALS(EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION);
+ DALI_TEST_EQUALS(Controller::VALIDATE_FONTS, static_cast<Controller::OperationsMask>(mImpl.mOperationsPending & Controller::VALIDATE_FONTS), TEST_LOCATION);
// Perform a relayout
- const Size size( Dali::Stage::GetCurrent().GetSize() );
+ const Size size(application.GetScene().GetSize());
controller->Relayout(size);
tet_result(TET_PASS);
// Enable the text input.
// Creates a decorator.
- Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
- *controller );
+ Text::DecoratorPtr decorator = Text::Decorator::New(*controller,
+ *controller);
InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator, inputMethodContext );
+ controller->EnableTextInput(decorator, inputMethodContext);
// Set the text
const std::string text("Hello World!");
controller->SetText(text);
- controller->SetInputFontSlant( TextAbstraction::FontSlant::NORMAL );
+ controller->SetInputFontSlant(TextAbstraction::FontSlant::NORMAL);
// Get the implementation of the text controller
- Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() );
+ 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 ) );
+ controller->KeyEvent(GenerateKey("", "", DALI_KEY_CURSOR_LEFT, 0, 0, Dali::KeyEvent::DOWN));
// change the input font slant
- controller->SetInputFontSlant( TextAbstraction::FontSlant::ROMAN );
+ 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<Controller::OperationsMask>( mImpl.mOperationsPending & Controller::VALIDATE_FONTS ),
- TEST_LOCATION );
+ DALI_TEST_EQUALS(EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION);
+ DALI_TEST_EQUALS(Controller::VALIDATE_FONTS, static_cast<Controller::OperationsMask>(mImpl.mOperationsPending & Controller::VALIDATE_FONTS), TEST_LOCATION);
// Perform a relayout
- const Size size( Dali::Stage::GetCurrent().GetSize() );
+ const Size size(application.GetScene().GetSize());
controller->Relayout(size);
tet_result(TET_PASS);
// Enable the text input.
// Creates a decorator.
- Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
- *controller );
+ Text::DecoratorPtr decorator = Text::Decorator::New(*controller,
+ *controller);
InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator, inputMethodContext );
+ controller->EnableTextInput(decorator, inputMethodContext);
// Set the text
const std::string text("Hello World!");
controller->SetText(text);
- controller->SetInputFontPointSize( 1.0f );
+ controller->SetInputFontPointSize(1.0f);
// Get the implementation of the text controller
- Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() );
+ 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 ) );
+ controller->KeyEvent(GenerateKey("", "", DALI_KEY_CURSOR_LEFT, 0, 0, Dali::KeyEvent::DOWN));
// change the input font point size
- controller->SetInputFontPointSize( 1.2f );
+ 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<Controller::OperationsMask>( mImpl.mOperationsPending & Controller::VALIDATE_FONTS ),
- TEST_LOCATION );
+ DALI_TEST_EQUALS(EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION);
+ DALI_TEST_EQUALS(Controller::VALIDATE_FONTS, static_cast<Controller::OperationsMask>(mImpl.mOperationsPending & Controller::VALIDATE_FONTS), TEST_LOCATION);
// Perform a relayout
- const Size size( Dali::Stage::GetCurrent().GetSize() );
+ const Size size(application.GetScene().GetSize());
controller->Relayout(size);
+ // For coverage
+ controller->KeyEvent(GenerateKey("", "", DALI_KEY_CURSOR_LEFT, 0, 0, Dali::KeyEvent::DOWN));
+
tet_result(TET_PASS);
END_TEST;
ControllerPtr controller = Controller::New();
// Configures the text controller similarly to the text-field.
- ConfigureTextField( controller );
+ ConfigureTextField(controller);
// Set the text
const std::string text("Hello World!");
- controller->SetText( text );
+ controller->SetText(text);
// Select the whole text.
- controller->SelectEvent( 0.f, 0.f, SelectionType::INTERACTIVE );
+ controller->SelectEvent(0.f, 0.f, SelectionType::INTERACTIVE);
// Perform a relayout
- const Size size( Dali::Stage::GetCurrent().GetSize() );
+ const Size size(application.GetScene().GetSize());
controller->Relayout(size);
// Get the implementation of the text controller
- Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() );
+ 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 );
+ mImpl.RetrieveSelection(retrieved_text, false);
+ DALI_TEST_EQUALS("Hello", retrieved_text, TEST_LOCATION);
// Select the whole text.
- controller->SelectEvent( 0.f, 0.f, SelectionType::ALL );
+ controller->SelectEvent(0.f, 0.f, SelectionType::ALL);
// Perform a relayout
- controller->Relayout( size );
+ controller->Relayout(size);
- mImpl.RetrieveSelection( retrieved_text, false );
- DALI_TEST_EQUALS( text, retrieved_text, TEST_LOCATION );
+ mImpl.RetrieveSelection(retrieved_text, false);
+ DALI_TEST_EQUALS(text, retrieved_text, TEST_LOCATION);
END_TEST;
}
-
int UtcDaliTextControllerRemoveTextChangeEventData(void)
{
tet_infoline(" UtcDaliTextControllerRemoveTextChangeEventData");
// Creates a text controller.
ControllerPtr controller = Controller::New();
- ConfigureTextField( controller );
+ ConfigureTextField(controller);
// Set the text
- const std::string text( "Hello World!" );
- controller->SetText( text );
- controller->SetInputFontPointSize( 1.0f );
+ 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() );
+ Controller::Impl& mImpl = Controller::Impl::GetImplementation(*controller.Get());
- DALI_TEST_EQUALS( EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION );
+ DALI_TEST_EQUALS(EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION);
// Send DELETE_SURROUNDING event
- InputMethodContext::EventData imfEvent = InputMethodContext::EventData( InputMethodContext::DELETE_SURROUNDING, "", -1, 1 );
- InputMethodContext inputMethodContext = InputMethodContext::New();
- controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
+ InputMethodContext::EventData imfEvent = InputMethodContext::EventData(InputMethodContext::DELETE_SURROUNDING, "", -1, 1);
+ InputMethodContext inputMethodContext = InputMethodContext::New();
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
// Force to update the model.
controller->GetNaturalSize();
// Simulate a key event to delete text
- controller->KeyEvent( GenerateKey( "", "", DALI_KEY_BACKSPACE, 0, 0, Dali::KeyEvent::Down ) );
+ controller->KeyEvent(GenerateKey("", "", DALI_KEY_BACKSPACE, 0, 0, Dali::KeyEvent::DOWN));
- DALI_TEST_EQUALS( EventData::EDITING, mImpl.mEventData->mState, TEST_LOCATION );
+ DALI_TEST_EQUALS(EventData::EDITING, mImpl.mEventData->mState, TEST_LOCATION);
// Perform a relayout
- const Size size( Dali::Stage::GetCurrent().GetSize() );
- controller->Relayout( size );
+ const Size size(application.GetScene().GetSize());
+ controller->Relayout(size);
tet_result(TET_PASS);
// Set the text
const std::string text("Hello World!");
- controller->SetText( text );
- controller->SetInputFontPointSize( 1.0f );
+ controller->SetText(text);
+ controller->SetInputFontPointSize(1.0f);
controller->KeyboardFocusGainEvent();
application.SendNotification();
application.Render();
// Perform a relayout
- const Size size( Dali::Stage::GetCurrent().GetSize() );
+ const Size size(application.GetScene().GetSize());
controller->Relayout(size);
// simulate a key event.
- controller->KeyEvent( GenerateKey( "a", "a", 38, 0, 0, Dali::KeyEvent::Down ) );
+ controller->KeyEvent(GenerateKey("a", "a", 38, 0, 0, Dali::KeyEvent::DOWN));
// change the input font point size
- controller->SetInputFontPointSize( 20.f );
+ controller->SetInputFontPointSize(20.f);
+
+ application.SendNotification();
+ application.Render();
+
+ // Perform a relayout
+ controller->Relayout(size);
+
+ tet_result(TET_PASS);
+
+ END_TEST;
+}
+
+int UtcDaliTextControllerDeleteSurroundings(void)
+{
+ tet_infoline(" UtcDaliTextControllerDeleteSurroundings");
+ ToolkitTestApplication application;
+
+ // Creates a text controller.
+ ControllerPtr controller = Controller::New();
+
+ ConfigureTextField(controller);
+
+ // Get the implementation of the text controller
+ Controller::Impl& mImpl = Controller::Impl::GetImplementation(*controller.Get());
+
+ DALI_TEST_EQUALS(EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION);
+
+ InputMethodContext inputMethodContext = InputMethodContext::New();
+ // Add some pre-edit text, such as Korean
+ InputMethodContext::EventData imfEvent = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "ㅂㅂㅂ", 0, 3);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
+
+ // Perform a relayout
+ const Size size(application.GetScene().GetSize());
+
+ application.SendNotification();
+ application.Render();
+
+ controller->Relayout(size);
+
+ // Simulate a key event to delete one text
+ controller->KeyEvent(GenerateKey("", "", DALI_KEY_BACKSPACE, 0, 0, Dali::KeyEvent::DOWN));
+
+ // Send DELETE_SURROUNDING event (Delete All text)
+ imfEvent = InputMethodContext::EventData(InputMethodContext::DELETE_SURROUNDING, "", -2, 2);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent);
+
+ application.SendNotification();
+ application.Render();
+
+ controller->Relayout(size);
+
+ // simulate a key event to add text
+ controller->KeyEvent(GenerateKey("ㅇ", "ㅇ", 238, 0, 0, Dali::KeyEvent::DOWN));
+ controller->KeyEvent(GenerateKey("ㅇ", "ㅇ", 238, 0, 0, Dali::KeyEvent::DOWN));
+
+ DALI_TEST_EQUALS(EventData::EDITING, mImpl.mEventData->mState, TEST_LOCATION);
+
+ // Force to update the model.
+ controller->GetNaturalSize();
application.SendNotification();
application.Render();
+ controller->Relayout(size);
+
+ tet_result(TET_PASS);
+
+ END_TEST;
+}
+
+int UtcDaliTextControllerMultipleInsert(void)
+{
+ tet_infoline(" UtcDaliTextControllerMultipleInsert");
+ ToolkitTestApplication application;
+
+ // Creates a text controller.
+ ControllerPtr controller = Controller::New();
+
+ ConfigureTextField(controller);
+
+ // Get the implementation of the text controller
+ Controller::Impl& mImpl = Controller::Impl::GetImplementation(*controller.Get());
+
+ DALI_TEST_EQUALS(EventData::INACTIVE, mImpl.mEventData->mState, TEST_LOCATION);
+
+ InputMethodContext inputMethodContext = InputMethodContext::New();
+
+ // When maid thread is busy, multiple event might be executed.
+ InputMethodContext::EventData imfEvent1 = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "A", 0, 1);
+ InputMethodContext::EventData imfEvent2 = InputMethodContext::EventData(InputMethodContext::PRE_EDIT, "AAAAA", 0, 5);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent1);
+ controller->OnInputMethodContextEvent(inputMethodContext, imfEvent2);
+
// Perform a relayout
+ const Size size(application.GetScene().GetSize());
+
+ application.SendNotification();
+ application.Render();
+
controller->Relayout(size);
+ std::string text;
+ controller->GetText(text);
+
+ DALI_TEST_EQUALS("AAAAA", text, TEST_LOCATION);
+
tet_result(TET_PASS);
END_TEST;