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