[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Text-Controller.cpp
index 7c4636d..774cce1 100644 (file)
@@ -44,12 +44,6 @@ const char* const OPTION_CLIPBOARD("optionClipboard");    // "Clipboard" popup o
 
 const Size CONTROL_SIZE(300.f, 60.f);
 
-std::string gClipboardText;
-void        ContentSelectedCallback(TextClipboardEventNotifier& notifier)
-{
-  gClipboardText = notifier.GetContent();
-}
-
 // Generate a KeyEvent to send to Core.
 Dali::KeyEvent GenerateKey(const std::string&           keyName,
                            const std::string&           keyString,
@@ -547,9 +541,6 @@ int UtcDaliTextControllerTextPopupButtonTouched(void)
   controller->GetText(text);
   DALI_TEST_CHECK(text.empty());
 
-  TextClipboardEventNotifier clipboardEventNotifier = TextClipboardEventNotifier::Get();
-  clipboardEventNotifier.ContentSelectedSignal().Connect(&ContentSelectedCallback);
-
   // Paste the text.
   button = PushButton::DownCast(textPopup.FindChildByName(OPTION_PASTE));
   DALI_TEST_CHECK(button);
@@ -558,8 +549,9 @@ int UtcDaliTextControllerTextPopupButtonTouched(void)
 
   // Call relayout to process the input events.
   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));
@@ -1370,3 +1362,44 @@ int UtcDaliTextControllerDeleteSurroundings(void)
 
   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;
+}