[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Accessibility-Controls.cpp
1 #include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/accessibility-test-utils.h>
2 #include <dali-toolkit-test-suite-utils.h>
3 #include <dali-toolkit/dali-toolkit.h>
4
5 #include <dali-toolkit/devel-api/controls/control-accessible.h>
6 #include <dali-toolkit/devel-api/controls/control-devel.h>
7 #include <dali-toolkit/devel-api/controls/table-view/table-view.h>
8 #include <dali/devel-api/adaptor-framework/accessibility-bridge.h>
9 #include <dali/devel-api/atspi-interfaces/accessible.h>
10 #include <dali/devel-api/atspi-interfaces/action.h>
11 #include <dali/devel-api/atspi-interfaces/editable-text.h>
12 #include <dali/devel-api/atspi-interfaces/hyperlink.h>
13 #include <dali/devel-api/atspi-interfaces/hypertext.h>
14 #include <dali/devel-api/atspi-interfaces/text.h>
15
16 #include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
17
18 using namespace Dali::Toolkit;
19
20 void utc_dali_accessibility_controls_startup(void)
21 {
22   test_return_value = TET_UNDEF;
23   DBusWrapper::Install(std::unique_ptr<DBusWrapper>(new TestDBusWrapper));
24 }
25
26 void utc_dali_accessibility_controls_cleanup(void)
27 {
28   test_return_value = TET_PASS;
29   //DBusWrapper::Install({}) is a de-install
30   DBusWrapper::Install({});
31 }
32
33 int UtcDaliControlAccessibileGet01(void)
34 {
35   ToolkitTestApplication application;
36
37   auto control    = Control::New();
38   auto accessible = dynamic_cast<DevelControl::ControlAccessible*>(Dali::Accessibility::Accessible::Get(control));
39   DALI_TEST_CHECK(accessible);
40
41   END_TEST;
42 }
43
44 int UtcDaliControlAccessibileGet02(void)
45 {
46   ToolkitTestApplication application;
47
48   auto control = Control::New();
49
50   // Default is true.
51   DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), true, TEST_LOCATION);
52   DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), false, TEST_LOCATION);
53
54   DevelControl::EnableCreateAccessible(control, false);
55   DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), false, TEST_LOCATION);
56   auto accessible = dynamic_cast<DevelControl::ControlAccessible*>(Dali::Accessibility::Accessible::Get(control));
57
58   // Check that we don't create accessible yet.
59   DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), false, TEST_LOCATION);
60   DALI_TEST_CHECK(!accessible);
61
62   DevelControl::EnableCreateAccessible(control, true);
63   DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), true, TEST_LOCATION);
64   accessible = dynamic_cast<DevelControl::ControlAccessible*>(Dali::Accessibility::Accessible::Get(control));
65   DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), true, TEST_LOCATION);
66   DALI_TEST_CHECK(accessible);
67
68   DevelControl::EnableCreateAccessible(control, false);
69   DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), false, TEST_LOCATION);
70   accessible = dynamic_cast<DevelControl::ControlAccessible*>(Dali::Accessibility::Accessible::Get(control));
71
72   // Check that we got created accessible well.
73   DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), true, TEST_LOCATION);
74   DALI_TEST_CHECK(accessible);
75
76   END_TEST;
77 }
78
79 int UtcDaliControlAccessibileBlockAccessibleCreation(void)
80 {
81   ToolkitTestApplication application;
82
83   auto control = Control::New();
84
85   // Default is true.
86   DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), true, TEST_LOCATION);
87   DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), false, TEST_LOCATION);
88
89   DevelControl::EnableCreateAccessible(control, false);
90   DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), false, TEST_LOCATION);
91
92   try
93   {
94     // Should not throw exception even if accessible is not created.
95     DALI_TEST_EQUALS(DevelControl::ClearAccessibilityHighlight(control), false, TEST_LOCATION);
96     DALI_TEST_EQUALS(DevelControl::GrabAccessibilityHighlight(control), false, TEST_LOCATION);
97
98     DevelControl::GetAccessibilityStates(control);
99     DevelControl::NotifyAccessibilityStateChange(control, Dali::Accessibility::States{}, false);
100     DevelControl::NotifyAccessibilityStateChange(control, Dali::Accessibility::States{}, true);
101     DALI_TEST_CHECK(true);
102   }
103   catch(...)
104   {
105     DALI_TEST_CHECK(false);
106   }
107
108   // Check that we don't create accessible yet.
109   DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), false, TEST_LOCATION);
110
111   // Dummy function call - for line coverage
112   DevelControl::EnableCreateAccessible(control, true);
113   DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), true, TEST_LOCATION);
114   DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), false, TEST_LOCATION);
115
116   try
117   {
118     // Should not throw exception even if accessible is not created.
119     DevelControl::ClearAccessibilityHighlight(control);
120     DevelControl::GrabAccessibilityHighlight(control);
121     DevelControl::GetAccessibilityStates(control);
122     DevelControl::NotifyAccessibilityStateChange(control, Dali::Accessibility::States{}, false);
123     DevelControl::NotifyAccessibilityStateChange(control, Dali::Accessibility::States{}, true);
124     DALI_TEST_CHECK(true);
125   }
126   catch(...)
127   {
128     DALI_TEST_CHECK(false);
129   }
130
131   END_TEST;
132 }
133
134 int UtcDaliControlPropertyAccessibilityTranslationDomain(void)
135 {
136   ToolkitTestApplication application;
137
138   auto control = Control::New();
139
140   auto accessibility_translation_domain = DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN;
141   DALI_TEST_EQUALS("", control.GetProperty<std::string>(accessibility_translation_domain), TEST_LOCATION);
142
143   control.SetProperty(accessibility_translation_domain, "translation_domain_test_1");
144   DALI_TEST_EQUALS("translation_domain_test_1", control.GetProperty(accessibility_translation_domain).Get<std::string>(), TEST_LOCATION);
145
146   control.SetProperty(accessibility_translation_domain, "translation_domain_test_2");
147   DALI_TEST_EQUALS("translation_domain_test_2", control.GetProperty(accessibility_translation_domain).Get<std::string>(), TEST_LOCATION);
148
149   END_TEST;
150 }
151
152 // This test shows that when the accessibility bridge is
153 // not up, there is no possibility to grab or clear highlight
154 int UtcDaliControlAccessibilityHighlight(void)
155 {
156   ToolkitTestApplication application;
157   auto                   controla = Control::New();
158   auto                   controlb = Control::New();
159
160   DALI_TEST_EQUALS(false, DevelControl::GrabAccessibilityHighlight(controla), TEST_LOCATION);
161   DALI_TEST_EQUALS(false, DevelControl::GrabAccessibilityHighlight(controlb), TEST_LOCATION);
162   DALI_TEST_EQUALS(false, DevelControl::ClearAccessibilityHighlight(controla), TEST_LOCATION);
163   DALI_TEST_EQUALS(false, DevelControl::ClearAccessibilityHighlight(controlb), TEST_LOCATION);
164
165   END_TEST;
166 }
167
168 #include <dali-toolkit/devel-api/controls/tool-bar/tool-bar.h>
169 int UtcDaliAccessibilityToolBarConstructor(void)
170 {
171   ToolkitTestApplication application;
172
173   auto toolbar = ToolBar::New();
174   DALI_TEST_CHECK(toolbar);
175
176   auto accessible = Dali::Accessibility::Accessible::Get(toolbar);
177   DALI_TEST_CHECK(accessible);
178   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::TOOL_BAR, TEST_LOCATION);
179
180   END_TEST;
181 }
182
183 int UtcDaliAccessibilityPushButtonConstructor(void)
184 {
185   ToolkitTestApplication application;
186
187   auto pushbutton = PushButton::New();
188   DALI_TEST_CHECK(pushbutton);
189
190   auto accessible = Dali::Accessibility::Accessible::Get(pushbutton);
191   DALI_TEST_CHECK(accessible);
192   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::PUSH_BUTTON, TEST_LOCATION);
193
194   END_TEST;
195 }
196
197 int UtcDaliAccessibilityPushButtonStates(void)
198 {
199   ToolkitTestApplication application;
200
201   auto pushbutton = PushButton::New();
202   DALI_TEST_CHECK(pushbutton);
203
204   auto accessible = Dali::Accessibility::Accessible::Get(pushbutton);
205   DALI_TEST_CHECK(accessible);
206
207   Dali::Accessibility::TestEnableSC(true);
208
209   /* add to scene and remove from scene to touch AccessibilityDeregister */
210   application.GetScene().Add(pushbutton);
211
212   auto states = accessible->GetStates();
213   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::PRESSED]), false, TEST_LOCATION);
214
215   // auto button = dynamic_cast<Dali::Toolkit::Button* >( accessible ) ;
216   pushbutton.SetProperty(Toolkit::Button::Property::TOGGLABLE, true);
217   pushbutton.SetProperty(Toolkit::Button::Property::SELECTED, true);
218
219   states = accessible->GetStates();
220   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::PRESSED]), true, TEST_LOCATION);
221
222   // Grab highlite now.
223   auto i = dynamic_cast<Dali::Accessibility::Component*>(accessible);
224   DALI_TEST_CHECK(i);
225   i->GrabHighlight();
226
227   pushbutton.SetProperty(Toolkit::Button::Property::SELECTED, false);
228
229   states = accessible->GetStates();
230   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::PRESSED]), false, TEST_LOCATION);
231
232   /* add to scene and remove from scene to touch AccessibilityDeregister */
233   application.GetScene().Remove(pushbutton);
234
235   Dali::Accessibility::TestEnableSC(false);
236
237   END_TEST;
238 }
239
240 #include <dali-toolkit/devel-api/controls/buttons/toggle-button.h>
241 int UtcDaliAccessibilityToggleButtonConstructor(void)
242 {
243   ToolkitTestApplication application;
244
245   auto togglebutton = ToggleButton::New();
246   DALI_TEST_CHECK(togglebutton);
247
248   auto accessible = Dali::Accessibility::Accessible::Get(togglebutton);
249   DALI_TEST_CHECK(accessible);
250   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::TOGGLE_BUTTON, TEST_LOCATION);
251
252   END_TEST;
253 }
254
255 int UtcDaliAccessibilityToggleButtonStates(void)
256 {
257   ToolkitTestApplication application;
258
259   auto togglebutton = ToggleButton::New();
260   DALI_TEST_CHECK(togglebutton);
261
262   auto accessible = Dali::Accessibility::Accessible::Get(togglebutton);
263   DALI_TEST_CHECK(accessible);
264
265   Dali::Accessibility::TestEnableSC(true);
266
267   /* add to scene and remove from scene to touch AccessibilityDeregister */
268   application.GetScene().Add(togglebutton);
269
270   auto states = accessible->GetStates();
271   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::CHECKED]), false, TEST_LOCATION);
272
273   // auto button = dynamic_cast<Dali::Toolkit::Button* >( accessible ) ;
274   togglebutton.SetProperty(Toolkit::Button::Property::TOGGLABLE, true);
275   togglebutton.SetProperty(Toolkit::Button::Property::SELECTED, true);
276
277   states = accessible->GetStates();
278   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::CHECKED]), true, TEST_LOCATION);
279
280   // Grab highlite now.
281   auto i = dynamic_cast<Dali::Accessibility::Component*>(accessible);
282   DALI_TEST_CHECK(i);
283   i->GrabHighlight();
284
285   togglebutton.SetProperty(Toolkit::Button::Property::SELECTED, false);
286
287   states = accessible->GetStates();
288   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::CHECKED]), false, TEST_LOCATION);
289
290   /* add to scene and remove from scene to touch AccessibilityDeregister */
291   application.GetScene().Remove(togglebutton);
292
293   Dali::Accessibility::TestEnableSC(false);
294
295   END_TEST;
296
297   END_TEST;
298 }
299
300 #include <dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h>
301 int UtcDaliAccessibilityTextSelectionPopupConstructor(void)
302 {
303   ToolkitTestApplication application;
304
305   auto textselectionpopup = TextSelectionPopup::New(NULL);
306   DALI_TEST_CHECK(textselectionpopup);
307
308   auto accessible = Dali::Accessibility::Accessible::Get(textselectionpopup);
309   DALI_TEST_CHECK(accessible);
310   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::DIALOG, TEST_LOCATION);
311
312   END_TEST;
313 }
314
315 int UtcDaliAccessibilityAlignmentConstructor(void)
316 {
317   ToolkitTestApplication application;
318
319   auto alignment = Alignment::New();
320   DALI_TEST_CHECK(alignment);
321
322   auto accessible = Dali::Accessibility::Accessible::Get(alignment);
323   DALI_TEST_CHECK(accessible);
324   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION);
325
326   END_TEST;
327 }
328
329 int UtcDaliAccessibilityRadioButtonStates(void)
330 {
331   ToolkitTestApplication application;
332
333   auto radiobutton = RadioButton::New();
334   DALI_TEST_CHECK(radiobutton);
335
336   auto accessible = Dali::Accessibility::Accessible::Get(radiobutton);
337   DALI_TEST_CHECK(accessible);
338
339   Dali::Accessibility::TestEnableSC(true);
340
341   application.GetScene().Add(radiobutton);
342
343   auto states = accessible->GetStates();
344   DALI_TEST_CHECK(states);
345   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::CHECKED]), false, TEST_LOCATION);
346   radiobutton.SetProperty(Toolkit::RadioButton::Property::SELECTED, true);
347   states = accessible->GetStates();
348   DALI_TEST_CHECK(states);
349   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::CHECKED]), true, TEST_LOCATION);
350
351   // Grab highlite now.
352   auto i = dynamic_cast<Dali::Accessibility::Component*>(accessible);
353   DALI_TEST_CHECK(i);
354   i->GrabHighlight();
355
356   radiobutton.SetProperty(Toolkit::RadioButton::Property::SELECTED, false);
357   states = accessible->GetStates();
358   DALI_TEST_CHECK(states);
359   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::CHECKED]), false, TEST_LOCATION);
360
361   application.GetScene().Remove(radiobutton);
362
363   Dali::Accessibility::TestEnableSC(false);
364
365   END_TEST;
366 }
367
368 int UtcDaliAccessibilityFlexContainerConstructor(void)
369 {
370   ToolkitTestApplication application;
371
372   auto flexcontainer = FlexContainer::New();
373   DALI_TEST_CHECK(flexcontainer);
374
375   auto accessible = Dali::Accessibility::Accessible::Get(flexcontainer);
376   DALI_TEST_CHECK(accessible);
377   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION);
378
379   END_TEST;
380 }
381
382 int UtcDaliAccessibilityCheckBoxButton(void)
383 {
384   ToolkitTestApplication application;
385
386   auto checkboxbutton = CheckBoxButton::New();
387   DALI_TEST_CHECK(checkboxbutton);
388
389   auto accessible = Dali::Accessibility::Accessible::Get(checkboxbutton);
390   DALI_TEST_CHECK(accessible);
391
392   Dali::Accessibility::TestEnableSC(true);
393
394   application.GetScene().Add(checkboxbutton);
395
396   auto states = accessible->GetStates();
397   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::CHECKED]), false, TEST_LOCATION);
398   checkboxbutton.SetProperty(Toolkit::CheckBoxButton::Property::SELECTED, true);
399   states = accessible->GetStates();
400   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::CHECKED]), true, TEST_LOCATION);
401
402   // Grab highlite now.
403   auto i = dynamic_cast<Dali::Accessibility::Component*>(accessible);
404   DALI_TEST_CHECK(i);
405   i->GrabHighlight();
406
407   checkboxbutton.SetProperty(Toolkit::CheckBoxButton::Property::SELECTED, false);
408   states = accessible->GetStates();
409   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::CHECKED]), false, TEST_LOCATION);
410
411   application.GetScene().Remove(checkboxbutton);
412
413   Dali::Accessibility::TestEnableSC(false);
414
415   END_TEST;
416 }
417
418 #include <dali-toolkit/devel-api/controls/text-controls/text-selection-toolbar.h>
419 int UtcDaliAccessibilityTextSelectionConstructor(void)
420 {
421   ToolkitTestApplication application;
422
423   auto textselectiontoolbar = TextSelectionToolbar::New();
424   DALI_TEST_CHECK(textselectiontoolbar);
425
426   auto accessible = Dali::Accessibility::Accessible::Get(textselectiontoolbar);
427   DALI_TEST_CHECK(accessible);
428   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::TOOL_BAR, TEST_LOCATION);
429
430   END_TEST;
431 }
432
433 #include <dali-toolkit/internal/accessibility-manager/accessibility-manager-impl.h>
434 int UtcDaliAccessibilityManager(void)
435 {
436   using attr = Toolkit::AccessibilityManager::AccessibilityAttribute;
437
438   ToolkitTestApplication application;
439
440   Dali::Accessibility::TestEnableSC(true);
441
442   auto accessmanager = new Dali::Toolkit::Internal::AccessibilityManager;
443   auto actor         = Control::New();
444
445   const std::string name  = "Name";
446   const std::string descr = "Description";
447
448   accessmanager->SetAccessibilityAttribute(actor, attr::ACCESSIBILITY_LABEL, name);
449   DALI_TEST_EQUALS(accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_LABEL), name, TEST_LOCATION);
450   DALI_TEST_EQUALS(actor.GetProperty<std::string>(DevelControl::Property::ACCESSIBILITY_NAME), name, TEST_LOCATION);
451
452   accessmanager->SetAccessibilityAttribute(actor, attr::ACCESSIBILITY_TRAIT, "Whatever");
453   DALI_TEST_EQUALS(accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_TRAIT), "", TEST_LOCATION);
454
455   accessmanager->SetAccessibilityAttribute(actor, attr::ACCESSIBILITY_VALUE, "Whatever");
456   DALI_TEST_EQUALS(accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_VALUE), "", TEST_LOCATION);
457
458   accessmanager->SetAccessibilityAttribute(actor, attr::ACCESSIBILITY_HINT, descr);
459   DALI_TEST_EQUALS(accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_HINT), descr, TEST_LOCATION);
460   DALI_TEST_EQUALS(actor.GetProperty<std::string>(DevelControl::Property::ACCESSIBILITY_DESCRIPTION), descr, TEST_LOCATION);
461
462   DALI_TEST_EQUALS(accessmanager->GetFocusOrder(actor), 0, TEST_LOCATION);
463   DALI_TEST_EQUALS(accessmanager->GenerateNewFocusOrder(), 1, TEST_LOCATION);
464
465   accessmanager->SetFocusOrder({}, 0);
466   accessmanager->SetFocusOrder(Control::New(), 1);
467   accessmanager->SetFocusOrder(actor, 2);
468   accessmanager->SetFocusOrder(Control::New(), 3);
469
470   DALI_TEST_EQUALS(accessmanager->GetFocusOrder(actor), 2, TEST_LOCATION);
471   DALI_TEST_EQUALS(accessmanager->GetActorByFocusOrder(2), actor, TEST_LOCATION);
472
473   accessmanager->SetCurrentFocusActor(actor);
474   DALI_TEST_EQUALS(accessmanager->GetCurrentFocusActor(), actor, TEST_LOCATION);
475   DALI_TEST_EQUALS(accessmanager->GetCurrentFocusOrder(), 2, TEST_LOCATION);
476
477   accessmanager->MoveFocusForward();
478   accessmanager->MoveFocusBackward();
479   DALI_TEST_EQUALS(accessmanager->GetCurrentFocusActor(), actor, TEST_LOCATION);
480   accessmanager->SetCurrentFocusActor({});
481
482   accessmanager->Reset();
483   accessmanager->MoveFocusBackward();
484   accessmanager->MoveFocusForward();
485
486   accessmanager->GetCurrentFocusGroup();
487   DALI_TEST_EQUALS(accessmanager->IsFocusGroup(actor), false, TEST_LOCATION);
488   accessmanager->GetFocusGroup(actor);
489
490   DALI_TEST_EQUALS(accessmanager->GetGroupMode(), false, TEST_LOCATION);
491   DALI_TEST_EQUALS(accessmanager->GetWrapMode(), true, TEST_LOCATION);
492
493   auto vector = accessmanager->GetReadPosition();
494   DALI_TEST_EQUALS(vector.x, 0.0f, TEST_LOCATION);
495   DALI_TEST_EQUALS(vector.y, 0.0f, TEST_LOCATION);
496
497   accessmanager->SetFocusIndicatorActor(Dali::Actor{});
498   accessmanager->GetFocusIndicatorActor();
499
500   Dali::Accessibility::TestEnableSC(false);
501
502   END_TEST;
503 }
504
505 int UtcDaliAccessibilityModel3dViewConstructor(void)
506 {
507   ToolkitTestApplication application;
508
509   auto model3dview = Model3dView::New();
510   DALI_TEST_CHECK(model3dview);
511
512   auto accessible = Dali::Accessibility::Accessible::Get(model3dview);
513   DALI_TEST_CHECK(accessible);
514   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::IMAGE, TEST_LOCATION);
515
516   END_TEST;
517 }
518
519 #include <dali-toolkit/internal/controls/effects-view/effects-view-impl.h>
520 int UtcDaliAccessibilityEffectsViewConstructor(void)
521 {
522   ToolkitTestApplication application;
523
524   auto etype       = Dali::Toolkit::EffectsView::EffectType::DROP_SHADOW;
525   auto effectsview = EffectsView::New(etype);
526   DALI_TEST_CHECK(effectsview);
527
528   auto accessible = Dali::Accessibility::Accessible::Get(effectsview);
529   DALI_TEST_CHECK(accessible);
530   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION);
531
532   END_TEST;
533 }
534
535 #include <dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.h>
536 int UtcDaliAccessibilitySuperBlurViewConstructor(void)
537 {
538   ToolkitTestApplication application;
539
540   auto superblurview = SuperBlurView::New(1);
541   DALI_TEST_CHECK(superblurview);
542
543   auto accessible = Dali::Accessibility::Accessible::Get(superblurview);
544   DALI_TEST_CHECK(accessible);
545   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION);
546
547   END_TEST;
548 }
549
550 int UtcDaliAccessibilityImageViewConstructor(void)
551 {
552   ToolkitTestApplication application;
553
554   auto imageview = ImageView::New();
555   DALI_TEST_CHECK(imageview);
556
557   auto accessible = Dali::Accessibility::Accessible::Get(imageview);
558   DALI_TEST_CHECK(accessible);
559   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::IMAGE, TEST_LOCATION);
560
561   END_TEST;
562 }
563
564 #include <dali-toolkit/devel-api/controls/page-turn-view/page-factory.h>
565 class TestPageFactory : public PageFactory
566 {
567 public:
568   TestPageFactory(bool returnValidTexture = true)
569   : mValidTexture(returnValidTexture)
570   {
571     mTotalPageNumber = 100;
572   }
573
574   /**
575    * Query the number of pages available from the factory.
576    * The maximum available page has an ID of GetNumberOfPages()-1.
577    */
578   virtual unsigned int GetNumberOfPages()
579   {
580     return mTotalPageNumber;
581   }
582
583   /**
584    * Create an texture to represent a page content.
585    * @param[in] pageId The ID of the page to create.
586    * @return An image, or an empty handle if the ID is out of range.
587    */
588   virtual Texture NewPage(unsigned int pageId)
589   {
590     if(mValidTexture)
591     {
592       return Texture::New(Dali::TextureType::TEXTURE_2D, Pixel::RGB888, 100, 100);
593     }
594     return Texture(); // empty handle
595   }
596
597 private:
598   unsigned int mTotalPageNumber;
599   bool         mValidTexture;
600 };
601
602 #include <dali-toolkit/internal/controls/page-turn-view/page-turn-landscape-view-impl.h>
603 int UtcDaliAccessibilityPageTurnViewConstructor(void)
604 {
605   ToolkitTestApplication application;
606
607   auto testpagefactory       = TestPageFactory();
608   auto vector2               = Vector2(1.0, 1.0);
609   auto pageturnlandscapeview = PageTurnLandscapeView::New(testpagefactory, vector2);
610   DALI_TEST_CHECK(pageturnlandscapeview);
611
612   auto accessible = Dali::Accessibility::Accessible::Get(pageturnlandscapeview);
613   DALI_TEST_CHECK(accessible);
614   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::PAGE_TAB_LIST, TEST_LOCATION);
615
616   END_TEST;
617 }
618
619 int UtcDaliAccessibilityGaussianBlurViewConstructor(void)
620 {
621   ToolkitTestApplication application;
622
623   auto gaussianblurview = GaussianBlurView::New();
624   DALI_TEST_CHECK(gaussianblurview);
625
626   auto accessible = Dali::Accessibility::Accessible::Get(gaussianblurview);
627   DALI_TEST_CHECK(accessible);
628   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION);
629
630   END_TEST;
631 }
632
633 int UtcDaliAccessibilityShadowViewConstructor(void)
634 {
635   ToolkitTestApplication application;
636
637   auto shadowview = ShadowView::New();
638   DALI_TEST_CHECK(shadowview);
639
640   auto accessible = Dali::Accessibility::Accessible::Get(shadowview);
641   DALI_TEST_CHECK(accessible);
642   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION);
643
644   END_TEST;
645 }
646
647 #include <dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h>
648 #include <dali-toolkit/public-api/controls/control-impl.h>
649 int UtcDaliAccessibilityScrollableConstructor(void)
650 {
651   ToolkitTestApplication application;
652
653   auto scrollview = ScrollView::New();
654   DALI_TEST_CHECK(scrollview);
655
656   auto accessible = Dali::Accessibility::Accessible::Get(scrollview);
657   DALI_TEST_CHECK(accessible);
658   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::SCROLL_PANE, TEST_LOCATION);
659
660   END_TEST;
661 }
662
663 #include <dali-toolkit/internal/controls/magnifier/magnifier-impl.h>
664 int UtcDaliAccessibilityMagnifierConstructor(void)
665 {
666   ToolkitTestApplication application;
667
668   auto magnifier = Magnifier::New();
669   DALI_TEST_CHECK(magnifier);
670
671   auto accessible = Dali::Accessibility::Accessible::Get(magnifier);
672   DALI_TEST_CHECK(accessible);
673   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION);
674
675   END_TEST;
676 }
677
678 int UtcDaliAccessibilityTableViewConstructor(void)
679 {
680   ToolkitTestApplication application;
681
682   auto tableview = TableView::New(10, 10);
683   DALI_TEST_CHECK(tableview);
684
685   auto accessible = Dali::Accessibility::Accessible::Get(tableview);
686   DALI_TEST_CHECK(accessible);
687   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::TABLE, TEST_LOCATION);
688
689   END_TEST;
690 }
691
692 #include <dali-toolkit/internal/controls/bloom-view/bloom-view-impl.h>
693 int UtcDaliAccessibilityBloomViewConstructor(void)
694 {
695   ToolkitTestApplication application;
696
697   auto bloomview = BloomView::New();
698   DALI_TEST_CHECK(bloomview);
699
700   auto accessible = Dali::Accessibility::Accessible::Get(bloomview);
701   DALI_TEST_CHECK(accessible);
702   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::ANIMATION, TEST_LOCATION);
703
704   END_TEST;
705 }
706
707 #include <dali-toolkit/internal/controls/text-controls/text-anchor-impl.h>
708 #include <dali-toolkit/internal/controls/text-controls/text-field-impl.h>
709 int UtcDaliAccessibilityTextAnchor(void)
710 {
711   ToolkitTestApplication application;
712
713   auto textanchor = TextAnchor::New();
714   DALI_TEST_CHECK(textanchor);
715
716   auto textlabel = TextLabel::New();
717   DALI_TEST_CHECK(textlabel);
718
719   Dali::Accessibility::TestEnableSC(true);
720
721   textlabel.Add(textanchor);
722   auto accessible = Dali::Accessibility::Accessible::Get(textanchor);
723   DALI_TEST_CHECK(accessible);
724   auto hyperlink = dynamic_cast<Dali::Accessibility::Hyperlink*>(accessible);
725   DALI_TEST_CHECK(hyperlink);
726   textanchor.SetProperty(Toolkit::TextAnchor::Property::URI, "https://www.tizen.org");
727   DALI_TEST_EQUALS(hyperlink->IsValid(), true, TEST_LOCATION);
728   auto action = dynamic_cast<Dali::Accessibility::Action*>(accessible);
729   // activation of valid hyperlink
730   DALI_TEST_CHECK(action->DoAction("accessibilityActivated"));
731   // making hyperlink invalid
732   textanchor.SetProperty(Toolkit::TextAnchor::Property::URI, "");
733   DALI_TEST_EQUALS(hyperlink->IsValid(), false, TEST_LOCATION);
734   DALI_TEST_CHECK(!action->DoAction("accessibilityActivated"));
735
736   Dali::Accessibility::TestEnableSC(false);
737
738   END_TEST;
739 }
740
741 int UtcDaliAccessibilityTextField(void)
742 {
743   ToolkitTestApplication application;
744
745   auto textfield = TextField::New();
746   DALI_TEST_CHECK(textfield);
747
748   textfield.SetProperty(Actor::Property::NAME, "test");
749   DALI_TEST_EQUALS(textfield.GetProperty<std::string>(Actor::Property::NAME), "test", TEST_LOCATION);
750
751   auto accessible = Dali::Accessibility::Accessible::Get(textfield);
752   DALI_TEST_CHECK(accessible);
753
754   DALI_TEST_EQUALS(accessible->GetName(), "", TEST_LOCATION);
755   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::ENTRY, TEST_LOCATION);
756   auto states = accessible->GetStates();
757   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::EDITABLE]), true, TEST_LOCATION);
758
759   Dali::Accessibility::TestEnableSC(true);
760
761   textfield.SetProperty(Toolkit::TextField::Property::TEXT, "test");
762   auto text = dynamic_cast<Dali::Accessibility::Text*>(accessible);
763   DALI_TEST_CHECK(text);
764   DALI_TEST_EQUALS(text->GetText(0, 10), "", TEST_LOCATION);
765   DALI_TEST_EQUALS(text->SetCursorOffset(100), false, TEST_LOCATION);
766   DALI_TEST_EQUALS(text->SetCursorOffset(2), true, TEST_LOCATION);
767   DALI_TEST_EQUALS(text->GetCursorOffset(), 2, TEST_LOCATION);
768
769   auto editabletext = dynamic_cast<Dali::Accessibility::EditableText*>(accessible);
770   DALI_TEST_CHECK(editabletext);
771   DALI_TEST_EQUALS(editabletext->CopyText(3, 1), false, TEST_LOCATION);
772   DALI_TEST_EQUALS(editabletext->CopyText(1, 3), true, TEST_LOCATION);
773   DALI_TEST_EQUALS(editabletext->CutText(3, 1), false, TEST_LOCATION);
774   DALI_TEST_EQUALS(editabletext->CutText(1, 3), true, TEST_LOCATION);
775   DALI_TEST_EQUALS(text->GetText(0, 1), "t", TEST_LOCATION);
776
777   auto range = text->GetRangeOfSelection(1);
778   DALI_TEST_EQUALS(range.startOffset, 0, TEST_LOCATION);
779   DALI_TEST_EQUALS(range.endOffset, 0, TEST_LOCATION);
780   DALI_TEST_EQUALS(range.content, "", TEST_LOCATION);
781   DALI_TEST_EQUALS(text->SetRangeOfSelection(1, 0, 1), false, TEST_LOCATION);
782   DALI_TEST_EQUALS(text->RemoveSelection(1), false, TEST_LOCATION);
783
784   // Insert into empty field
785   DALI_TEST_EQUALS(editabletext->SetTextContents(""), true, TEST_LOCATION);
786   DALI_TEST_EQUALS(editabletext->InsertText(1, "xyz"), false, TEST_LOCATION);
787   DALI_TEST_EQUALS(editabletext->InsertText(0, "abc"), true, TEST_LOCATION);
788   DALI_TEST_EQUALS(text->GetText(0, 3), "abc", TEST_LOCATION);
789
790   // Append at end
791   DALI_TEST_EQUALS(editabletext->InsertText(3, "xyz"), true, TEST_LOCATION);
792   DALI_TEST_EQUALS(text->GetText(0, 6), "abcxyz", TEST_LOCATION);
793
794   DALI_TEST_EQUALS(editabletext->SetTextContents("adef"), true, TEST_LOCATION);
795   DALI_TEST_EQUALS(editabletext->InsertText(1, "bc"), true, TEST_LOCATION);
796   DALI_TEST_EQUALS(text->GetText(0, 6), "abcdef", TEST_LOCATION);
797   DALI_TEST_EQUALS(editabletext->DeleteText(5, 1), false, TEST_LOCATION);
798   DALI_TEST_EQUALS(editabletext->DeleteText(1, 5), true, TEST_LOCATION);
799   DALI_TEST_EQUALS(text->GetText(0, 2), "af", TEST_LOCATION);
800
801   auto hypertext = dynamic_cast<Dali::Accessibility::Hypertext*>(accessible);
802   DALI_TEST_CHECK(hypertext);
803   // text without the anchors markup and ENABLE_MARKUP property set (by default) to false
804   DALI_TEST_EQUALS(hypertext->GetLinkCount(), 0, TEST_LOCATION);
805   DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION);
806   DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION);
807   DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), -1, TEST_LOCATION);
808   DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION);
809   DALI_TEST_EQUALS(hypertext->GetLink(0) == nullptr, true, TEST_LOCATION);
810   DALI_TEST_EQUALS(hypertext->GetLink(5) == nullptr, true, TEST_LOCATION);
811   // text with the anchors markup and ENABLE_MARKUP property set (by default) to false
812   textfield.SetProperty(Toolkit::TextField::Property::TEXT, "12345<a href = 'https://www.tizen.org'>anchor1</a>12345<a href = 'https://www.tizen.org' >veryveryveryveryveryveryveryverylonganchor2</a>12345<a href = 'https://www.tizen.org'>anchor3</a>12345");
813   DALI_TEST_EQUALS(hypertext->GetLinkCount(), 0, TEST_LOCATION);
814   DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION);
815   DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION);
816   DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), -1, TEST_LOCATION);
817   DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION);
818   DALI_TEST_EQUALS(hypertext->GetLink(0) == nullptr, true, TEST_LOCATION);
819   DALI_TEST_EQUALS(hypertext->GetLink(5) == nullptr, true, TEST_LOCATION);
820   // text with the anchors markup and ENABLE_MARKUP property set to true
821   textfield.SetProperty(Toolkit::TextField::Property::ENABLE_MARKUP, true);
822   DALI_TEST_EQUALS(hypertext->GetLinkCount(), 3, TEST_LOCATION);
823   DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION);
824   DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION);
825   DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), 0, TEST_LOCATION);  //1st anchor index
826   DALI_TEST_EQUALS(hypertext->GetLinkIndex(17), 1, TEST_LOCATION); //2nd anchor index
827   DALI_TEST_EQUALS(hypertext->GetLinkIndex(66), 2, TEST_LOCATION); //3rd anchor index
828   DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION);
829   auto hyperlink = hypertext->GetLink(0);
830   DALI_TEST_CHECK(hyperlink);
831   DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 5, TEST_LOCATION);
832   DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 12, TEST_LOCATION);
833   DALI_TEST_EQUALS(hyperlink->GetAnchorCount(), 1, TEST_LOCATION);
834   DALI_TEST_EQUALS(hyperlink->GetAnchorUri(0), "https://www.tizen.org", TEST_LOCATION);
835   auto anchorAccessible = hyperlink->GetAnchorAccessible(0);
836   DALI_TEST_EQUALS(hyperlink == anchorAccessible, true, TEST_LOCATION);
837   hyperlink = hypertext->GetLink(1);
838   DALI_TEST_CHECK(hyperlink);
839   DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 17, TEST_LOCATION);
840   DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 60, TEST_LOCATION);
841   hyperlink = hypertext->GetLink(2);
842   DALI_TEST_CHECK(hyperlink);
843   DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 65, TEST_LOCATION);
844   DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 72, TEST_LOCATION);
845
846   Dali::Accessibility::TestEnableSC(false);
847
848   END_TEST;
849 }
850
851 #include <dali-toolkit/internal/controls/text-controls/text-editor-impl.h>
852 int UtcDaliAccessibilityTextEditor(void)
853 {
854   ToolkitTestApplication application;
855
856   auto texteditor = TextEditor::New();
857   DALI_TEST_CHECK(texteditor);
858
859   texteditor.SetProperty(Actor::Property::NAME, "test");
860   DALI_TEST_EQUALS(texteditor.GetProperty<std::string>(Actor::Property::NAME), "test", TEST_LOCATION);
861
862   auto accessible = Dali::Accessibility::Accessible::Get(texteditor);
863   DALI_TEST_CHECK(accessible);
864
865   DALI_TEST_EQUALS(accessible->GetName(), "", TEST_LOCATION);
866   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::ENTRY, TEST_LOCATION);
867   auto states = accessible->GetStates();
868   DALI_TEST_EQUALS(static_cast<unsigned int>(states[Accessibility::State::EDITABLE]), true, TEST_LOCATION);
869
870   Dali::Accessibility::TestEnableSC(true);
871
872   texteditor.SetProperty(Toolkit::TextEditor::Property::TEXT, "test");
873   auto text = dynamic_cast<Dali::Accessibility::Text*>(accessible);
874   DALI_TEST_CHECK(text);
875   DALI_TEST_EQUALS(text->GetText(0, 10), "", TEST_LOCATION);
876   DALI_TEST_EQUALS(text->SetCursorOffset(100), false, TEST_LOCATION);
877   DALI_TEST_EQUALS(text->SetCursorOffset(2), true, TEST_LOCATION);
878   DALI_TEST_EQUALS(text->GetCursorOffset(), 2, TEST_LOCATION);
879
880   auto editabletext = dynamic_cast<Dali::Accessibility::EditableText*>(accessible);
881   DALI_TEST_CHECK(editabletext);
882   DALI_TEST_EQUALS(editabletext->CopyText(3, 1), false, TEST_LOCATION);
883   DALI_TEST_EQUALS(editabletext->CopyText(1, 3), true, TEST_LOCATION);
884   DALI_TEST_EQUALS(editabletext->CutText(3, 1), false, TEST_LOCATION);
885   DALI_TEST_EQUALS(editabletext->CutText(1, 3), true, TEST_LOCATION);
886   DALI_TEST_EQUALS(text->GetText(0, 1), "t", TEST_LOCATION);
887
888   auto range = text->GetRangeOfSelection(1);
889   DALI_TEST_EQUALS(range.startOffset, 0, TEST_LOCATION);
890   DALI_TEST_EQUALS(range.endOffset, 0, TEST_LOCATION);
891   DALI_TEST_EQUALS(range.content, "", TEST_LOCATION);
892   DALI_TEST_EQUALS(text->SetRangeOfSelection(1, 0, 1), false, TEST_LOCATION);
893   DALI_TEST_EQUALS(text->RemoveSelection(1), false, TEST_LOCATION);
894
895   // Insert into empty field
896   DALI_TEST_EQUALS(editabletext->SetTextContents(""), true, TEST_LOCATION);
897   DALI_TEST_EQUALS(editabletext->InsertText(1, "xyz"), false, TEST_LOCATION);
898   DALI_TEST_EQUALS(editabletext->InsertText(0, "abc"), true, TEST_LOCATION);
899   DALI_TEST_EQUALS(text->GetText(0, 3), "abc", TEST_LOCATION);
900
901   // Append at end
902   DALI_TEST_EQUALS(editabletext->InsertText(3, "xyz"), true, TEST_LOCATION);
903   DALI_TEST_EQUALS(text->GetText(0, 6), "abcxyz", TEST_LOCATION);
904
905   DALI_TEST_EQUALS(editabletext->SetTextContents("adef"), true, TEST_LOCATION);
906   DALI_TEST_EQUALS(editabletext->InsertText(1, "bc"), true, TEST_LOCATION);
907   DALI_TEST_EQUALS(text->GetText(0, 6), "abcdef", TEST_LOCATION);
908   DALI_TEST_EQUALS(editabletext->DeleteText(5, 1), false, TEST_LOCATION);
909   DALI_TEST_EQUALS(editabletext->DeleteText(1, 5), true, TEST_LOCATION);
910   DALI_TEST_EQUALS(text->GetText(0, 2), "af", TEST_LOCATION);
911
912   auto hypertext = dynamic_cast<Dali::Accessibility::Hypertext*>(accessible);
913   DALI_TEST_CHECK(hypertext);
914   // text without the anchors markup and ENABLE_MARKUP property set (by default) to false
915   DALI_TEST_EQUALS(hypertext->GetLinkCount(), 0, TEST_LOCATION);
916   DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION);
917   DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION);
918   DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), -1, TEST_LOCATION);
919   DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION);
920   DALI_TEST_EQUALS(hypertext->GetLink(0) == nullptr, true, TEST_LOCATION);
921   DALI_TEST_EQUALS(hypertext->GetLink(5) == nullptr, true, TEST_LOCATION);
922   // text with the anchors markup and ENABLE_MARKUP property set (by default) to false
923   texteditor.SetProperty(Toolkit::TextEditor::Property::TEXT, "12345<a href = 'https://www.tizen.org'>anchor1</a>12345<a href = 'https://www.tizen.org' >veryveryveryveryveryveryveryverylonganchor2</a>12345<a href = 'https://www.tizen.org'>anchor3</a>12345");
924   DALI_TEST_EQUALS(hypertext->GetLinkCount(), 0, TEST_LOCATION);
925   DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION);
926   DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION);
927   DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), -1, TEST_LOCATION);
928   DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION);
929   DALI_TEST_EQUALS(hypertext->GetLink(0) == nullptr, true, TEST_LOCATION);
930   DALI_TEST_EQUALS(hypertext->GetLink(5) == nullptr, true, TEST_LOCATION);
931   // text with the anchors markup and ENABLE_MARKUP property set to true
932   texteditor.SetProperty(Toolkit::TextEditor::Property::ENABLE_MARKUP, true);
933   DALI_TEST_EQUALS(hypertext->GetLinkCount(), 3, TEST_LOCATION);
934   DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION);
935   DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION);
936   DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), 0, TEST_LOCATION);  //1st anchor index
937   DALI_TEST_EQUALS(hypertext->GetLinkIndex(17), 1, TEST_LOCATION); //2nd anchor index
938   DALI_TEST_EQUALS(hypertext->GetLinkIndex(66), 2, TEST_LOCATION); //3rd anchor index
939   DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION);
940   auto hyperlink = hypertext->GetLink(0);
941   DALI_TEST_CHECK(hyperlink);
942   DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 5, TEST_LOCATION);
943   DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 12, TEST_LOCATION);
944   DALI_TEST_EQUALS(hyperlink->GetAnchorCount(), 1, TEST_LOCATION);
945   DALI_TEST_EQUALS(hyperlink->GetAnchorUri(0), "https://www.tizen.org", TEST_LOCATION);
946   auto anchorAccessible = hyperlink->GetAnchorAccessible(0);
947   DALI_TEST_EQUALS(hyperlink == anchorAccessible, true, TEST_LOCATION);
948   hyperlink = hypertext->GetLink(1);
949   DALI_TEST_CHECK(hyperlink);
950   DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 17, TEST_LOCATION);
951   DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 60, TEST_LOCATION);
952   hyperlink = hypertext->GetLink(2);
953   DALI_TEST_CHECK(hyperlink);
954   DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 65, TEST_LOCATION);
955   DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 72, TEST_LOCATION);
956
957   Dali::Accessibility::TestEnableSC(false);
958
959   END_TEST;
960 }
961
962 int UtcDaliAccessibilityTextLabel(void)
963 {
964   ToolkitTestApplication application;
965
966   auto textlabel = TextLabel::New();
967   DALI_TEST_CHECK(textlabel);
968
969   textlabel.SetProperty(Actor::Property::NAME, "test");
970   DALI_TEST_EQUALS(textlabel.GetProperty<std::string>(Actor::Property::NAME), "test", TEST_LOCATION);
971
972   auto accessible = Dali::Accessibility::Accessible::Get(textlabel);
973   DALI_TEST_CHECK(accessible);
974
975   DALI_TEST_EQUALS(accessible->GetName(), "test", TEST_LOCATION);
976   DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::LABEL, TEST_LOCATION);
977
978   Dali::Accessibility::TestEnableSC(true);
979
980   textlabel.SetProperty(Toolkit::TextLabel::Property::TEXT, "test");
981   auto text = dynamic_cast<Dali::Accessibility::Text*>(accessible);
982   DALI_TEST_CHECK(text);
983   DALI_TEST_EQUALS(text->GetText(0, 10), "", TEST_LOCATION);
984   DALI_TEST_EQUALS(text->GetText(0, 4), "test", TEST_LOCATION);
985   DALI_TEST_EQUALS(text->SetCursorOffset(0), false, TEST_LOCATION);
986   DALI_TEST_EQUALS(text->GetCursorOffset(), 0, TEST_LOCATION);
987
988   auto range = text->GetRangeOfSelection(1);
989   DALI_TEST_EQUALS(range.startOffset, 0, TEST_LOCATION);
990   DALI_TEST_EQUALS(range.endOffset, 0, TEST_LOCATION);
991   DALI_TEST_EQUALS(range.content, "", TEST_LOCATION);
992   DALI_TEST_EQUALS(text->SetRangeOfSelection(1, 0, 1), false, TEST_LOCATION);
993   DALI_TEST_EQUALS(text->RemoveSelection(1), false, TEST_LOCATION);
994
995   auto hypertext = dynamic_cast<Dali::Accessibility::Hypertext*>(accessible);
996   DALI_TEST_CHECK(hypertext);
997   // text without the anchors markup and ENABLE_MARKUP property set (by default) to false
998   DALI_TEST_EQUALS(hypertext->GetLinkCount(), 0, TEST_LOCATION);
999   DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION);
1000   DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION);
1001   DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), -1, TEST_LOCATION);
1002   DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION);
1003   DALI_TEST_EQUALS(hypertext->GetLink(0) == nullptr, true, TEST_LOCATION);
1004   DALI_TEST_EQUALS(hypertext->GetLink(5) == nullptr, true, TEST_LOCATION);
1005   // text with the anchors markup and ENABLE_MARKUP property set (by default) to false
1006   textlabel.SetProperty(Toolkit::TextLabel::Property::TEXT, "12345<a href = 'https://www.tizen.org'>anchor1</a>12345<a href = 'https://www.tizen.org' >veryveryveryveryveryveryveryverylonganchor2</a>12345<a href = 'https://www.tizen.org'>anchor3</a>12345");
1007   DALI_TEST_EQUALS(hypertext->GetLinkCount(), 0, TEST_LOCATION);
1008   DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION);
1009   DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION);
1010   DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), -1, TEST_LOCATION);
1011   DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION);
1012   DALI_TEST_EQUALS(hypertext->GetLink(0) == nullptr, true, TEST_LOCATION);
1013   DALI_TEST_EQUALS(hypertext->GetLink(5) == nullptr, true, TEST_LOCATION);
1014   // text with the anchors markup and ENABLE_MARKUP property set to true
1015   textlabel.SetProperty(Toolkit::TextLabel::Property::ENABLE_MARKUP, true);
1016   DALI_TEST_EQUALS(hypertext->GetLinkCount(), 3, TEST_LOCATION);
1017   DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION);
1018   DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION);
1019   DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), 0, TEST_LOCATION);  //1st anchor index
1020   DALI_TEST_EQUALS(hypertext->GetLinkIndex(17), 1, TEST_LOCATION); //2nd anchor index
1021   DALI_TEST_EQUALS(hypertext->GetLinkIndex(66), 2, TEST_LOCATION); //3rd anchor index
1022   DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION);
1023   auto hyperlink = hypertext->GetLink(0);
1024   DALI_TEST_CHECK(hyperlink);
1025   DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 5, TEST_LOCATION);
1026   DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 12, TEST_LOCATION);
1027   DALI_TEST_EQUALS(hyperlink->GetAnchorCount(), 1, TEST_LOCATION);
1028   DALI_TEST_EQUALS(hyperlink->GetAnchorUri(0), "https://www.tizen.org", TEST_LOCATION);
1029   auto anchorAccessible = hyperlink->GetAnchorAccessible(0);
1030   DALI_TEST_EQUALS(hyperlink == anchorAccessible, true, TEST_LOCATION);
1031   hyperlink = hypertext->GetLink(1);
1032   DALI_TEST_CHECK(hyperlink);
1033   DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 17, TEST_LOCATION);
1034   DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 60, TEST_LOCATION);
1035   hyperlink = hypertext->GetLink(2);
1036   DALI_TEST_CHECK(hyperlink);
1037   DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 65, TEST_LOCATION);
1038   DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 72, TEST_LOCATION);
1039
1040   Dali::Accessibility::TestEnableSC(false);
1041
1042   END_TEST;
1043 }
1044
1045 #include <dali-toolkit/internal/controls/navigation-view/navigation-view-impl.h>
1046 int UtcDaliAccessibilityNavigationViewConstructor(void)
1047 {
1048   ToolkitTestApplication application;
1049
1050   auto navigationview = NavigationView::New();
1051   DALI_TEST_CHECK(navigationview);
1052
1053   auto accessible = Dali::Accessibility::Accessible::Get(navigationview);
1054   DALI_TEST_CHECK(accessible);
1055
1056   DALI_TEST_EQUALS(accessible->GetRole(), Dali::Accessibility::Role::FILLER, TEST_LOCATION);
1057
1058   END_TEST;
1059 }
1060
1061 int UtcDaliAccessibilityVideoViewConstructor(void)
1062 {
1063   ToolkitTestApplication application;
1064
1065   auto videoview = VideoView::New();
1066   DALI_TEST_CHECK(videoview);
1067
1068   auto accessible = Dali::Accessibility::Accessible::Get(videoview);
1069   DALI_TEST_CHECK(accessible);
1070
1071   DALI_TEST_EQUALS(accessible->GetRole(), Dali::Accessibility::Role::VIDEO, TEST_LOCATION);
1072
1073   END_TEST;
1074 }