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.
18 // Need to override adaptor classes for toolkit test harness, so include
19 // test harness headers before dali headers.
20 #include <dali-toolkit-test-suite-utils.h>
23 #include <dali-toolkit/dali-toolkit.h>
25 #include <dali/devel-api/adaptor-framework/accessibility.h>
26 #include <dali/devel-api/atspi-interfaces/accessible.h>
27 #include <dali/devel-api/atspi-interfaces/text.h>
28 #include <dali-toolkit/internal/controls/text-controls/text-field-impl.h>
29 #include <dali-toolkit/internal/controls/text-controls/text-editor-impl.h>
31 #include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
33 void utc_dali_toolkit_accessibility_text_startup(void)
35 test_return_value = TET_UNDEF;
36 DBusWrapper::Install(std::unique_ptr<DBusWrapper>(new TestDBusWrapper));
39 void utc_dali_toolkit_accessibility_text_cleanup(void)
41 test_return_value = TET_PASS;
44 int utcDaliAccessibilityTextEditorGetName(void)
46 ToolkitTestApplication application;
48 auto editor = Dali::Toolkit::TextEditor::New();
49 DALI_TEST_EQUALS( editor.GetProperty<std::string>(Actor::Property::NAME), "", TEST_LOCATION );
50 editor.SetProperty(Actor::Property::NAME, "editor");
51 DALI_TEST_EQUALS( editor.GetProperty<std::string>(Actor::Property::NAME), "editor", TEST_LOCATION );
56 int utcDaliAccessibilityTextEditorGetText(void)
58 ToolkitTestApplication application;
60 auto editor = Dali::Toolkit::TextEditor::New();
61 auto q = Dali::Accessibility::Accessible::Get( editor );
62 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
66 DALI_TEST_EQUALS( x->GetText( 0, 0 ), "", TEST_LOCATION );
67 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "exemplary_text" );
68 DALI_TEST_EQUALS( x->GetText( 0, 9 ), "exemplary", TEST_LOCATION );
74 int utcDaliAccessibilityTextEditorGetCharacterCount(void)
76 ToolkitTestApplication application;
78 auto editor = Dali::Toolkit::TextEditor::New();
79 auto q = Dali::Accessibility::Accessible::Get( editor );
80 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
84 DALI_TEST_EQUALS( x->GetCharacterCount(), 0, TEST_LOCATION );
85 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "editor" );
86 DALI_TEST_EQUALS( x->GetCharacterCount(), 6, TEST_LOCATION );
92 int utcDaliAccessibilityTextEditorGetTextAtOffset(void)
94 ToolkitTestApplication application;
96 auto editor = Dali::Toolkit::TextEditor::New();
97 auto q = Dali::Accessibility::Accessible::Get( editor );
98 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
102 auto range = x->GetTextAtOffset( 0, Dali::Accessibility::TextBoundary::LINE );
103 DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
104 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
105 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
107 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "text editor test sentence" );
108 range = x->GetTextAtOffset( 5, Dali::Accessibility::TextBoundary::CHARACTER );
109 DALI_TEST_EQUALS( range.content, "e", TEST_LOCATION );
110 DALI_TEST_EQUALS( range.startOffset, 5, TEST_LOCATION );
111 DALI_TEST_EQUALS( range.endOffset, 6, TEST_LOCATION );
113 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
114 range = x->GetTextAtOffset( 3, Dali::Accessibility::TextBoundary::WORD );
115 DALI_TEST_EQUALS( range.content, "sentence", TEST_LOCATION );
116 DALI_TEST_EQUALS( range.startOffset, 28, TEST_LOCATION );
117 DALI_TEST_EQUALS( range.endOffset, 36, TEST_LOCATION );
119 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
120 range = x->GetTextAtOffset( 4, Dali::Accessibility::TextBoundary::WORD );
121 DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
122 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
123 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
125 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
126 range = x->GetTextAtOffset( 0, Dali::Accessibility::TextBoundary::LINE );
127 DALI_TEST_EQUALS( range.content, "text \n", TEST_LOCATION );
128 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
129 DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
131 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
132 range = x->GetTextAtOffset( 6, Dali::Accessibility::TextBoundary::LINE );
133 DALI_TEST_EQUALS( range.content, " editor \n", TEST_LOCATION );
134 DALI_TEST_EQUALS( range.startOffset, 14, TEST_LOCATION );
135 DALI_TEST_EQUALS( range.endOffset, 24, TEST_LOCATION );
137 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
138 range = x->GetTextAtOffset( 8, Dali::Accessibility::TextBoundary::LINE );
139 DALI_TEST_EQUALS( range.content, " test sentence", TEST_LOCATION );
140 DALI_TEST_EQUALS( range.startOffset, 25, TEST_LOCATION );
141 DALI_TEST_EQUALS( range.endOffset, 39, TEST_LOCATION );
147 int utcDaliAccessibilityTextEditorGetSetRangeOfSelection(void)
149 ToolkitTestApplication application;
151 auto editor = Dali::Toolkit::TextEditor::New();
152 auto q = Dali::Accessibility::Accessible::Get( editor );
153 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
154 DALI_TEST_CHECK( x );
157 auto range = x->GetRangeOfSelection( 0 );
158 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
159 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
160 DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
162 x->SetRangeOfSelection( 0, 4, 9 );
163 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "exemplary_text" );
164 range = x->GetRangeOfSelection( 0 );
166 DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
167 DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
168 DALI_TEST_EQUALS( range.content, "plary", TEST_LOCATION );
174 int utcDaliAccessibilityTextEditorRemoveSelection(void)
176 ToolkitTestApplication application;
178 auto editor = Dali::Toolkit::TextEditor::New();
179 auto q = Dali::Accessibility::Accessible::Get( editor );
180 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
181 DALI_TEST_CHECK( x );
184 auto range = x->GetRangeOfSelection( 0 );
185 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
186 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
188 x->SetRangeOfSelection( 0, 4, 9 );
189 range = x->GetRangeOfSelection( 0 );
190 DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
191 DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
193 x->RemoveSelection( 0 );
194 range = x->GetRangeOfSelection( 0 );
195 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
196 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
202 int utcDaliAccessibilityTextEditorGetRangeExtents(void)
204 ToolkitTestApplication application;
206 auto editor = Dali::Toolkit::TextEditor::New();
207 auto q = Dali::Accessibility::Accessible::Get( editor );
208 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
209 DALI_TEST_CHECK( x );
213 auto rangeExtents = x->GetRangeExtents( 0, 0, Dali::Accessibility::CoordinateType::WINDOW );
214 DALI_TEST_EQUALS( (int)rangeExtents.x, 0, TEST_LOCATION );
215 DALI_TEST_EQUALS( (int)rangeExtents.y, 0, TEST_LOCATION );
216 DALI_TEST_EQUALS( (int)rangeExtents.width, 0, TEST_LOCATION );
217 DALI_TEST_EQUALS( (int)rangeExtents.height, 0, TEST_LOCATION );
219 application.GetScene().Add( editor );
221 editor.SetProperty( Toolkit::TextEditor::Property::POINT_SIZE, 7.f );
222 editor.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) );
223 editor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
224 editor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
225 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "text editor test sentence" );
227 // Avoid a crash when core load gl resources.
228 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
231 application.SendNotification();
232 application.Render();
234 auto characterCount = x->GetCharacterCount();
235 rangeExtents = x->GetRangeExtents( 0, characterCount, Dali::Accessibility::CoordinateType::WINDOW );
237 Vector<Vector2> positionList = Toolkit::DevelTextEditor::GetTextPosition(editor, 0, characterCount);
238 Vector<Vector2> sizeList = Toolkit::DevelTextEditor::GetTextSize(editor, 0, characterCount);
240 DALI_TEST_EQUALS(positionList.Size() == sizeList.Size(), true, TEST_LOCATION);
242 unsigned int sizeListSize = sizeList.Size();
243 for(unsigned int i = 0; i < sizeListSize; i++)
245 DALI_TEST_EQUALS((int)positionList[i].x >= rangeExtents.x, true, TEST_LOCATION);
246 DALI_TEST_EQUALS((int)positionList[i].y >= rangeExtents.y, true, TEST_LOCATION);
247 DALI_TEST_EQUALS((int)sizeList[i].x <= rangeExtents.width, true, TEST_LOCATION);
248 DALI_TEST_EQUALS((int)sizeList[i].y <= rangeExtents.height, true, TEST_LOCATION);
255 int utcDaliAccessibilityTextFieldGetName(void)
257 ToolkitTestApplication application;
259 auto field = Toolkit::TextField::New();
260 DALI_TEST_EQUALS( field.GetProperty<std::string>(Actor::Property::NAME), "", TEST_LOCATION );
261 field.SetProperty(Actor::Property::NAME, "field");
262 DALI_TEST_EQUALS( field.GetProperty<std::string>(Actor::Property::NAME), "field", TEST_LOCATION );
267 int utcDaliAccessibilityTextFieldGetText(void)
269 ToolkitTestApplication application;
271 auto field = Dali::Toolkit::TextField::New();
272 auto q = Dali::Accessibility::Accessible::Get( field );
273 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
274 DALI_TEST_CHECK( x );
277 DALI_TEST_EQUALS( x->GetText( 0, 0 ), "", TEST_LOCATION );
278 field.SetProperty( Toolkit::TextField::Property::TEXT, "exemplary_text" );
279 DALI_TEST_EQUALS( x->GetText( 0, 9 ), "exemplary", TEST_LOCATION );
281 Dali::Property::Map hiddenInputSettings;
282 hiddenInputSettings[ Toolkit::HiddenInput::Property::MODE ] = Toolkit::HiddenInput::Mode::HIDE_ALL;
284 field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
286 DALI_TEST_EQUALS( x->GetName(), "", TEST_LOCATION );
287 DALI_TEST_EQUALS( x->GetText( 0, 9 ), "*********", TEST_LOCATION );
289 hiddenInputSettings[ Toolkit::HiddenInput::Property::SUBSTITUTE_CHARACTER ] = 0x23;
290 field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
292 DALI_TEST_EQUALS( x->GetName(), "", TEST_LOCATION );
293 DALI_TEST_EQUALS( x->GetText( 0, 9 ), "#########", TEST_LOCATION );
299 int utcDaliAccessibilityTextFieldGetCharacterCount(void)
301 ToolkitTestApplication application;
303 auto field = Dali::Toolkit::TextField::New();
304 auto q = Dali::Accessibility::Accessible::Get( field );
305 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
306 DALI_TEST_CHECK( x );
309 DALI_TEST_EQUALS( x->GetCharacterCount(), 0, TEST_LOCATION );
310 field.SetProperty( Toolkit::TextField::Property::TEXT, "field" );
311 DALI_TEST_EQUALS( x->GetCharacterCount(), 5, TEST_LOCATION );
317 int utcDaliAccessibilityTextFieldGetTextAtOffset(void)
319 ToolkitTestApplication application;
321 auto field = Dali::Toolkit::TextField::New();
322 auto q = Dali::Accessibility::Accessible::Get( field );
323 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
324 DALI_TEST_CHECK( x );
327 auto range = x->GetTextAtOffset( 0, Dali::Accessibility::TextBoundary::LINE );
328 DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
329 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
330 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
332 field.SetProperty( Toolkit::TextField::Property::TEXT, "text editor test sentence" );
333 range = x->GetTextAtOffset( 5, Dali::Accessibility::TextBoundary::CHARACTER );
334 DALI_TEST_EQUALS( range.content, "e", TEST_LOCATION );
335 DALI_TEST_EQUALS( range.startOffset, 5, TEST_LOCATION );
336 DALI_TEST_EQUALS( range.endOffset, 6, TEST_LOCATION );
338 field.SetProperty( Toolkit::TextField::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
339 range = x->GetTextAtOffset( 3, Dali::Accessibility::TextBoundary::WORD );
340 DALI_TEST_EQUALS( range.content, "sentence", TEST_LOCATION );
341 DALI_TEST_EQUALS( range.startOffset, 28, TEST_LOCATION );
342 DALI_TEST_EQUALS( range.endOffset, 36, TEST_LOCATION );
344 field.SetProperty( Toolkit::TextField::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
345 range = x->GetTextAtOffset( 4, Dali::Accessibility::TextBoundary::WORD );
346 DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
347 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
348 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
350 field.SetProperty( Toolkit::TextField::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
351 range = x->GetTextAtOffset( 0, Dali::Accessibility::TextBoundary::LINE );
352 DALI_TEST_EQUALS( range.content, "text \n", TEST_LOCATION );
353 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
354 DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
356 field.SetProperty( Toolkit::TextField::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
357 range = x->GetTextAtOffset( 6, Dali::Accessibility::TextBoundary::LINE );
358 DALI_TEST_EQUALS( range.content, " editor \n", TEST_LOCATION );
359 DALI_TEST_EQUALS( range.startOffset, 14, TEST_LOCATION );
360 DALI_TEST_EQUALS( range.endOffset, 24, TEST_LOCATION );
362 field.SetProperty( Toolkit::TextField::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
363 range = x->GetTextAtOffset( 8, Dali::Accessibility::TextBoundary::LINE );
364 DALI_TEST_EQUALS( range.content, " test sentence", TEST_LOCATION );
365 DALI_TEST_EQUALS( range.startOffset, 25, TEST_LOCATION );
366 DALI_TEST_EQUALS( range.endOffset, 39, TEST_LOCATION );
368 Dali::Property::Map hiddenInputSettings;
369 hiddenInputSettings[ Toolkit::HiddenInput::Property::MODE ] = Toolkit::HiddenInput::Mode::HIDE_ALL;
370 hiddenInputSettings[ Toolkit::HiddenInput::Property::SUBSTITUTE_CHARACTER ] = 0x23;
371 field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
372 range = x->GetTextAtOffset( 8, Dali::Accessibility::TextBoundary::LINE );
373 DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
374 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
375 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
382 int utcDaliAccessibilityTextFieldGetSetRangeOfSelection(void)
384 ToolkitTestApplication application;
386 auto field = Dali::Toolkit::TextField::New();
387 auto q = Dali::Accessibility::Accessible::Get( field );
388 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
389 DALI_TEST_CHECK( x );
392 auto range = x->GetRangeOfSelection( 0 );
393 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
394 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
395 DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
397 x->SetRangeOfSelection( 0, 4, 9 );
398 field.SetProperty( Toolkit::TextEditor::Property::TEXT, "exemplary_text" );
399 range = x->GetRangeOfSelection( 0 );
401 DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
402 DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
403 DALI_TEST_EQUALS( range.content, "plary", TEST_LOCATION );
405 Dali::Property::Map hiddenInputSettings;
406 hiddenInputSettings[ Toolkit::HiddenInput::Property::MODE ] = Toolkit::HiddenInput::Mode::HIDE_ALL;
407 field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
409 range = x->GetRangeOfSelection( 0 );
410 DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
411 DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
412 DALI_TEST_EQUALS( range.content, "*****", TEST_LOCATION );
418 int utcDaliAccessibilityTextFieldRemoveSelection(void)
420 ToolkitTestApplication application;
422 auto field = Dali::Toolkit::TextField::New();
423 auto q = Dali::Accessibility::Accessible::Get( field );
424 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
425 DALI_TEST_CHECK( x );
428 auto range = x->GetRangeOfSelection( 0 );
429 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
430 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
432 x->SetRangeOfSelection( 0, 4, 9 );
433 range = x->GetRangeOfSelection( 0 );
434 DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
435 DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
437 x->RemoveSelection( 0 );
438 range = x->GetRangeOfSelection( 0 );
439 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
440 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
446 int utcDaliAccessibilityTextFieldGetRangeExtents(void)
448 ToolkitTestApplication application;
450 auto field = Dali::Toolkit::TextField::New();
451 auto q = Dali::Accessibility::Accessible::Get( field );
452 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
453 DALI_TEST_CHECK( x );
457 auto rangeExtents = x->GetRangeExtents( 0, 0, Dali::Accessibility::CoordinateType::WINDOW );
458 DALI_TEST_EQUALS( (int)rangeExtents.x, 0, TEST_LOCATION );
459 DALI_TEST_EQUALS( (int)rangeExtents.y, 0, TEST_LOCATION );
460 DALI_TEST_EQUALS( (int)rangeExtents.width, 0, TEST_LOCATION );
461 DALI_TEST_EQUALS( (int)rangeExtents.height, 0, TEST_LOCATION );
463 application.GetScene().Add( field );
465 field.SetProperty( Toolkit::TextField::Property::POINT_SIZE, 7.f );
466 field.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) );
467 field.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
468 field.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
469 field.SetProperty( Toolkit::TextField::Property::TEXT, "text field test sentence" );
471 // Avoid a crash when core load gl resources.
472 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
475 application.SendNotification();
476 application.Render();
478 auto characterCount = x->GetCharacterCount();
479 rangeExtents = x->GetRangeExtents( 0, characterCount, Dali::Accessibility::CoordinateType::WINDOW );
481 Vector<Vector2> positionList = Toolkit::DevelTextField::GetTextPosition(field, 0, characterCount);
482 Vector<Vector2> sizeList = Toolkit::DevelTextField::GetTextSize(field, 0, characterCount);
484 DALI_TEST_EQUALS(positionList.Size() == sizeList.Size(), true, TEST_LOCATION);
486 unsigned int sizeListSize = sizeList.Size();
487 for(unsigned int i = 0; i < sizeListSize; i++)
489 DALI_TEST_EQUALS((int)positionList[i].x >= rangeExtents.x, true, TEST_LOCATION);
490 DALI_TEST_EQUALS((int)positionList[i].y >= rangeExtents.y, true, TEST_LOCATION);
491 DALI_TEST_EQUALS((int)sizeList[i].x <= rangeExtents.width, true, TEST_LOCATION);
492 DALI_TEST_EQUALS((int)sizeList[i].y <= rangeExtents.height, true, TEST_LOCATION);
499 int utcDaliAccessibilityTextLabelGetName(void)
501 ToolkitTestApplication application;
503 auto label = Toolkit::TextLabel::New();
504 DALI_TEST_EQUALS( label.GetProperty<std::string>(Actor::Property::NAME), "", TEST_LOCATION );
505 label.SetProperty(Actor::Property::NAME, "label");
506 DALI_TEST_EQUALS( label.GetProperty<std::string>(Actor::Property::NAME), "label", TEST_LOCATION );
511 int utcDaliAccessibilityTextLabelGetText(void)
513 ToolkitTestApplication application;
515 auto label = Dali::Toolkit::TextLabel::New();
516 auto q = Dali::Accessibility::Accessible::Get( label );
517 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
518 DALI_TEST_CHECK( x );
521 DALI_TEST_EQUALS( x->GetText( 0, 0 ), "", TEST_LOCATION );
522 label.SetProperty( Toolkit::TextField::Property::TEXT, "exemplary_text" );
523 DALI_TEST_EQUALS( x->GetText( 0, 9 ), "exemplary", TEST_LOCATION );
529 int utcDaliAccessibilityTextLabelGetCharacterCount(void)
531 ToolkitTestApplication application;
533 auto label = Dali::Toolkit::TextLabel::New();
534 auto q = Dali::Accessibility::Accessible::Get( label );
535 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
536 DALI_TEST_CHECK( x );
539 DALI_TEST_EQUALS( x->GetCharacterCount(), 0, TEST_LOCATION );
540 label.SetProperty( Toolkit::TextField::Property::TEXT, "field" );
541 DALI_TEST_EQUALS( x->GetCharacterCount(), 5, TEST_LOCATION );
547 int utcDaliAccessibilityTextLabelGetTextAtOffset(void)
549 ToolkitTestApplication application;
551 auto label = Dali::Toolkit::TextLabel::New();
552 auto q = Dali::Accessibility::Accessible::Get( label );
553 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
554 DALI_TEST_CHECK( x );
557 auto range = x->GetTextAtOffset( 0, Dali::Accessibility::TextBoundary::LINE );
558 DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
559 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
560 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
562 label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text editor test sentence" );
563 range = x->GetTextAtOffset( 5, Dali::Accessibility::TextBoundary::CHARACTER );
564 DALI_TEST_EQUALS( range.content, "e", TEST_LOCATION );
565 DALI_TEST_EQUALS( range.startOffset, 5, TEST_LOCATION );
566 DALI_TEST_EQUALS( range.endOffset, 6, TEST_LOCATION );
568 label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
569 range = x->GetTextAtOffset( 3, Dali::Accessibility::TextBoundary::WORD );
570 DALI_TEST_EQUALS( range.content, "sentence", TEST_LOCATION );
571 DALI_TEST_EQUALS( range.startOffset, 28, TEST_LOCATION );
572 DALI_TEST_EQUALS( range.endOffset, 36, TEST_LOCATION );
574 label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
575 range = x->GetTextAtOffset( 4, Dali::Accessibility::TextBoundary::WORD );
576 DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
577 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
578 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
580 label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
581 range = x->GetTextAtOffset( 0, Dali::Accessibility::TextBoundary::LINE );
582 DALI_TEST_EQUALS( range.content, "text \n", TEST_LOCATION );
583 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
584 DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
586 label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
587 range = x->GetTextAtOffset( 6, Dali::Accessibility::TextBoundary::LINE );
588 DALI_TEST_EQUALS( range.content, " editor \n", TEST_LOCATION );
589 DALI_TEST_EQUALS( range.startOffset, 14, TEST_LOCATION );
590 DALI_TEST_EQUALS( range.endOffset, 24, TEST_LOCATION );
592 label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text \n\n\n\n\n\n editor \n\n test sentence" );
593 range = x->GetTextAtOffset( 8, Dali::Accessibility::TextBoundary::LINE );
594 DALI_TEST_EQUALS( range.content, " test sentence", TEST_LOCATION );
595 DALI_TEST_EQUALS( range.startOffset, 25, TEST_LOCATION );
596 DALI_TEST_EQUALS( range.endOffset, 39, TEST_LOCATION );
602 int utcDaliAccessibilityTextLabelRemoveSelection( void )
604 ToolkitTestApplication application;
606 auto label = Dali::Toolkit::TextLabel::New();
607 auto q = Dali::Accessibility::Accessible::Get( label );
608 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
609 DALI_TEST_CHECK( x );
612 auto range = x->GetRangeOfSelection( 0 );
613 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
614 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
616 x->SetRangeOfSelection( 0, 4, 9 );
617 range = x->GetRangeOfSelection( 0 );
618 DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
619 DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
621 x->RemoveSelection( 0 );
622 range = x->GetRangeOfSelection( 0 );
623 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
624 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
630 int utcDaliAccessibilityTextLabelGetRangeExtents(void)
632 ToolkitTestApplication application;
634 auto label = Dali::Toolkit::TextLabel::New();
635 auto q = Dali::Accessibility::Accessible::Get( label );
636 auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
637 DALI_TEST_CHECK( x );
641 auto rangeExtents = x->GetRangeExtents( 0, 0, Dali::Accessibility::CoordinateType::WINDOW );
642 DALI_TEST_EQUALS( (int)rangeExtents.x, 0, TEST_LOCATION );
643 DALI_TEST_EQUALS( (int)rangeExtents.y, 0, TEST_LOCATION );
644 DALI_TEST_EQUALS( (int)rangeExtents.width, 0, TEST_LOCATION );
645 DALI_TEST_EQUALS( (int)rangeExtents.height, 0, TEST_LOCATION );
647 application.GetScene().Add( label );
649 label.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, 7.f );
650 label.SetProperty( Toolkit::TextLabel::Property::MULTI_LINE, true );
651 label.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) );
652 label.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
653 label.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
654 label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text label\n test sentence" );
656 // Avoid a crash when core load gl resources.
657 application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
660 application.SendNotification();
661 application.Render();
663 auto characterCount = x->GetCharacterCount();
664 rangeExtents = x->GetRangeExtents( 0, characterCount, Dali::Accessibility::CoordinateType::WINDOW );
666 Vector<Vector2> positionList = Toolkit::DevelTextLabel::GetTextPosition(label, 0, characterCount);
667 Vector<Vector2> sizeList = Toolkit::DevelTextLabel::GetTextSize(label, 0, characterCount);
669 DALI_TEST_EQUALS(positionList.Size() == sizeList.Size(), true, TEST_LOCATION);
671 unsigned int sizeListSize = sizeList.Size();
672 for(unsigned int i = 0; i < sizeListSize; i++)
674 DALI_TEST_EQUALS((int)positionList[i].x >= rangeExtents.x, true, TEST_LOCATION);
675 DALI_TEST_EQUALS((int)positionList[i].y >= rangeExtents.y, true, TEST_LOCATION);
676 DALI_TEST_EQUALS((int)sizeList[i].x <= rangeExtents.width, true, TEST_LOCATION);
677 DALI_TEST_EQUALS((int)sizeList[i].y <= rangeExtents.height, true, TEST_LOCATION);