2 * Copyright (c) 2017 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_WORD("option-select_word"); // "Select Word" popup option.
39 const char* const OPTION_SELECT_ALL("option-select_all"); // "Select All" popup option.
40 const char* const OPTION_CUT("optionCut"); // "Cut" popup option.
41 const char* const OPTION_COPY("optionCopy"); // "Copy" popup option.
42 const char* const OPTION_PASTE("optionPaste"); // "Paste" popup option.
43 const char* const OPTION_CLIPBOARD("optionClipboard"); // "Clipboard" popup option.
45 const Size CONTROL_SIZE( 300.f, 60.f );
47 std::string gClipboardText;
48 void ContentSelectedCallback( ClipboardEventNotifier& notifier )
50 gClipboardText = notifier.GetContent();
55 int UtcDaliTextController(void)
57 tet_infoline(" UtcDaliTextController");
58 ToolkitTestApplication application;
60 // Creates a text controller.
61 ControllerPtr controller = Controller::New();
62 DALI_TEST_CHECK( controller );
68 int UtcDaliTextControllerSetGetScrollEnabled(void)
70 tet_infoline(" UtcDaliTextControllerSetGetScrollEnabled");
71 ToolkitTestApplication application;
73 // Creates a text controller.
74 ControllerPtr controller = Controller::New();
75 DALI_TEST_CHECK( controller );
77 // Configures the text controller similarly to the text-editor.
78 ConfigureTextEditor( controller );
80 DALI_TEST_CHECK( !controller->IsHorizontalScrollEnabled() );
81 DALI_TEST_CHECK( controller->IsVerticalScrollEnabled() );
83 // Configures the text controller similarly to the text-field.
84 ConfigureTextField( controller );
86 DALI_TEST_CHECK( controller->IsHorizontalScrollEnabled() );
87 DALI_TEST_CHECK( !controller->IsVerticalScrollEnabled() );
89 // Configures the text controller similarly to the text-label.
90 ConfigureTextLabel( controller );
92 DALI_TEST_CHECK( !controller->IsHorizontalScrollEnabled() );
93 DALI_TEST_CHECK( !controller->IsVerticalScrollEnabled() );
99 int UtcDaliTextControllerSetIsTextElide(void)
101 tet_infoline(" UtcDaliTextControllerSetIsTextElide");
102 ToolkitTestApplication application;
104 // Creates a text controller.
105 ControllerPtr controller = Controller::New();
106 DALI_TEST_CHECK( controller );
108 // Configures the text controller similarly to the text-editor.
109 ConfigureTextEditor( controller );
110 DALI_TEST_EQUALS( false, controller->IsTextElideEnabled(), TEST_LOCATION );
112 controller->SetTextElideEnabled( true );
113 DALI_TEST_EQUALS( true, controller->IsTextElideEnabled(), TEST_LOCATION );
115 // Configures the text controller similarly to the text-field.
116 ConfigureTextField( controller );
117 DALI_TEST_EQUALS( false, controller->IsTextElideEnabled(), TEST_LOCATION );
119 controller->SetTextElideEnabled( true );
120 DALI_TEST_EQUALS( true, controller->IsTextElideEnabled(), TEST_LOCATION );
122 // Configures the text controller similarly to the text-label.
123 ConfigureTextLabel( controller );
124 DALI_TEST_EQUALS( true, controller->IsTextElideEnabled(), TEST_LOCATION );
126 controller->SetTextElideEnabled( false );
127 DALI_TEST_EQUALS( false, controller->IsTextElideEnabled(), TEST_LOCATION );
129 tet_result(TET_PASS);
133 int UtcDaliTextControllerEnableCursorBlinking(void)
135 tet_infoline(" UtcDaliTextControllerEnableCursorBlinking");
136 ToolkitTestApplication application;
138 // Creates a text controller.
139 ControllerPtr controller = Controller::New();
140 DALI_TEST_CHECK( controller );
142 // There is no text input enabled.
143 DALI_TEST_CHECK( !controller->GetEnableCursorBlink() );
145 // Enable the text input.
146 // Creates a decorator.
147 Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
149 InputMethodContext inputMethodContext = InputMethodContext::New();
150 // Enables the text input.
151 controller->EnableTextInput( decorator, inputMethodContext );
153 // Enables the cursor blink.
154 controller->SetEnableCursorBlink( true );
156 DALI_TEST_CHECK( controller->GetEnableCursorBlink() );
158 // Disables the cursor blink.
159 controller->SetEnableCursorBlink( false );
161 DALI_TEST_CHECK( !controller->GetEnableCursorBlink() );
163 tet_result(TET_PASS);
167 int UtcDaliTextControllerImfEvent(void)
169 tet_infoline(" UtcDaliTextController");
170 ToolkitTestApplication application;
172 // Creates a text controller.
173 ControllerPtr controller = Controller::New();
176 InputMethodContext::EventData imfEvent;
178 DALI_TEST_CHECK( controller );
180 // Enable the text input.
181 // Creates a decorator.
182 Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
185 InputMethodContext inputMethodContext = InputMethodContext::New();
186 // Enables the text input.
187 controller->EnableTextInput( decorator, inputMethodContext );
189 // Set the placeholder text.
190 controller->SetPlaceholderText( Controller::PLACEHOLDER_TYPE_INACTIVE, "Hello Dali" );
193 imfEvent = InputMethodContext::EventData( InputMethodContext::GET_SURROUNDING, "", 0, 0 );
194 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
197 imfEvent = InputMethodContext::EventData( InputMethodContext::VOID, "", 0, 0 );
198 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
200 controller->GetText( text );
201 DALI_TEST_CHECK( text.empty() );
203 imfEvent = InputMethodContext::EventData( InputMethodContext::COMMIT, "Hello ", 0, 6 );
204 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
205 controller->GetNaturalSize();
207 // Check 'Delete All' key which means the input panel send a big range
208 imfEvent = InputMethodContext::EventData( InputMethodContext::DELETE_SURROUNDING, "", -100, 100 );
209 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
210 controller->GetNaturalSize();
212 controller->GetText( text );
213 DALI_TEST_EQUALS( "", text, TEST_LOCATION );
215 // Send COMMIT event.
216 imfEvent = InputMethodContext::EventData( InputMethodContext::COMMIT, "Hello ", 0, 6 );
217 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
219 // Force to update the model.
220 controller->GetNaturalSize();
222 controller->GetText( text );
223 DALI_TEST_EQUALS( "Hello ", text, TEST_LOCATION );
225 // Send PRE_EDIT event
226 imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "w", 6, 1 );
227 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
229 // Force to update the model.
230 controller->GetNaturalSize();
232 controller->GetText( text );
233 DALI_TEST_EQUALS( "Hello w", text, TEST_LOCATION );
235 // Send DELETE_SURROUNDING event
236 imfEvent = InputMethodContext::EventData( InputMethodContext::DELETE_SURROUNDING, "", -1, 1 );
237 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
239 // Force to update the model.
240 controller->GetNaturalSize();
242 controller->GetText( text );
243 DALI_TEST_EQUALS( "Hello ", text, TEST_LOCATION );
245 // Send PRE_EDIT event
246 imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "wo", 6, 2 );
247 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
249 // Force to update the model.
250 controller->GetNaturalSize();
252 controller->GetText( text );
253 DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION );
255 // Send GET_SURROUNDING event
256 imfEvent = InputMethodContext::EventData( InputMethodContext::GET_SURROUNDING, "", 0, 0 );
257 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
259 controller->GetText( text );
260 DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION );
262 // Send PRIVATE_COMMAND event
263 imfEvent = InputMethodContext::EventData( InputMethodContext::PRIVATE_COMMAND, "", 0, 0 );
264 controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
266 controller->GetText( text );
267 DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION );
269 tet_result(TET_PASS);
273 int UtcDaliTextControllerTextPopupButtonTouched(void)
275 tet_infoline(" UtcDaliTextControllerTextPopupButtonTouched");
276 ToolkitTestApplication application;
278 // Creates a text controller.
279 ControllerPtr controller = Controller::New();
281 DALI_TEST_CHECK( controller );
285 Property::Map attributes;
287 // Enable the text input.
288 // Creates a decorator.
289 Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
292 InputMethodContext inputMethodContext = InputMethodContext::New();
293 // Enables the text input.
294 controller->EnableTextInput( decorator, inputMethodContext );
296 // Creates the text's popup.
297 TextSelectionPopupCallbackInterface& callbackInterface = *controller;
298 TextSelectionPopup textPopup = TextSelectionPopup::New( &callbackInterface );
300 Toolkit::TextSelectionPopup::Buttons buttonsToEnable = static_cast<Toolkit::TextSelectionPopup::Buttons>( TextSelectionPopup::CUT |
301 TextSelectionPopup::COPY |
302 TextSelectionPopup::PASTE |
303 TextSelectionPopup::SELECT |
304 TextSelectionPopup::SELECT_ALL |
305 TextSelectionPopup::CLIPBOARD );
307 textPopup.EnableButtons( buttonsToEnable );
308 Stage::GetCurrent().Add( textPopup );
309 textPopup.ShowPopup();
312 application.SendNotification();
313 application.Render();
316 controller->SetText( "Hello world" );
318 // Select the whole text.
319 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_SELECT_ALL ) );
320 DALI_TEST_CHECK( button );
322 button.DoAction( "buttonClick", attributes );
324 // Call relayout to process the input events.
325 controller->Relayout( CONTROL_SIZE );
328 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_CUT ) );
329 DALI_TEST_CHECK( button );
331 button.DoAction( "buttonClick", attributes );
333 // Force to update the model.
334 controller->GetNaturalSize();
336 controller->GetText( text );
337 DALI_TEST_CHECK( text.empty() );
340 controller->SetText( "Hello world" );
342 // Select the whole text.
343 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_SELECT_ALL ) );
344 DALI_TEST_CHECK( button );
346 button.DoAction( "buttonClick", attributes );
348 // Call relayout to process the input events.
349 controller->Relayout( CONTROL_SIZE );
351 // Copy to the clipboard.
352 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_COPY ) );
353 DALI_TEST_CHECK( button );
355 button.DoAction( "buttonClick", attributes );
357 // Call relayout to process the input events.
358 controller->Relayout( CONTROL_SIZE );
361 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_CUT ) );
362 DALI_TEST_CHECK( button );
364 button.DoAction( "buttonClick", attributes );
366 // Force to update the model.
367 controller->GetNaturalSize();
369 controller->GetText( text );
370 DALI_TEST_CHECK( text.empty() );
372 ClipboardEventNotifier clipboardEventNotifier = ClipboardEventNotifier::Get();
373 clipboardEventNotifier.ContentSelectedSignal().Connect( &ContentSelectedCallback );
376 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_PASTE ) );
377 DALI_TEST_CHECK( button );
379 button.DoAction( "buttonClick", attributes );
381 // Call relayout to process the input events.
382 controller->Relayout( CONTROL_SIZE );
384 DALI_TEST_EQUALS( "Hello world", gClipboardText, TEST_LOCATION );
386 // Show the clipboard.
387 button = PushButton::DownCast( textPopup.FindChildByName( OPTION_CLIPBOARD ) );
388 DALI_TEST_CHECK( button );
390 button.DoAction( "buttonClick", attributes );
392 tet_result(TET_PASS);
396 int UtcDaliTextControllerGetInputShadowProperty(void)
398 tet_infoline(" UtcDaliTextControllerGetInputShadowProperty");
399 ToolkitTestApplication application;
401 // Creates a text controller.
402 ControllerPtr controller = Controller::New();
404 DALI_TEST_CHECK( controller );
406 const std::string& shadowProperties = controller->GetInputShadowProperties();
408 DALI_TEST_CHECK( shadowProperties.empty() );
410 tet_result(TET_PASS);
414 int UtcDaliTextControllerGetInputUnderlineProperty(void)
416 tet_infoline(" UtcDaliTextControllerGetInputUnderlineProperty");
417 ToolkitTestApplication application;
419 // Creates a text controller.
420 ControllerPtr controller = Controller::New();
422 DALI_TEST_CHECK( controller );
424 const std::string& underlineProperties = controller->GetInputUnderlineProperties();
426 DALI_TEST_CHECK( underlineProperties.empty() );
428 tet_result(TET_PASS);
432 int UtcDaliTextControllerSetGetAutoScrollEnabled(void)
434 tet_infoline(" UtcDaliTextControllerSetGetAutoScrollEnabled");
435 ToolkitTestApplication application;
437 // Creates a text controller.
438 ControllerPtr controller = Controller::New();
440 DALI_TEST_CHECK( controller );
442 DALI_TEST_CHECK( !controller->IsAutoScrollEnabled() );
444 // The auto scrolling shouldn't be enabled if the multi-line is enabled.
446 // Enable multi-line.
447 controller->SetMultiLineEnabled( true );
449 // Enable text scrolling.
450 controller->SetAutoScrollEnabled( true );
452 DALI_TEST_CHECK( !controller->IsAutoScrollEnabled() );
454 // Disable multi-line.
455 controller->SetMultiLineEnabled( false );
457 // Enable text scrolling.
458 controller->SetAutoScrollEnabled( true );
460 // Should be ebabled now.
461 DALI_TEST_CHECK( controller->IsAutoScrollEnabled() );
463 tet_result(TET_PASS);
467 int UtcDaliTextControllerSetGetCheckProperty(void)
469 tet_infoline(" UtcDaliTextControllerSetGetCheckProperty");
470 ToolkitTestApplication application;
472 // Creates a text controller.
473 ControllerPtr controller = Controller::New();
475 DALI_TEST_CHECK( controller );
477 // Enable the text input.
478 // Creates a decorator.
479 Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller );
481 InputMethodContext inputMethodContext = InputMethodContext::New();
482 // Enables the text input.
483 controller->EnableTextInput( decorator, inputMethodContext );
485 DALI_TEST_CHECK( !controller->IsInputModePassword() );
487 // Set the text input to password.
488 controller->SetInputModePassword( true );
490 DALI_TEST_CHECK( controller->IsInputModePassword() );
492 // Unset the text input to password.
493 controller->SetInputModePassword( false );
495 DALI_TEST_CHECK( !controller->IsInputModePassword() );
497 tet_result(TET_PASS);
501 int UtcDaliTextControllerSetGetTapLongPressAction(void)
503 tet_infoline(" UtcDaliTextControllerSetGetTapLongPressAction");
504 ToolkitTestApplication application;
506 // Creates a text controller.
507 ControllerPtr controller = Controller::New();
509 DALI_TEST_CHECK( controller );
511 // Test first with no decorator.
513 DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextDoubleTapAction(), TEST_LOCATION );
514 controller->SetNoTextDoubleTapAction( Controller::NoTextTap::HIGHLIGHT );
515 DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextDoubleTapAction(), TEST_LOCATION );
517 DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextLongPressAction(), TEST_LOCATION );
518 controller->SetNoTextLongPressAction( Controller::NoTextTap::HIGHLIGHT );
519 DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextLongPressAction(), TEST_LOCATION );
521 // Add a decorator and re-test.
523 // Creates a decorator.
524 Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller );
526 InputMethodContext inputMethodContext = InputMethodContext::New();
527 // Enables the text input.
528 controller->EnableTextInput( decorator, inputMethodContext );
530 DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextDoubleTapAction(), TEST_LOCATION );
531 controller->SetNoTextDoubleTapAction( Controller::NoTextTap::HIGHLIGHT );
532 DALI_TEST_EQUALS( Controller::NoTextTap::HIGHLIGHT, controller->GetNoTextDoubleTapAction(), TEST_LOCATION );
534 DALI_TEST_EQUALS( Controller::NoTextTap::SHOW_SELECTION_POPUP, controller->GetNoTextLongPressAction(), TEST_LOCATION ); // The default is SHOW_SELECTION_POPUP
535 controller->SetNoTextLongPressAction( Controller::NoTextTap::HIGHLIGHT );
536 DALI_TEST_EQUALS( Controller::NoTextTap::HIGHLIGHT, controller->GetNoTextLongPressAction(), TEST_LOCATION );
541 int UtcDaliTextControllerSetGetLineSpacingProperty(void)
543 tet_infoline(" UtcDaliTextControllerSetGetLineSpacingProperty");
544 ToolkitTestApplication application;
546 const Size size( Dali::Stage::GetCurrent().GetSize() );
549 const std::string textSingle("A Quick Brown Fox Jumps Over The Lazy Dog");
552 const std::string textMulti("A Quick Brown\nFox Jumps Over\nThe Lazy Dog");
554 // Creates a text controller.
555 ControllerPtr controller = Controller::New();
557 ConfigureTextLabel(controller);
559 // single line, line spacing = 0px
561 const float EXPECTED_SPACING = 0.0f;
562 const Vector2 EXPECTED_LAYOUT_SIZE( 326.0f, 19.0f);
563 const Vector3 EXPECTED_NATURAL_SIZE( 326.0f, 20.0f, 0.0f );
565 controller->SetText(textSingle);
566 controller->Relayout(size);
567 controller->SetMultiLineEnabled( false );
569 Vector3 naturalSize = controller->GetNaturalSize();
570 Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
571 float lineSpacing0 = controller->GetDefaultLineSpacing();
573 DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
574 DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
575 DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
578 // single line, line spacing = 20px
580 const float EXPECTED_SPACING = 20.0f;
581 const Vector2 EXPECTED_LAYOUT_SIZE( 326.0f, 19.0f );
582 const Vector3 EXPECTED_NATURAL_SIZE( 326.0f, 40.0f, 0.0f );
584 controller->SetText(textSingle);
585 controller->Relayout(size);
586 controller->SetDefaultLineSpacing( 20 );
587 controller->SetMultiLineEnabled( false );
589 Vector3 naturalSize = controller->GetNaturalSize();
590 Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
591 float lineSpacing0 = controller->GetDefaultLineSpacing();
593 DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
594 DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
595 DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
598 // multi-line, line spacing = 0px
600 const float EXPECTED_SPACING = 0.0f;
601 const Vector2 EXPECTED_LAYOUT_SIZE( 318.0f, 39.0f );
602 const Vector3 EXPECTED_NATURAL_SIZE( 116.0f, 58.0f, 0.0f );
604 controller->SetText(textMulti);
605 controller->Relayout(size);
606 controller->SetMultiLineEnabled( true );
607 controller->SetDefaultLineSpacing( 0 );
609 Vector3 naturalSize = controller->GetNaturalSize();
610 Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
611 float lineSpacing0 = controller->GetDefaultLineSpacing();
613 DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
614 DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
615 DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
618 // multi-line, line spacing = 20px
620 const float EXPECTED_SPACING = 20.0f;
621 const Vector2 EXPECTED_LAYOUT_SIZE( 115.0f, 57.0f );
622 const Vector3 EXPECTED_NATURAL_SIZE( 116.0f, 118.0f, 0.0f );
624 controller->SetText(textMulti);
625 controller->Relayout(size);
626 controller->SetMultiLineEnabled( true );
627 controller->SetDefaultLineSpacing( 20 );
629 Vector3 naturalSize = controller->GetNaturalSize();
630 Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
631 float lineSpacing0 = controller->GetDefaultLineSpacing();
633 DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
634 DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
635 DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
638 // multi-line, line spacing = 30px
640 const float EXPECTED_SPACING = 30.0f;
641 const Vector2 EXPECTED_LAYOUT_SIZE( 115.0f, 117.0f );
642 const Vector3 EXPECTED_NATURAL_SIZE( 116.0f, 148.0f, 0.0f );
644 controller->SetText(textMulti);
645 controller->Relayout(size);
646 controller->SetMultiLineEnabled( true );
647 controller->SetDefaultLineSpacing( 30 );
649 Vector3 naturalSize = controller->GetNaturalSize();
650 Vector2 layoutSize = controller->GetTextModel()->GetLayoutSize();
651 float lineSpacing0 = controller->GetDefaultLineSpacing();
653 DALI_TEST_EQUALS( EXPECTED_SPACING, lineSpacing0, TEST_LOCATION );
654 DALI_TEST_EQUALS( EXPECTED_LAYOUT_SIZE, layoutSize, TEST_LOCATION );
655 DALI_TEST_EQUALS( EXPECTED_NATURAL_SIZE, naturalSize, TEST_LOCATION );
663 int UtcDaliTextControllerCheckBufferIndices(void)
665 tet_infoline(" UtcDaliTextControllerCheckBufferIndices");
666 ToolkitTestApplication application;
668 // Creates a text controller.
669 ControllerPtr controller = Controller::New();
671 ConfigureTextLabel(controller);
674 const std::string text("A Quick Brown Fox Jumps Over The Lazy Dog");
675 controller->SetText(text);
677 // Get the implementation of the text controller
678 Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() );
680 // Tweak some parameters to make the indices to access the text buffer invalid
681 mImpl.mTextUpdateInfo.mNumberOfCharactersToAdd = mImpl.mModel->mLogicalModel->mText.Count() * 10u;
682 mImpl.mTextUpdateInfo.mNumberOfCharactersToRemove = 0u;
683 mImpl.mTextUpdateInfo.mPreviousNumberOfCharacters = 0u;
684 mImpl.mOperationsPending = Controller::ALL_OPERATIONS;
686 // Perform a relayout
687 const Size size( Dali::Stage::GetCurrent().GetSize() );
688 controller->Relayout(size);
690 tet_result(TET_PASS);