2 * Copyright (c) 2019 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
23 #include <dali-toolkit-test-suite-utils.h>
24 #include <dali-toolkit/dali-toolkit.h>
25 #include <toolkit-text-utils.h>
26 #include <dali-toolkit/internal/text/text-controller.h>
27 #include <dali-toolkit/internal/text/text-control-interface.h>
28 #include <dali-toolkit/internal/text/text-editable-control-interface.h>
29 #include <dali-toolkit/internal/text/text-controller-impl.h>
32 using namespace Toolkit;
38 const char* const OPTION_SELECT_ALL("option-select_all"); // "Select All" popup option.
39 const char* const OPTION_CUT("optionCut"); // "Cut" popup option.
40 const char* const OPTION_COPY("optionCopy"); // "Copy" popup option.
41 const char* const OPTION_PASTE("optionPaste"); // "Paste" popup option.
42 const char* const OPTION_CLIPBOARD("optionClipboard"); // "Clipboard" popup option.
44 const Size CONTROL_SIZE( 300.f, 60.f );
46 std::string gClipboardText;
47 void ContentSelectedCallback( ClipboardEventNotifier& notifier )
49 gClipboardText = notifier.GetContent();
54 int UtcDaliTextController(void)
56 tet_infoline(" UtcDaliTextController");
57 ToolkitTestApplication application;
59 // Creates a text controller.
60 ControllerPtr controller = Controller::New();
61 DALI_TEST_CHECK( controller );
67 int UtcDaliTextControllerSetGetScrollEnabled(void)
69 tet_infoline(" UtcDaliTextControllerSetGetScrollEnabled");
70 ToolkitTestApplication application;
72 // Creates a text controller.
73 ControllerPtr controller = Controller::New();
74 DALI_TEST_CHECK( controller );
76 // Configures the text controller similarly to the text-editor.
77 ConfigureTextEditor( controller );
79 DALI_TEST_CHECK( !controller->IsHorizontalScrollEnabled() );
80 DALI_TEST_CHECK( controller->IsVerticalScrollEnabled() );
82 // Configures the text controller similarly to the text-field.
83 ConfigureTextField( controller );
85 DALI_TEST_CHECK( controller->IsHorizontalScrollEnabled() );
86 DALI_TEST_CHECK( !controller->IsVerticalScrollEnabled() );
88 // Configures the text controller similarly to the text-label.
89 ConfigureTextLabel( controller );
91 DALI_TEST_CHECK( !controller->IsHorizontalScrollEnabled() );
92 DALI_TEST_CHECK( !controller->IsVerticalScrollEnabled() );
98 int UtcDaliTextControllerSetIsTextElide(void)
100 tet_infoline(" UtcDaliTextControllerSetIsTextElide");
101 ToolkitTestApplication application;
103 // Creates a text controller.
104 ControllerPtr controller = Controller::New();
105 DALI_TEST_CHECK( controller );
107 // Configures the text controller similarly to the text-editor.
108 ConfigureTextEditor( controller );
109 DALI_TEST_EQUALS( false, controller->IsTextElideEnabled(), TEST_LOCATION );
111 controller->SetTextElideEnabled( true );
112 DALI_TEST_EQUALS( true, controller->IsTextElideEnabled(), TEST_LOCATION );
114 // Configures the text controller similarly to the text-field.
115 ConfigureTextField( controller );
116 DALI_TEST_EQUALS( false, controller->IsTextElideEnabled(), TEST_LOCATION );
118 controller->SetTextElideEnabled( true );
119 DALI_TEST_EQUALS( true, controller->IsTextElideEnabled(), TEST_LOCATION );
121 // Configures the text controller similarly to the text-label.
122 ConfigureTextLabel( controller );
123 DALI_TEST_EQUALS( true, controller->IsTextElideEnabled(), TEST_LOCATION );
125 controller->SetTextElideEnabled( false );
126 DALI_TEST_EQUALS( false, controller->IsTextElideEnabled(), TEST_LOCATION );
128 tet_result(TET_PASS);
132 int UtcDaliTextControllerEnableCursorBlinking(void)
134 tet_infoline(" UtcDaliTextControllerEnableCursorBlinking");
135 ToolkitTestApplication application;
137 // Creates a text controller.
138 ControllerPtr controller = Controller::New();
139 DALI_TEST_CHECK( controller );
141 // There is no text input enabled.
142 DALI_TEST_CHECK( !controller->GetEnableCursorBlink() );
144 // Enable the text input.
145 // Creates a decorator.
146 Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
148 InputMethodContext inputMethodContext = InputMethodContext::New();
149 // Enables the text input.
150 controller->EnableTextInput( decorator, inputMethodContext );
152 // Enables the cursor blink.
153 controller->SetEnableCursorBlink( true );
155 DALI_TEST_CHECK( controller->GetEnableCursorBlink() );
157 // Disables the cursor blink.
158 controller->SetEnableCursorBlink( false );
160 DALI_TEST_CHECK( !controller->GetEnableCursorBlink() );
162 tet_result(TET_PASS);
166 int UtcDaliTextControllerImfEvent(void)
168 tet_infoline(" UtcDaliTextController");
169 ToolkitTestApplication application;
171 // Creates a text controller.
172 ControllerPtr controller = Controller::New();
175 InputMethodContext::EventData imfEvent;
177 DALI_TEST_CHECK( controller );
179 // Enable the text input.
180 // Creates a decorator.
181 Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
184 InputMethodContext inputMethodContext = InputMethodContext::New();
185 // Enables the text input.
186 controller->EnableTextInput( decorator, inputMethodContext );
188 // Set the placeholder text.
189 controller->SetPlaceholderText( Controller::PLACEHOLDER_TYPE_INACTIVE, "Hello Dali" );
192 imfEvent = InputMethodContext::EventData( InputMethodContext::GET_SURROUNDING, "", 0, 0 );
193 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
196 imfEvent = InputMethodContext::EventData( InputMethodContext::VOID, "", 0, 0 );
197 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
199 controller->GetText( text );
200 DALI_TEST_CHECK( text.empty() );
202 imfEvent = InputMethodContext::EventData( InputMethodContext::COMMIT, "Hello ", 0, 6 );
203 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
204 controller->GetNaturalSize();
206 // Check 'Delete All' key which means the input panel send a big range
207 imfEvent = InputMethodContext::EventData( InputMethodContext::DELETE_SURROUNDING, "", -100, 100 );
208 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
209 controller->GetNaturalSize();
211 controller->GetText( text );
212 DALI_TEST_EQUALS( "", text, TEST_LOCATION );
214 // Send COMMIT event.
215 imfEvent = InputMethodContext::EventData( InputMethodContext::COMMIT, "Hello ", 0, 6 );
216 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
218 // Force to update the model.
219 controller->GetNaturalSize();
221 controller->GetText( text );
222 DALI_TEST_EQUALS( "Hello ", text, TEST_LOCATION );
224 // Send PRE_EDIT event
225 imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "w", 6, 1 );
226 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
228 // Force to update the model.
229 controller->GetNaturalSize();
231 controller->GetText( text );
232 DALI_TEST_EQUALS( "Hello w", text, TEST_LOCATION );
234 // Send DELETE_SURROUNDING event
235 imfEvent = InputMethodContext::EventData( InputMethodContext::DELETE_SURROUNDING, "", -1, 1 );
236 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
238 // Force to update the model.
239 controller->GetNaturalSize();
241 controller->GetText( text );
242 DALI_TEST_EQUALS( "Hello ", text, TEST_LOCATION );
244 // Send PRE_EDIT event
245 imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "wo", 6, 2 );
246 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
248 // Force to update the model.
249 controller->GetNaturalSize();
251 controller->GetText( text );
252 DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION );
254 // Send GET_SURROUNDING event
255 imfEvent = InputMethodContext::EventData( InputMethodContext::GET_SURROUNDING, "", 0, 0 );
256 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
258 controller->GetText( text );
259 DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION );
261 // Send PRIVATE_COMMAND event
262 imfEvent = InputMethodContext::EventData( InputMethodContext::PRIVATE_COMMAND, "", 0, 0 );
263 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
265 controller->GetText( text );
266 DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION );
268 tet_result(TET_PASS);
272 int UtcDaliTextControllerTextPopupButtonTouched(void)
274 tet_infoline(" UtcDaliTextControllerTextPopupButtonTouched");
275 ToolkitTestApplication application;
277 // Creates a text controller.
278 ControllerPtr controller = Controller::New();
280 DALI_TEST_CHECK( controller );
284 Property::Map attributes;
286 // Enable the text input.
287 // Creates a decorator.
288 Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
291 InputMethodContext inputMethodContext = InputMethodContext::New();
292 // Enables the text input.
293 controller->EnableTextInput( decorator, inputMethodContext );
295 // Creates the text's popup.
296 TextSelectionPopupCallbackInterface& callbackInterface = *controller;
297 TextSelectionPopup textPopup = TextSelectionPopup::New( &callbackInterface );
299 Toolkit::TextSelectionPopup::Buttons buttonsToEnable = static_cast<Toolkit::TextSelectionPopup::Buttons>( TextSelectionPopup::CUT |
300 TextSelectionPopup::COPY |
301 TextSelectionPopup::PASTE |
302 TextSelectionPopup::SELECT |
303 TextSelectionPopup::SELECT_ALL |
304 TextSelectionPopup::CLIPBOARD );
306 textPopup.EnableButtons( buttonsToEnable );
307 Stage::GetCurrent().Add( textPopup );
308 textPopup.ShowPopup();
311 application.SendNotification();
312 application.Render();
315 controller->SetText( "Hello world" );
317 // Select the whole text.
318 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_SELECT_ALL ) );
319 DALI_TEST_CHECK( button );
321 button.DoAction( "buttonClick", attributes );
323 // Call relayout to process the input events.
324 controller->Relayout( CONTROL_SIZE );
327 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_CUT ) );
328 DALI_TEST_CHECK( button );
330 button.DoAction( "buttonClick", attributes );
332 // Force to update the model.
333 controller->GetNaturalSize();
335 controller->GetText( text );
336 DALI_TEST_CHECK( text.empty() );
339 controller->SetText( "Hello world" );
341 // Select the whole text.
342 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_SELECT_ALL ) );
343 DALI_TEST_CHECK( button );
345 button.DoAction( "buttonClick", attributes );
347 // Call relayout to process the input events.
348 controller->Relayout( CONTROL_SIZE );
350 // Copy to the clipboard.
351 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_COPY ) );
352 DALI_TEST_CHECK( button );
354 button.DoAction( "buttonClick", attributes );
356 // Call relayout to process the input events.
357 controller->Relayout( CONTROL_SIZE );
360 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_CUT ) );
361 DALI_TEST_CHECK( button );
363 button.DoAction( "buttonClick", attributes );
365 // Force to update the model.
366 controller->GetNaturalSize();
368 controller->GetText( text );
369 DALI_TEST_CHECK( text.empty() );
371 ClipboardEventNotifier clipboardEventNotifier = ClipboardEventNotifier::Get();
372 clipboardEventNotifier.ContentSelectedSignal().Connect( &ContentSelectedCallback );
375 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_PASTE ) );
376 DALI_TEST_CHECK( button );
378 button.DoAction( "buttonClick", attributes );
380 // Call relayout to process the input events.
381 controller->Relayout( CONTROL_SIZE );
383 DALI_TEST_EQUALS( "Hello world", gClipboardText, TEST_LOCATION );
385 // Show the clipboard.
386 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_CLIPBOARD ) );
387 DALI_TEST_CHECK( button );
389 button.DoAction( "buttonClick", attributes );
391 tet_result(TET_PASS);
395 int UtcDaliTextControllerGetInputShadowProperty(void)
397 tet_infoline(" UtcDaliTextControllerGetInputShadowProperty");
398 ToolkitTestApplication application;
400 // Creates a text controller.
401 ControllerPtr controller = Controller::New();
403 DALI_TEST_CHECK( controller );
405 const std::string& shadowProperties = controller->GetInputShadowProperties();
407 DALI_TEST_CHECK( shadowProperties.empty() );
409 tet_result(TET_PASS);
413 int UtcDaliTextControllerGetInputUnderlineProperty(void)
415 tet_infoline(" UtcDaliTextControllerGetInputUnderlineProperty");
416 ToolkitTestApplication application;
418 // Creates a text controller.
419 ControllerPtr controller = Controller::New();
421 DALI_TEST_CHECK( controller );
423 const std::string& underlineProperties = controller->GetInputUnderlineProperties();
425 DALI_TEST_CHECK( underlineProperties.empty() );
427 tet_result(TET_PASS);
431 int UtcDaliTextControllerSetGetAutoScrollEnabled(void)
433 tet_infoline(" UtcDaliTextControllerSetGetAutoScrollEnabled");
434 ToolkitTestApplication application;
436 // Creates a text controller.
437 ControllerPtr controller = Controller::New();
439 DALI_TEST_CHECK( controller );
441 DALI_TEST_CHECK( !controller->IsAutoScrollEnabled() );
443 // The auto scrolling shouldn't be enabled if the multi-line is enabled.
445 // Enable multi-line.
446 controller->SetMultiLineEnabled( true );
448 // Enable text scrolling.
449 controller->SetAutoScrollEnabled( true );
451 DALI_TEST_CHECK( !controller->IsAutoScrollEnabled() );
453 // Disable multi-line.
454 controller->SetMultiLineEnabled( false );
456 // Enable text scrolling.
457 controller->SetAutoScrollEnabled( true );
459 // Should be ebabled now.
460 DALI_TEST_CHECK( controller->IsAutoScrollEnabled() );
462 tet_result(TET_PASS);
466 int UtcDaliTextControllerSetGetCheckProperty(void)
468 tet_infoline(" UtcDaliTextControllerSetGetCheckProperty");
469 ToolkitTestApplication application;
471 // Creates a text controller.
472 ControllerPtr controller = Controller::New();
474 DALI_TEST_CHECK( controller );
476 // Enable the text input.
477 // Creates a decorator.
478 Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller );
480 InputMethodContext inputMethodContext = InputMethodContext::New();
481 // Enables the text input.
482 controller->EnableTextInput( decorator, inputMethodContext );
484 DALI_TEST_CHECK( !controller->IsInputModePassword() );
486 // Set the text input to password.
487 controller->SetInputModePassword( true );
489 DALI_TEST_CHECK( controller->IsInputModePassword() );
491 // Unset the text input to password.
492 controller->SetInputModePassword( false );
494 DALI_TEST_CHECK( !controller->IsInputModePassword() );
496 tet_result(TET_PASS);
500 int UtcDaliTextControllerSetGetTapLongPressAction(void)
502 tet_infoline(" UtcDaliTextControllerSetGetTapLongPressAction");
503 ToolkitTestApplication application;
505 // Creates a text controller.
506 ControllerPtr controller = Controller::New();
508 DALI_TEST_CHECK( controller );
510 // Test first with no decorator.
512 DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextDoubleTapAction(), TEST_LOCATION );
513 controller->SetNoTextDoubleTapAction( Controller::NoTextTap::HIGHLIGHT );
514 DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextDoubleTapAction(), TEST_LOCATION );
516 DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextLongPressAction(), TEST_LOCATION );
517 controller->SetNoTextLongPressAction( Controller::NoTextTap::HIGHLIGHT );
518 DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextLongPressAction(), TEST_LOCATION );
520 // Add a decorator and re-test.
522 // Creates a decorator.
523 Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller );
525 InputMethodContext inputMethodContext = InputMethodContext::New();
526 // Enables the text input.
527 controller->EnableTextInput( decorator, inputMethodContext );
529 DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextDoubleTapAction(), TEST_LOCATION );
530 controller->SetNoTextDoubleTapAction( Controller::NoTextTap::HIGHLIGHT );
531 DALI_TEST_EQUALS( Controller::NoTextTap::HIGHLIGHT, controller->GetNoTextDoubleTapAction(), TEST_LOCATION );
533 DALI_TEST_EQUALS( Controller::NoTextTap::SHOW_SELECTION_POPUP, controller->GetNoTextLongPressAction(), TEST_LOCATION ); // The default is SHOW_SELECTION_POPUP
534 controller->SetNoTextLongPressAction( Controller::NoTextTap::HIGHLIGHT );
535 DALI_TEST_EQUALS( Controller::NoTextTap::HIGHLIGHT, controller->GetNoTextLongPressAction(), TEST_LOCATION );
540 int UtcDaliTextControllerSetGetLineSpacingProperty(void)
542 tet_infoline(" UtcDaliTextControllerSetGetLineSpacingProperty");
543 ToolkitTestApplication application;
545 const Size size( Dali::Stage::GetCurrent().GetSize() );
548 const std::string textSingle("A Quick Brown Fox Jumps Over The Lazy Dog");
551 const std::string textMulti("A Quick Brown\nFox Jumps Over\nThe Lazy Dog");
553 // Creates a text controller.
554 ControllerPtr controller = Controller::New();
556 ConfigureTextLabel(controller);
558 // single line, line spacing = 0px
560 const float EXPECTED_SPACING = 0.0f;
561 const Vector2 EXPECTED_LAYOUT_SIZE( 343.0f, 19.0f);
562 const Vector3 EXPECTED_NATURAL_SIZE( 344.0f, 20.0f, 0.0f );
564 controller->SetText(textSingle);
565 controller->Relayout(size);
566 controller->SetMultiLineEnabled( false );
568 Vector3 naturalSize = controller->GetNaturalSize();
569 Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
570 float lineSpacing0 = controller->GetDefaultLineSpacing();
572 DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
573 DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
574 DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
577 // single line, line spacing = 20px
579 const float EXPECTED_SPACING = 20.0f;
580 const Vector2 EXPECTED_LAYOUT_SIZE( 343.0f, 19.0f );
581 const Vector3 EXPECTED_NATURAL_SIZE( 344.0f, 40.0f, 0.0f );
583 controller->SetText(textSingle);
584 controller->Relayout(size);
585 controller->SetDefaultLineSpacing( 20 );
586 controller->SetMultiLineEnabled( false );
588 Vector3 naturalSize = controller->GetNaturalSize();
589 Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
590 float lineSpacing0 = controller->GetDefaultLineSpacing();
592 DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
593 DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
594 DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
597 // multi-line, line spacing = 0px
599 const float EXPECTED_SPACING = 0.0f;
600 const Vector2 EXPECTED_LAYOUT_SIZE( 333.0f, 39.0f );
601 const Vector3 EXPECTED_NATURAL_SIZE( 120.0f, 58.0f, 0.0f );
603 controller->SetText(textMulti);
604 controller->Relayout(size);
605 controller->SetMultiLineEnabled( true );
606 controller->SetDefaultLineSpacing( 0 );
608 Vector3 naturalSize = controller->GetNaturalSize();
609 Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
610 float lineSpacing0 = controller->GetDefaultLineSpacing();
612 DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
613 DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
614 DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
617 // multi-line, line spacing = 20px
619 const float EXPECTED_SPACING = 20.0f;
620 const Vector2 EXPECTED_LAYOUT_SIZE( 119.0f, 57.0f );
621 const Vector3 EXPECTED_NATURAL_SIZE( 120.0f, 118.0f, 0.0f );
623 controller->SetText(textMulti);
624 controller->Relayout(size);
625 controller->SetMultiLineEnabled( true );
626 controller->SetDefaultLineSpacing( 20 );
628 Vector3 naturalSize = controller->GetNaturalSize();
629 Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
630 float lineSpacing0 = controller->GetDefaultLineSpacing();
632 DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
633 DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
634 DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
637 // multi-line, line spacing = 30px
639 const float EXPECTED_SPACING = 30.0f;
640 const Vector2 EXPECTED_LAYOUT_SIZE( 119.0f, 117.0f );
641 const Vector3 EXPECTED_NATURAL_SIZE( 120.0f, 148.0f, 0.0f );
643 controller->SetText(textMulti);
644 controller->Relayout(size);
645 controller->SetMultiLineEnabled( true );
646 controller->SetDefaultLineSpacing( 30 );
648 Vector3 naturalSize = controller->GetNaturalSize();
649 Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
650 float lineSpacing0 = controller->GetDefaultLineSpacing();
652 DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
653 DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
654 DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
662 int UtcDaliTextControllerCheckBufferIndices(void)
664 tet_infoline(" UtcDaliTextControllerCheckBufferIndices");
665 ToolkitTestApplication application;
667 // Creates a text controller.
668 ControllerPtr controller = Controller::New();
670 ConfigureTextLabel(controller);
673 const std::string text("A Quick Brown Fox Jumps Over The Lazy Dog");
674 controller->SetText(text);
676 // Get the implementation of the text controller
677 Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() );
679 // Tweak some parameters to make the indices to access the text buffer invalid
680 mImpl.mTextUpdateInfo.mNumberOfCharactersToAdd = mImpl.mModel->mLogicalModel->mText.Count() * 10u;
681 mImpl.mTextUpdateInfo.mNumberOfCharactersToRemove = 0u;
682 mImpl.mTextUpdateInfo.mPreviousNumberOfCharacters = 0u;
683 mImpl.mOperationsPending = Controller::ALL_OPERATIONS;
685 // Perform a relayout
686 const Size size( Dali::Stage::GetCurrent().GetSize() );
687 controller->Relayout(size);
689 tet_result(TET_PASS);