[AT-SPI] Update #include paths to AT-SPI interfaces
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Accessibility-Text.cpp
1 /**
2  * Copyright (c) 2017 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
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>
21
22 #include <dali.h>
23 #include <dali-toolkit/dali-toolkit.h>
24
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>
30
31 #include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
32
33 void utc_dali_toolkit_accessibility_text_startup(void)
34 {
35   test_return_value = TET_UNDEF;
36   DBusWrapper::Install(std::unique_ptr<DBusWrapper>(new TestDBusWrapper));
37 }
38
39 void utc_dali_toolkit_accessibility_text_cleanup(void)
40 {
41   test_return_value = TET_PASS;
42 }
43
44 int utcDaliAccessibilityTextEditorGetName(void)
45 {
46   ToolkitTestApplication application;
47
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 );
52
53   END_TEST;
54 }
55
56 int utcDaliAccessibilityTextEditorGetText(void)
57 {
58   ToolkitTestApplication application;
59
60   auto editor = Dali::Toolkit::TextEditor::New();
61   auto q = Dali::Accessibility::Accessible::Get( editor );
62   auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
63   DALI_TEST_CHECK( x );
64   if( x )
65   {
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 );
69   }
70
71   END_TEST;
72 }
73
74 int utcDaliAccessibilityTextEditorGetCharacterCount(void)
75 {
76   ToolkitTestApplication application;
77
78   auto editor = Dali::Toolkit::TextEditor::New();
79   auto q = Dali::Accessibility::Accessible::Get( editor );
80   auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
81   DALI_TEST_CHECK( x );
82   if( x )
83   {
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 );
87   }
88
89   END_TEST;
90 }
91
92 int utcDaliAccessibilityTextEditorGetTextAtOffset(void)
93 {
94   ToolkitTestApplication application;
95
96   auto editor = Dali::Toolkit::TextEditor::New();
97   auto q = Dali::Accessibility::Accessible::Get( editor );
98   auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
99   DALI_TEST_CHECK( x );
100   if( x )
101   {
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 );
106
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 );
112
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 );
118
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 );
124
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 );
130
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 );
136
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 );
142   }
143
144   END_TEST;
145 }
146
147 int utcDaliAccessibilityTextEditorGetSetRangeOfSelection(void)
148 {
149   ToolkitTestApplication application;
150
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 );
155   if( x )
156   {
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 );
161
162     x->SetRangeOfSelection( 0, 4, 9 );
163     editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "exemplary_text" );
164     range = x->GetRangeOfSelection( 0 );
165
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 );
169   }
170
171   END_TEST;
172 }
173
174 int utcDaliAccessibilityTextEditorRemoveSelection(void)
175 {
176   ToolkitTestApplication application;
177
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 );
182   if( x )
183   {
184     auto range = x->GetRangeOfSelection( 0 );
185     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
186     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
187
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 );
192
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 );
197   }
198
199   END_TEST;
200 }
201
202 int utcDaliAccessibilityTextFieldGetName(void)
203 {
204   ToolkitTestApplication application;
205
206   auto field = Toolkit::TextField::New();
207   DALI_TEST_EQUALS( field.GetProperty<std::string>(Actor::Property::NAME), "", TEST_LOCATION );
208   field.SetProperty(Actor::Property::NAME, "field");
209   DALI_TEST_EQUALS( field.GetProperty<std::string>(Actor::Property::NAME), "field", TEST_LOCATION );
210
211   END_TEST;
212 }
213
214 int utcDaliAccessibilityTextFieldGetText(void)
215 {
216   ToolkitTestApplication application;
217
218   auto field = Dali::Toolkit::TextField::New();
219   auto q = Dali::Accessibility::Accessible::Get( field );
220   auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
221   DALI_TEST_CHECK( x );
222   if( x )
223   {
224     DALI_TEST_EQUALS( x->GetText( 0, 0 ), "", TEST_LOCATION );
225     field.SetProperty( Toolkit::TextField::Property::TEXT, "exemplary_text" );
226     DALI_TEST_EQUALS( x->GetText( 0, 9 ), "exemplary", TEST_LOCATION );
227
228     Dali::Property::Map hiddenInputSettings;
229     hiddenInputSettings[ Toolkit::HiddenInput::Property::MODE ] = Toolkit::HiddenInput::Mode::HIDE_ALL;
230
231     field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
232
233     DALI_TEST_EQUALS( x->GetName(), "", TEST_LOCATION );
234     DALI_TEST_EQUALS( x->GetText( 0, 9 ), "*********", TEST_LOCATION );
235
236     hiddenInputSettings[ Toolkit::HiddenInput::Property::SUBSTITUTE_CHARACTER ] = 0x23;
237     field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
238
239     DALI_TEST_EQUALS( x->GetName(), "", TEST_LOCATION );
240     DALI_TEST_EQUALS( x->GetText( 0, 9 ), "#########", TEST_LOCATION );
241   }
242
243   END_TEST;
244 }
245
246 int utcDaliAccessibilityTextFieldGetCharacterCount(void)
247 {
248   ToolkitTestApplication application;
249
250   auto field = Dali::Toolkit::TextField::New();
251   auto q = Dali::Accessibility::Accessible::Get( field );
252   auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
253   DALI_TEST_CHECK( x );
254   if( x )
255   {
256     DALI_TEST_EQUALS( x->GetCharacterCount(), 0, TEST_LOCATION );
257     field.SetProperty( Toolkit::TextField::Property::TEXT, "field" );
258     DALI_TEST_EQUALS( x->GetCharacterCount(), 5, TEST_LOCATION );
259   }
260
261   END_TEST;
262 }
263
264 int utcDaliAccessibilityTextFieldGetTextAtOffset(void)
265 {
266   ToolkitTestApplication application;
267
268   auto field = Dali::Toolkit::TextField::New();
269   auto q = Dali::Accessibility::Accessible::Get( field );
270   auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
271   DALI_TEST_CHECK( x );
272   if( x )
273   {
274     auto range = x->GetTextAtOffset( 0, Dali::Accessibility::TextBoundary::LINE );
275     DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
276     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
277     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
278
279     field.SetProperty( Toolkit::TextField::Property::TEXT, "text editor test sentence" );
280     range = x->GetTextAtOffset( 5, Dali::Accessibility::TextBoundary::CHARACTER );
281     DALI_TEST_EQUALS( range.content, "e", TEST_LOCATION );
282     DALI_TEST_EQUALS( range.startOffset, 5, TEST_LOCATION );
283     DALI_TEST_EQUALS( range.endOffset, 6, TEST_LOCATION );
284
285     field.SetProperty( Toolkit::TextField::Property::TEXT, "text \n\n\n\n\n\n editor  \n\n test sentence" );
286     range = x->GetTextAtOffset( 3, Dali::Accessibility::TextBoundary::WORD );
287     DALI_TEST_EQUALS( range.content, "sentence", TEST_LOCATION );
288     DALI_TEST_EQUALS( range.startOffset, 28, TEST_LOCATION );
289     DALI_TEST_EQUALS( range.endOffset, 36, TEST_LOCATION );
290
291     field.SetProperty( Toolkit::TextField::Property::TEXT, "text \n\n\n\n\n\n editor  \n\n test sentence" );
292     range = x->GetTextAtOffset( 4, Dali::Accessibility::TextBoundary::WORD );
293     DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
294     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
295     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
296
297     field.SetProperty( Toolkit::TextField::Property::TEXT, "text    \n\n\n\n\n\n editor  \n\n test sentence" );
298     range = x->GetTextAtOffset( 0, Dali::Accessibility::TextBoundary::LINE );
299     DALI_TEST_EQUALS( range.content, "text    \n", TEST_LOCATION );
300     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
301     DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
302
303     field.SetProperty( Toolkit::TextField::Property::TEXT, "text    \n\n\n\n\n\n editor  \n\n test sentence" );
304     range = x->GetTextAtOffset( 6, Dali::Accessibility::TextBoundary::LINE );
305     DALI_TEST_EQUALS( range.content, " editor  \n", TEST_LOCATION );
306     DALI_TEST_EQUALS( range.startOffset, 14, TEST_LOCATION );
307     DALI_TEST_EQUALS( range.endOffset, 24, TEST_LOCATION );
308
309     field.SetProperty( Toolkit::TextField::Property::TEXT, "text    \n\n\n\n\n\n editor  \n\n test sentence" );
310     range = x->GetTextAtOffset( 8, Dali::Accessibility::TextBoundary::LINE );
311     DALI_TEST_EQUALS( range.content, " test sentence", TEST_LOCATION );
312     DALI_TEST_EQUALS( range.startOffset, 25, TEST_LOCATION );
313     DALI_TEST_EQUALS( range.endOffset, 39, TEST_LOCATION );
314
315     Dali::Property::Map hiddenInputSettings;
316     hiddenInputSettings[ Toolkit::HiddenInput::Property::MODE ] = Toolkit::HiddenInput::Mode::HIDE_ALL;
317     hiddenInputSettings[ Toolkit::HiddenInput::Property::SUBSTITUTE_CHARACTER ] = 0x23;
318     field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
319     range = x->GetTextAtOffset( 8, Dali::Accessibility::TextBoundary::LINE );
320     DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
321     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
322     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
323
324   }
325
326   END_TEST;
327 }
328
329 int utcDaliAccessibilityTextFieldGetSetRangeOfSelection(void)
330 {
331   ToolkitTestApplication application;
332
333   auto field = Dali::Toolkit::TextField::New();
334   auto q = Dali::Accessibility::Accessible::Get( field );
335   auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
336   DALI_TEST_CHECK( x );
337   if( x )
338   {
339     auto range = x->GetRangeOfSelection( 0 );
340     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
341     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
342     DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
343
344     x->SetRangeOfSelection( 0, 4, 9 );
345     field.SetProperty( Toolkit::TextEditor::Property::TEXT, "exemplary_text" );
346     range = x->GetRangeOfSelection( 0 );
347
348     DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
349     DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
350     DALI_TEST_EQUALS( range.content, "plary", TEST_LOCATION );
351
352     Dali::Property::Map hiddenInputSettings;
353     hiddenInputSettings[ Toolkit::HiddenInput::Property::MODE ] = Toolkit::HiddenInput::Mode::HIDE_ALL;
354     field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
355
356     range = x->GetRangeOfSelection( 0 );
357     DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
358     DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
359     DALI_TEST_EQUALS( range.content, "*****", TEST_LOCATION );
360   }
361
362   END_TEST;
363 }
364
365 int utcDaliAccessibilityTextFieldRemoveSelection(void)
366 {
367   ToolkitTestApplication application;
368
369   auto field = Dali::Toolkit::TextField::New();
370   auto q = Dali::Accessibility::Accessible::Get( field );
371   auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
372   DALI_TEST_CHECK( x );
373   if( x )
374   {
375     auto range = x->GetRangeOfSelection( 0 );
376     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
377     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
378
379     x->SetRangeOfSelection( 0, 4, 9 );
380     range = x->GetRangeOfSelection( 0 );
381     DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
382     DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
383
384     x->RemoveSelection( 0 );
385     range = x->GetRangeOfSelection( 0 );
386     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
387     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
388   }
389
390   END_TEST;
391 }
392
393 int utcDaliAccessibilityTextLabelGetName(void)
394 {
395   ToolkitTestApplication application;
396
397   auto label = Toolkit::TextLabel::New();
398   DALI_TEST_EQUALS( label.GetProperty<std::string>(Actor::Property::NAME), "", TEST_LOCATION );
399   label.SetProperty(Actor::Property::NAME, "label");
400   DALI_TEST_EQUALS( label.GetProperty<std::string>(Actor::Property::NAME), "label", TEST_LOCATION );
401
402   END_TEST;
403 }
404
405 int utcDaliAccessibilityTextLabelGetText(void)
406 {
407   ToolkitTestApplication application;
408
409   auto label = Dali::Toolkit::TextLabel::New();
410   auto q = Dali::Accessibility::Accessible::Get( label );
411   auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
412   DALI_TEST_CHECK( x );
413   if( x )
414   {
415     DALI_TEST_EQUALS( x->GetText( 0, 0 ), "", TEST_LOCATION );
416     label.SetProperty( Toolkit::TextField::Property::TEXT, "exemplary_text" );
417     DALI_TEST_EQUALS( x->GetText( 0, 9 ), "exemplary", TEST_LOCATION );
418   }
419
420   END_TEST;
421 }
422
423 int utcDaliAccessibilityTextLabelGetCharacterCount(void)
424 {
425   ToolkitTestApplication application;
426
427   auto label = Dali::Toolkit::TextLabel::New();
428   auto q = Dali::Accessibility::Accessible::Get( label );
429   auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
430   DALI_TEST_CHECK( x );
431   if( x )
432   {
433     DALI_TEST_EQUALS( x->GetCharacterCount(), 0, TEST_LOCATION );
434     label.SetProperty( Toolkit::TextField::Property::TEXT, "field" );
435     DALI_TEST_EQUALS( x->GetCharacterCount(), 5, TEST_LOCATION );
436   }
437
438   END_TEST;
439 }
440
441 int utcDaliAccessibilityTextLabelGetTextAtOffset(void)
442 {
443   ToolkitTestApplication application;
444
445   auto label = Dali::Toolkit::TextLabel::New();
446   auto q = Dali::Accessibility::Accessible::Get( label );
447   auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
448   DALI_TEST_CHECK( x );
449   if( x )
450   {
451     auto range = x->GetTextAtOffset( 0, Dali::Accessibility::TextBoundary::LINE );
452     DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
453     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
454     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
455
456     label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text editor test sentence" );
457     range = x->GetTextAtOffset( 5, Dali::Accessibility::TextBoundary::CHARACTER );
458     DALI_TEST_EQUALS( range.content, "e", TEST_LOCATION );
459     DALI_TEST_EQUALS( range.startOffset, 5, TEST_LOCATION );
460     DALI_TEST_EQUALS( range.endOffset, 6, TEST_LOCATION );
461
462     label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text \n\n\n\n\n\n editor  \n\n test sentence" );
463     range = x->GetTextAtOffset( 3, Dali::Accessibility::TextBoundary::WORD );
464     DALI_TEST_EQUALS( range.content, "sentence", TEST_LOCATION );
465     DALI_TEST_EQUALS( range.startOffset, 28, TEST_LOCATION );
466     DALI_TEST_EQUALS( range.endOffset, 36, TEST_LOCATION );
467
468     label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text \n\n\n\n\n\n editor  \n\n test sentence" );
469     range = x->GetTextAtOffset( 4, Dali::Accessibility::TextBoundary::WORD );
470     DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
471     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
472     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
473
474     label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text    \n\n\n\n\n\n editor  \n\n test sentence" );
475     range = x->GetTextAtOffset( 0, Dali::Accessibility::TextBoundary::LINE );
476     DALI_TEST_EQUALS( range.content, "text    \n", TEST_LOCATION );
477     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
478     DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
479
480     label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text    \n\n\n\n\n\n editor  \n\n test sentence" );
481     range = x->GetTextAtOffset( 6, Dali::Accessibility::TextBoundary::LINE );
482     DALI_TEST_EQUALS( range.content, " editor  \n", TEST_LOCATION );
483     DALI_TEST_EQUALS( range.startOffset, 14, TEST_LOCATION );
484     DALI_TEST_EQUALS( range.endOffset, 24, TEST_LOCATION );
485
486     label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text    \n\n\n\n\n\n editor  \n\n test sentence" );
487     range = x->GetTextAtOffset( 8, Dali::Accessibility::TextBoundary::LINE );
488     DALI_TEST_EQUALS( range.content, " test sentence", TEST_LOCATION );
489     DALI_TEST_EQUALS( range.startOffset, 25, TEST_LOCATION );
490     DALI_TEST_EQUALS( range.endOffset, 39, TEST_LOCATION );
491   }
492
493   END_TEST;
494 }
495
496 int utcDaliAccessibilityTextLabelRemoveSelection( void )
497 {
498   ToolkitTestApplication application;
499
500   auto label = Dali::Toolkit::TextLabel::New();
501   auto q = Dali::Accessibility::Accessible::Get( label );
502   auto x = dynamic_cast< Dali::Accessibility::Text* >( q );
503   DALI_TEST_CHECK( x );
504   if( x )
505   {
506     auto range = x->GetRangeOfSelection( 0 );
507     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
508     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
509
510     x->SetRangeOfSelection( 0, 4, 9 );
511     range = x->GetRangeOfSelection( 0 );
512     DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
513     DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
514
515     x->RemoveSelection( 0 );
516     range = x->GetRangeOfSelection( 0 );
517     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
518     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
519   }
520
521   END_TEST;
522 }