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