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>
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-bridge.h>
8 #include <dali/devel-api/atspi-interfaces/accessible.h>
9 #include <dali/devel-api/atspi-interfaces/action.h>
10 #include <dali/devel-api/atspi-interfaces/editable-text.h>
11 #include <dali/devel-api/atspi-interfaces/hyperlink.h>
12 #include <dali/devel-api/atspi-interfaces/hypertext.h>
13 #include <dali/devel-api/atspi-interfaces/text.h>
15 #include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
17 using namespace Dali::Toolkit;
19 void utc_dali_accessibility_controls_startup(void)
21 test_return_value = TET_UNDEF;
22 DBusWrapper::Install(std::unique_ptr<DBusWrapper>(new TestDBusWrapper));
25 void utc_dali_accessibility_controls_cleanup(void)
27 test_return_value = TET_PASS;
28 //DBusWrapper::Install({}) is a de-install
29 DBusWrapper::Install({});
32 int UtcDaliControlPropertyAccessibilityTranslationDomain(void)
34 ToolkitTestApplication application;
36 auto control = Control::New();
38 auto accessibility_translation_domain = DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN;
39 DALI_TEST_EQUALS("", control.GetProperty<std::string>(accessibility_translation_domain), TEST_LOCATION);
41 control.SetProperty( accessibility_translation_domain, "translation_domain_test_1" );
42 DALI_TEST_EQUALS( "translation_domain_test_1" , control.GetProperty( accessibility_translation_domain ).Get< std::string >(), TEST_LOCATION );
44 control.SetProperty( accessibility_translation_domain, "translation_domain_test_2" );
45 DALI_TEST_EQUALS( "translation_domain_test_2" , control.GetProperty( accessibility_translation_domain ).Get< std::string >(), TEST_LOCATION );
50 // This test shows that when the accessibility bridge is
51 // not up, there is no possibility to grab or clear highlight
52 int UtcDaliControlAccessibilityHighlight(void)
54 ToolkitTestApplication application;
55 auto controla = Control::New();
56 auto controlb = Control::New();
58 DALI_TEST_EQUALS( false, DevelControl::GrabAccessibilityHighlight(controla), TEST_LOCATION );
59 DALI_TEST_EQUALS( false, DevelControl::GrabAccessibilityHighlight(controlb), TEST_LOCATION );
60 DALI_TEST_EQUALS( false, DevelControl::ClearAccessibilityHighlight(controla), TEST_LOCATION );
61 DALI_TEST_EQUALS( false, DevelControl::ClearAccessibilityHighlight(controlb), TEST_LOCATION );
66 #include <dali-toolkit/devel-api/controls/tool-bar/tool-bar.h>
67 int UtcDaliAccessibilityToolBarConstructor(void)
69 ToolkitTestApplication application;
71 auto toolbar = ToolBar::New();
72 DALI_TEST_CHECK( toolbar );
74 auto accessible = Dali::Accessibility::Accessible::Get( toolbar );
75 DALI_TEST_CHECK( accessible );
76 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::TOOL_BAR, TEST_LOCATION );
81 int UtcDaliAccessibilityPushButtonConstructor(void)
83 ToolkitTestApplication application;
85 auto pushbutton = PushButton::New();
86 DALI_TEST_CHECK( pushbutton );
88 auto accessible = Dali::Accessibility::Accessible::Get( pushbutton );
89 DALI_TEST_CHECK( accessible );
90 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::PUSH_BUTTON, TEST_LOCATION );
95 int UtcDaliAccessibilityPushButtonStates(void)
97 ToolkitTestApplication application;
99 auto pushbutton = PushButton::New();
100 DALI_TEST_CHECK( pushbutton );
102 auto accessible = Dali::Accessibility::Accessible::Get( pushbutton );
103 DALI_TEST_CHECK( accessible );
105 Dali::Accessibility::TestEnableSC( true );
107 /* add to scene and remove from scene to touch AccessibilityDeregister */
108 application.GetScene().Add( pushbutton );
110 auto states = accessible->GetStates();
111 DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::PRESSED ] ), false, TEST_LOCATION );
113 // auto button = dynamic_cast<Dali::Toolkit::Button* >( accessible ) ;
114 pushbutton.SetProperty( Toolkit::Button::Property::TOGGLABLE, true );
115 pushbutton.SetProperty( Toolkit::Button::Property::SELECTED, true );
117 states = accessible->GetStates();
118 DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::PRESSED ] ), true, TEST_LOCATION );
120 /* add to scene and remove from scene to touch AccessibilityDeregister */
121 application.GetScene().Remove( pushbutton );
123 Dali::Accessibility::TestEnableSC( false );
128 #include <dali-toolkit/devel-api/controls/buttons/toggle-button.h>
129 int UtcDaliAccessibilityToggleButtonConstructor(void)
131 ToolkitTestApplication application;
133 auto togglebutton = ToggleButton::New();
134 DALI_TEST_CHECK( togglebutton );
136 auto accessible = Dali::Accessibility::Accessible::Get( togglebutton );
137 DALI_TEST_CHECK( accessible );
138 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::TOGGLE_BUTTON, TEST_LOCATION );
143 #include <dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h>
144 int UtcDaliAccessibilityTextSelectionPopupConstructor(void)
146 ToolkitTestApplication application;
148 auto textselectionpopup = TextSelectionPopup::New( NULL );
149 DALI_TEST_CHECK( textselectionpopup );
151 auto accessible = Dali::Accessibility::Accessible::Get( textselectionpopup );
152 DALI_TEST_CHECK( accessible );
153 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::DIALOG, TEST_LOCATION );
158 int UtcDaliAccessibilityAlignmentConstructor(void)
160 ToolkitTestApplication application;
162 auto alignment = Alignment::New();
163 DALI_TEST_CHECK( alignment );
165 auto accessible = Dali::Accessibility::Accessible::Get( alignment );
166 DALI_TEST_CHECK( accessible );
167 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION );
172 int UtcDaliAccessibilityRadioButtonStates(void)
174 ToolkitTestApplication application;
176 auto radiobutton = RadioButton::New();
177 DALI_TEST_CHECK( radiobutton );
179 auto accessible = Dali::Accessibility::Accessible::Get( radiobutton );
180 DALI_TEST_CHECK( accessible );
182 Dali::Accessibility::TestEnableSC( true );
184 auto states = accessible->GetStates();
185 DALI_TEST_CHECK( states );
186 DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::CHECKED ] ), false, TEST_LOCATION );
187 radiobutton.SetProperty( Toolkit::RadioButton::Property::SELECTED, true );
188 states = accessible->GetStates();
189 DALI_TEST_CHECK( states );
190 DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::CHECKED ] ), true, TEST_LOCATION );
192 Dali::Accessibility::TestEnableSC( false );
197 int UtcDaliAccessibilityFlexContainerConstructor(void)
199 ToolkitTestApplication application;
201 auto flexcontainer = FlexContainer::New();
202 DALI_TEST_CHECK( flexcontainer );
204 auto accessible = Dali::Accessibility::Accessible::Get( flexcontainer );
205 DALI_TEST_CHECK( accessible );
206 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION );
211 int UtcDaliAccessibilityCheckBoxButton(void)
213 ToolkitTestApplication application;
215 auto checkboxbutton = CheckBoxButton::New();
216 DALI_TEST_CHECK( checkboxbutton );
218 auto accessible = Dali::Accessibility::Accessible::Get( checkboxbutton );
219 DALI_TEST_CHECK( accessible );
221 Dali::Accessibility::TestEnableSC( true );
223 auto states = accessible->GetStates();
224 DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::CHECKED ] ), false, TEST_LOCATION );
225 checkboxbutton.SetProperty( Toolkit::CheckBoxButton::Property::SELECTED, true );
226 states = accessible->GetStates();
227 DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::CHECKED ] ), true, TEST_LOCATION );
229 Dali::Accessibility::TestEnableSC( false );
234 #include <dali-toolkit/devel-api/controls/text-controls/text-selection-toolbar.h>
235 int UtcDaliAccessibilityTextSelectionConstructor(void)
237 ToolkitTestApplication application;
239 auto textselectiontoolbar = TextSelectionToolbar::New();
240 DALI_TEST_CHECK( textselectiontoolbar );
242 auto accessible = Dali::Accessibility::Accessible::Get( textselectiontoolbar );
243 DALI_TEST_CHECK( accessible );
244 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::TOOL_BAR, TEST_LOCATION );
249 #include <dali-toolkit/internal/accessibility-manager/accessibility-manager-impl.h>
250 int UtcDaliAccessibilityManager(void)
252 using attr = Toolkit::AccessibilityManager::AccessibilityAttribute;
254 ToolkitTestApplication application;
256 Dali::Accessibility::TestEnableSC(true);
258 auto accessmanager = new Dali::Toolkit::Internal::AccessibilityManager;
259 auto actor = Control::New();
261 const std::string name = "Name";
262 const std::string descr = "Description";
264 accessmanager->SetAccessibilityAttribute(actor, attr::ACCESSIBILITY_LABEL, name);
265 DALI_TEST_EQUALS( accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_LABEL), name, TEST_LOCATION );
266 DALI_TEST_EQUALS( actor.GetProperty<std::string>(DevelControl::Property::ACCESSIBILITY_NAME), name, TEST_LOCATION );
268 accessmanager->SetAccessibilityAttribute(actor, attr::ACCESSIBILITY_TRAIT, "Whatever");
269 DALI_TEST_EQUALS( accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_TRAIT), "", TEST_LOCATION );
271 accessmanager->SetAccessibilityAttribute(actor, attr::ACCESSIBILITY_VALUE, "Whatever");
272 DALI_TEST_EQUALS( accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_VALUE), "", TEST_LOCATION );
274 accessmanager->SetAccessibilityAttribute(actor, attr::ACCESSIBILITY_HINT, descr);
275 DALI_TEST_EQUALS( accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_HINT), descr, TEST_LOCATION );
276 DALI_TEST_EQUALS( actor.GetProperty<std::string>(DevelControl::Property::ACCESSIBILITY_DESCRIPTION), descr, TEST_LOCATION );
278 DALI_TEST_EQUALS( accessmanager->GetFocusOrder(actor), 0, TEST_LOCATION );
279 DALI_TEST_EQUALS( accessmanager->GenerateNewFocusOrder(), 1, TEST_LOCATION );
281 accessmanager->SetFocusOrder({}, 0);
282 accessmanager->SetFocusOrder(Control::New(), 1);
283 accessmanager->SetFocusOrder(actor, 2);
284 accessmanager->SetFocusOrder(Control::New(), 3);
286 DALI_TEST_EQUALS( accessmanager->GetFocusOrder(actor), 2, TEST_LOCATION );
287 DALI_TEST_EQUALS( accessmanager->GetActorByFocusOrder(2), actor, TEST_LOCATION );
289 accessmanager->SetCurrentFocusActor(actor);
290 DALI_TEST_EQUALS( accessmanager->GetCurrentFocusActor(), actor, TEST_LOCATION );
291 DALI_TEST_EQUALS( accessmanager->GetCurrentFocusOrder(), 2, TEST_LOCATION );
293 accessmanager->MoveFocusForward();
294 accessmanager->MoveFocusBackward();
295 DALI_TEST_EQUALS( accessmanager->GetCurrentFocusActor(), actor, TEST_LOCATION );
296 accessmanager->SetCurrentFocusActor({});
298 accessmanager->Reset();
299 accessmanager->MoveFocusBackward();
300 accessmanager->MoveFocusForward();
302 accessmanager->GetCurrentFocusGroup();
303 DALI_TEST_EQUALS( accessmanager->IsFocusGroup(actor), false, TEST_LOCATION );
304 accessmanager->GetFocusGroup(actor);
306 DALI_TEST_EQUALS( accessmanager->GetGroupMode(), false, TEST_LOCATION );
307 DALI_TEST_EQUALS( accessmanager->GetWrapMode(), true, TEST_LOCATION );
309 auto vector = accessmanager->GetReadPosition();
310 DALI_TEST_EQUALS( vector.x, 0.0f, TEST_LOCATION );
311 DALI_TEST_EQUALS( vector.y, 0.0f, TEST_LOCATION );
313 accessmanager->SetFocusIndicatorActor(Dali::Actor{});
314 accessmanager->GetFocusIndicatorActor();
316 Dali::Accessibility::TestEnableSC(false);
321 int UtcDaliAccessibilityModel3dViewConstructor(void)
323 ToolkitTestApplication application;
325 auto model3dview = Model3dView::New();
326 DALI_TEST_CHECK( model3dview );
328 auto accessible = Dali::Accessibility::Accessible::Get( model3dview );
329 DALI_TEST_CHECK( accessible );
330 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::IMAGE, TEST_LOCATION );
335 #include <dali-toolkit/internal/controls/effects-view/effects-view-impl.h>
336 int UtcDaliAccessibilityEffectsViewConstructor(void)
338 ToolkitTestApplication application;
340 auto etype = Dali::Toolkit::EffectsView::EffectType::DROP_SHADOW;
341 auto effectsview = EffectsView::New( etype );
342 DALI_TEST_CHECK( effectsview );
344 auto accessible = Dali::Accessibility::Accessible::Get( effectsview );
345 DALI_TEST_CHECK( accessible );
346 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION );
351 #include <dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.h>
352 int UtcDaliAccessibilitySuperBlurViewConstructor(void)
354 ToolkitTestApplication application;
356 auto superblurview = SuperBlurView::New( 1 );
357 DALI_TEST_CHECK( superblurview );
359 auto accessible = Dali::Accessibility::Accessible::Get( superblurview );
360 DALI_TEST_CHECK( accessible );
361 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION );
366 int UtcDaliAccessibilityImageViewConstructor(void)
368 ToolkitTestApplication application;
370 auto imageview = ImageView::New();
371 DALI_TEST_CHECK( imageview );
373 auto accessible = Dali::Accessibility::Accessible::Get( imageview );
374 DALI_TEST_CHECK( accessible );
375 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::IMAGE, TEST_LOCATION );
380 #include <dali-toolkit/devel-api/controls/page-turn-view/page-factory.h>
381 class TestPageFactory : public PageFactory
385 TestPageFactory( bool returnValidTexture = true )
386 : mValidTexture( returnValidTexture )
388 mTotalPageNumber = 100;
392 * Query the number of pages available from the factory.
393 * The maximum available page has an ID of GetNumberOfPages()-1.
395 virtual unsigned int GetNumberOfPages()
397 return mTotalPageNumber;
401 * Create an texture to represent a page content.
402 * @param[in] pageId The ID of the page to create.
403 * @return An image, or an empty handle if the ID is out of range.
405 virtual Texture NewPage( unsigned int pageId )
409 return Texture::New( Dali::TextureType::TEXTURE_2D, Pixel::RGB888, 100, 100 );
411 return Texture(); // empty handle
415 unsigned int mTotalPageNumber;
419 #include <dali-toolkit/internal/controls/page-turn-view/page-turn-landscape-view-impl.h>
420 int UtcDaliAccessibilityPageTurnViewConstructor(void)
422 ToolkitTestApplication application;
424 auto testpagefactory = TestPageFactory();
425 auto vector2 = Vector2( 1.0, 1.0 );
426 auto pageturnlandscapeview = PageTurnLandscapeView::New( testpagefactory, vector2 );
427 DALI_TEST_CHECK( pageturnlandscapeview );
429 auto accessible = Dali::Accessibility::Accessible::Get( pageturnlandscapeview );
430 DALI_TEST_CHECK( accessible );
431 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::PAGE_TAB_LIST, TEST_LOCATION );
436 int UtcDaliAccessibilityGaussianBlurViewConstructor(void)
438 ToolkitTestApplication application;
440 auto gaussianblurview = GaussianBlurView::New();
441 DALI_TEST_CHECK( gaussianblurview );
443 auto accessible = Dali::Accessibility::Accessible::Get( gaussianblurview );
444 DALI_TEST_CHECK( accessible );
445 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION );
450 int UtcDaliAccessibilityShadowViewConstructor(void)
452 ToolkitTestApplication application;
454 auto shadowview = ShadowView::New();
455 DALI_TEST_CHECK( shadowview );
457 auto accessible = Dali::Accessibility::Accessible::Get( shadowview );
458 DALI_TEST_CHECK( accessible );
459 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION );
464 #include <dali-toolkit/public-api/controls/control-impl.h>
465 #include <dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h>
466 int UtcDaliAccessibilityScrollableConstructor(void)
468 ToolkitTestApplication application;
470 auto scrollview = ScrollView::New();
471 DALI_TEST_CHECK( scrollview );
473 auto accessible = Dali::Accessibility::Accessible::Get( scrollview );
474 DALI_TEST_CHECK( accessible );
475 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::SCROLL_PANE, TEST_LOCATION );
480 #include <dali-toolkit/internal/controls/magnifier/magnifier-impl.h>
481 int UtcDaliAccessibilityMagnifierConstructor(void)
483 ToolkitTestApplication application;
485 auto magnifier = Magnifier::New();
486 DALI_TEST_CHECK( magnifier );
488 auto accessible = Dali::Accessibility::Accessible::Get( magnifier );
489 DALI_TEST_CHECK( accessible );
490 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION );
495 int UtcDaliAccessibilityTableViewConstructor(void)
497 ToolkitTestApplication application;
499 auto tableview = TableView::New( 10, 10 );
500 DALI_TEST_CHECK( tableview );
502 auto accessible = Dali::Accessibility::Accessible::Get( tableview );
503 DALI_TEST_CHECK( accessible );
504 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::TABLE, TEST_LOCATION );
509 #include <dali-toolkit/internal/controls/bloom-view/bloom-view-impl.h>
510 int UtcDaliAccessibilityBloomViewConstructor(void)
512 ToolkitTestApplication application;
514 auto bloomview = BloomView::New();
515 DALI_TEST_CHECK( bloomview );
517 auto accessible = Dali::Accessibility::Accessible::Get( bloomview );
518 DALI_TEST_CHECK( accessible );
519 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::ANIMATION, TEST_LOCATION );
524 #include <dali-toolkit/internal/controls/text-controls/text-field-impl.h>
525 #include <dali-toolkit/internal/controls/text-controls/text-anchor-impl.h>
526 int UtcDaliAccessibilityTextAnchor(void)
528 ToolkitTestApplication application;
530 auto textanchor = TextAnchor::New();
531 DALI_TEST_CHECK( textanchor );
533 auto textlabel = TextLabel::New();
534 DALI_TEST_CHECK( textlabel );
536 Dali::Accessibility::TestEnableSC( true );
538 textlabel.Add(textanchor);
539 auto accessible = Dali::Accessibility::Accessible::Get( textanchor );
540 DALI_TEST_CHECK( accessible );
541 auto hyperlink = dynamic_cast< Dali::Accessibility::Hyperlink* >( accessible );
542 DALI_TEST_CHECK( hyperlink );
543 textanchor.SetProperty( Toolkit::TextAnchor::Property::URI, "https://www.tizen.org" );
544 DALI_TEST_EQUALS( hyperlink->IsValid(), true, TEST_LOCATION );
545 auto action = dynamic_cast<Dali::Accessibility::Action*>( accessible );
546 // activation of valid hyperlink
547 DALI_TEST_CHECK( action->DoAction( "accessibilityActivated" ) );
548 // making hyperlink invalid
549 textanchor.SetProperty( Toolkit::TextAnchor::Property::URI, "" );
550 DALI_TEST_EQUALS( hyperlink->IsValid(), false, TEST_LOCATION );
551 DALI_TEST_CHECK( !action->DoAction( "accessibilityActivated" ) );
553 Dali::Accessibility::TestEnableSC( false );
558 int UtcDaliAccessibilityTextField(void)
560 ToolkitTestApplication application;
562 auto textfield = TextField::New();
563 DALI_TEST_CHECK( textfield );
565 textfield.SetProperty(Actor::Property::NAME, "test" );
566 DALI_TEST_EQUALS( textfield.GetProperty<std::string>(Actor::Property::NAME), "test", TEST_LOCATION );
568 auto accessible = Dali::Accessibility::Accessible::Get( textfield );
569 DALI_TEST_CHECK( accessible );
571 DALI_TEST_EQUALS( accessible->GetName(), "", TEST_LOCATION );
572 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::ENTRY, TEST_LOCATION );
573 auto states = accessible->GetStates();
574 DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::EDITABLE ] ), true, TEST_LOCATION );
576 Dali::Accessibility::TestEnableSC( true );
578 textfield.SetProperty( Toolkit::TextField::Property::TEXT, "test" );
579 auto text = dynamic_cast< Dali::Accessibility::Text* >( accessible );
580 DALI_TEST_CHECK( text );
581 DALI_TEST_EQUALS( text->GetText( 0, 10 ), "", TEST_LOCATION );
582 DALI_TEST_EQUALS( text->SetCursorOffset(100), false, TEST_LOCATION );
583 DALI_TEST_EQUALS( text->SetCursorOffset(2), true, TEST_LOCATION );
584 DALI_TEST_EQUALS( text->GetCursorOffset(), 2, TEST_LOCATION );
586 auto editabletext = dynamic_cast< Dali::Accessibility::EditableText* >( accessible );
587 DALI_TEST_CHECK( editabletext );
588 DALI_TEST_EQUALS( editabletext->CopyText( 3, 1 ), false, TEST_LOCATION );
589 DALI_TEST_EQUALS( editabletext->CopyText( 1, 3 ), true, TEST_LOCATION );
590 DALI_TEST_EQUALS( editabletext->CutText( 3, 1 ), false, TEST_LOCATION );
591 DALI_TEST_EQUALS( editabletext->CutText( 1, 3 ), true, TEST_LOCATION );
592 DALI_TEST_EQUALS( text->GetText( 0, 1 ), "t", TEST_LOCATION );
594 auto range = text->GetRangeOfSelection( 1 );
595 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
596 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
597 DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
598 DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION );
599 DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION );
601 // Insert into empty field
602 DALI_TEST_EQUALS(editabletext->SetTextContents(""), true, TEST_LOCATION);
603 DALI_TEST_EQUALS(editabletext->InsertText(1, "xyz"), false, TEST_LOCATION);
604 DALI_TEST_EQUALS(editabletext->InsertText(0, "abc"), true, TEST_LOCATION);
605 DALI_TEST_EQUALS(text->GetText(0, 3), "abc", TEST_LOCATION);
608 DALI_TEST_EQUALS(editabletext->InsertText(3, "xyz"), true, TEST_LOCATION);
609 DALI_TEST_EQUALS(text->GetText(0, 6), "abcxyz", TEST_LOCATION);
611 DALI_TEST_EQUALS(editabletext->SetTextContents("adef"), true, TEST_LOCATION);
612 DALI_TEST_EQUALS(editabletext->InsertText(1, "bc"), true, TEST_LOCATION);
613 DALI_TEST_EQUALS(text->GetText(0, 6), "abcdef", TEST_LOCATION);
614 DALI_TEST_EQUALS(editabletext->DeleteText(5, 1), false, TEST_LOCATION);
615 DALI_TEST_EQUALS(editabletext->DeleteText(1, 5), true, TEST_LOCATION);
616 DALI_TEST_EQUALS(text->GetText(0, 2), "af", TEST_LOCATION);
618 auto hypertext = dynamic_cast< Dali::Accessibility::Hypertext* >( accessible );
619 DALI_TEST_CHECK( hypertext );
620 // text without the anchors markup and ENABLE_MARKUP property set (by default) to false
621 DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION );
622 DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
623 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
624 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION );
625 DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
626 DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION );
627 DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION );
628 // text with the anchors markup and ENABLE_MARKUP property set (by default) to false
629 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" );
630 DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION );
631 DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
632 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
633 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION );
634 DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
635 DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION );
636 DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION );
637 // text with the anchors markup and ENABLE_MARKUP property set to true
638 textfield.SetProperty( Toolkit::TextField::Property::ENABLE_MARKUP, true);
639 DALI_TEST_EQUALS( hypertext->GetLinkCount(), 3, TEST_LOCATION );
640 DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
641 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
642 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), 0, TEST_LOCATION ); //1st anchor index
643 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 17 ), 1, TEST_LOCATION ); //2nd anchor index
644 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 66 ), 2, TEST_LOCATION ); //3rd anchor index
645 DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
646 auto hyperlink = hypertext->GetLink( 0 );
647 DALI_TEST_CHECK ( hyperlink );
648 DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 5, TEST_LOCATION );
649 DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 12, TEST_LOCATION );
650 DALI_TEST_EQUALS( hyperlink->GetAnchorCount(), 1, TEST_LOCATION );
651 DALI_TEST_EQUALS( hyperlink->GetAnchorUri( 0 ), "https://www.tizen.org", TEST_LOCATION );
652 auto anchorAccessible = hyperlink->GetAnchorAccessible( 0 );
653 DALI_TEST_EQUALS( hyperlink == anchorAccessible, true, TEST_LOCATION );
654 hyperlink = hypertext->GetLink( 1 );
655 DALI_TEST_CHECK ( hyperlink );
656 DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 17, TEST_LOCATION );
657 DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 60, TEST_LOCATION );
658 hyperlink = hypertext->GetLink( 2 );
659 DALI_TEST_CHECK ( hyperlink );
660 DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 65, TEST_LOCATION );
661 DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 72, TEST_LOCATION );
663 Dali::Accessibility::TestEnableSC( false );
668 #include <dali-toolkit/internal/controls/text-controls/text-editor-impl.h>
669 int UtcDaliAccessibilityTextEditor(void)
671 ToolkitTestApplication application;
673 auto texteditor = TextEditor::New();
674 DALI_TEST_CHECK( texteditor );
676 texteditor.SetProperty(Actor::Property::NAME, "test" );
677 DALI_TEST_EQUALS( texteditor.GetProperty<std::string>(Actor::Property::NAME), "test", TEST_LOCATION );
679 auto accessible = Dali::Accessibility::Accessible::Get( texteditor );
680 DALI_TEST_CHECK( accessible );
682 DALI_TEST_EQUALS( accessible->GetName(), "", TEST_LOCATION );
683 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::ENTRY, TEST_LOCATION );
684 auto states = accessible->GetStates();
685 DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::EDITABLE ] ), true, TEST_LOCATION );
687 Dali::Accessibility::TestEnableSC( true );
689 texteditor.SetProperty( Toolkit::TextEditor::Property::TEXT, "test" );
690 auto text = dynamic_cast< Dali::Accessibility::Text* >( accessible );
691 DALI_TEST_CHECK( text );
692 DALI_TEST_EQUALS( text->GetText( 0, 10 ), "", TEST_LOCATION );
693 DALI_TEST_EQUALS( text->SetCursorOffset(100), false, TEST_LOCATION );
694 DALI_TEST_EQUALS( text->SetCursorOffset(2), true, TEST_LOCATION );
695 DALI_TEST_EQUALS( text->GetCursorOffset(), 2, TEST_LOCATION );
697 auto editabletext = dynamic_cast< Dali::Accessibility::EditableText* >( accessible );
698 DALI_TEST_CHECK( editabletext );
699 DALI_TEST_EQUALS( editabletext->CopyText( 3, 1 ), false, TEST_LOCATION );
700 DALI_TEST_EQUALS( editabletext->CopyText( 1, 3 ), true, TEST_LOCATION );
701 DALI_TEST_EQUALS( editabletext->CutText( 3, 1 ), false, TEST_LOCATION );
702 DALI_TEST_EQUALS( editabletext->CutText( 1, 3 ), true, TEST_LOCATION );
703 DALI_TEST_EQUALS( text->GetText( 0, 1 ), "t", TEST_LOCATION );
705 auto range = text->GetRangeOfSelection( 1 );
706 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
707 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
708 DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
709 DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION );
710 DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION );
712 // Insert into empty field
713 DALI_TEST_EQUALS(editabletext->SetTextContents(""), true, TEST_LOCATION);
714 DALI_TEST_EQUALS(editabletext->InsertText(1, "xyz"), false, TEST_LOCATION);
715 DALI_TEST_EQUALS(editabletext->InsertText(0, "abc"), true, TEST_LOCATION);
716 DALI_TEST_EQUALS(text->GetText(0, 3), "abc", TEST_LOCATION);
719 DALI_TEST_EQUALS(editabletext->InsertText(3, "xyz"), true, TEST_LOCATION);
720 DALI_TEST_EQUALS(text->GetText(0, 6), "abcxyz", TEST_LOCATION);
722 DALI_TEST_EQUALS(editabletext->SetTextContents("adef"), true, TEST_LOCATION);
723 DALI_TEST_EQUALS(editabletext->InsertText(1, "bc"), true, TEST_LOCATION);
724 DALI_TEST_EQUALS(text->GetText(0, 6), "abcdef", TEST_LOCATION);
725 DALI_TEST_EQUALS(editabletext->DeleteText(5, 1), false, TEST_LOCATION);
726 DALI_TEST_EQUALS(editabletext->DeleteText(1, 5), true, TEST_LOCATION);
727 DALI_TEST_EQUALS(text->GetText(0, 2), "af", TEST_LOCATION);
729 auto hypertext = dynamic_cast< Dali::Accessibility::Hypertext* >( accessible );
730 DALI_TEST_CHECK( hypertext );
731 // text without the anchors markup and ENABLE_MARKUP property set (by default) to false
732 DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION );
733 DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
734 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
735 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION );
736 DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
737 DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION );
738 DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION );
739 // text with the anchors markup and ENABLE_MARKUP property set (by default) to false
740 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" );
741 DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION );
742 DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
743 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
744 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION );
745 DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
746 DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION );
747 DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION );
748 // text with the anchors markup and ENABLE_MARKUP property set to true
749 texteditor.SetProperty( Toolkit::TextEditor::Property::ENABLE_MARKUP, true);
750 DALI_TEST_EQUALS( hypertext->GetLinkCount(), 3, TEST_LOCATION );
751 DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
752 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
753 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), 0, TEST_LOCATION ); //1st anchor index
754 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 17 ), 1, TEST_LOCATION ); //2nd anchor index
755 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 66 ), 2, TEST_LOCATION ); //3rd anchor index
756 DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
757 auto hyperlink = hypertext->GetLink( 0 );
758 DALI_TEST_CHECK ( hyperlink );
759 DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 5, TEST_LOCATION );
760 DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 12, TEST_LOCATION );
761 DALI_TEST_EQUALS( hyperlink->GetAnchorCount(), 1, TEST_LOCATION );
762 DALI_TEST_EQUALS( hyperlink->GetAnchorUri( 0 ), "https://www.tizen.org", TEST_LOCATION );
763 auto anchorAccessible = hyperlink->GetAnchorAccessible( 0 );
764 DALI_TEST_EQUALS( hyperlink == anchorAccessible, true, TEST_LOCATION );
765 hyperlink = hypertext->GetLink( 1 );
766 DALI_TEST_CHECK ( hyperlink );
767 DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 17, TEST_LOCATION );
768 DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 60, TEST_LOCATION );
769 hyperlink = hypertext->GetLink( 2 );
770 DALI_TEST_CHECK ( hyperlink );
771 DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 65, TEST_LOCATION );
772 DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 72, TEST_LOCATION );
774 Dali::Accessibility::TestEnableSC( false );
779 int UtcDaliAccessibilityTextLabel(void)
781 ToolkitTestApplication application;
783 auto textlabel = TextLabel::New();
784 DALI_TEST_CHECK( textlabel );
786 textlabel.SetProperty(Actor::Property::NAME, "test" );
787 DALI_TEST_EQUALS( textlabel.GetProperty<std::string>(Actor::Property::NAME), "test", TEST_LOCATION );
789 auto accessible = Dali::Accessibility::Accessible::Get( textlabel );
790 DALI_TEST_CHECK( accessible );
792 DALI_TEST_EQUALS( accessible->GetName(), "test", TEST_LOCATION );
793 DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::LABEL, TEST_LOCATION );
795 Dali::Accessibility::TestEnableSC( true );
797 textlabel.SetProperty( Toolkit::TextLabel::Property::TEXT, "test" );
798 auto text = dynamic_cast< Dali::Accessibility::Text* >( accessible );
799 DALI_TEST_CHECK( text );
800 DALI_TEST_EQUALS( text->GetText( 0, 10 ), "", TEST_LOCATION );
801 DALI_TEST_EQUALS( text->GetText( 0, 4 ), "test", TEST_LOCATION );
802 DALI_TEST_EQUALS( text->SetCursorOffset(0), false, TEST_LOCATION );
803 DALI_TEST_EQUALS( text->GetCursorOffset(), 0, TEST_LOCATION );
805 auto range = text->GetRangeOfSelection( 1 );
806 DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
807 DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
808 DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
809 DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION );
810 DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION );
812 auto hypertext = dynamic_cast< Dali::Accessibility::Hypertext* >( accessible );
813 DALI_TEST_CHECK( hypertext );
814 // text without the anchors markup and ENABLE_MARKUP property set (by default) to false
815 DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION );
816 DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
817 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
818 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION );
819 DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
820 DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION );
821 DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION );
822 // text with the anchors markup and ENABLE_MARKUP property set (by default) to false
823 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" );
824 DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION );
825 DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
826 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
827 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION );
828 DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
829 DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION );
830 DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION );
831 // text with the anchors markup and ENABLE_MARKUP property set to true
832 textlabel.SetProperty( Toolkit::TextLabel::Property::ENABLE_MARKUP, true);
833 DALI_TEST_EQUALS( hypertext->GetLinkCount(), 3, TEST_LOCATION );
834 DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
835 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
836 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), 0, TEST_LOCATION ); //1st anchor index
837 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 17 ), 1, TEST_LOCATION ); //2nd anchor index
838 DALI_TEST_EQUALS( hypertext->GetLinkIndex( 66 ), 2, TEST_LOCATION ); //3rd anchor index
839 DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
840 auto hyperlink = hypertext->GetLink( 0 );
841 DALI_TEST_CHECK ( hyperlink );
842 DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 5, TEST_LOCATION );
843 DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 12, TEST_LOCATION );
844 DALI_TEST_EQUALS( hyperlink->GetAnchorCount(), 1, TEST_LOCATION );
845 DALI_TEST_EQUALS( hyperlink->GetAnchorUri( 0 ), "https://www.tizen.org", TEST_LOCATION );
846 auto anchorAccessible = hyperlink->GetAnchorAccessible( 0 );
847 DALI_TEST_EQUALS( hyperlink == anchorAccessible, true, TEST_LOCATION );
848 hyperlink = hypertext->GetLink( 1 );
849 DALI_TEST_CHECK ( hyperlink );
850 DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 17, TEST_LOCATION );
851 DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 60, TEST_LOCATION );
852 hyperlink = hypertext->GetLink( 2 );
853 DALI_TEST_CHECK ( hyperlink );
854 DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 65, TEST_LOCATION );
855 DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 72, TEST_LOCATION );
857 Dali::Accessibility::TestEnableSC( false );
862 #include <dali-toolkit/internal/controls/navigation-view/navigation-view-impl.h>
863 int UtcDaliAccessibilityNavigationViewConstructor(void)
865 ToolkitTestApplication application;
867 auto navigationview = NavigationView::New();
868 DALI_TEST_CHECK( navigationview );
870 auto accessible = Dali::Accessibility::Accessible::Get( navigationview );
871 DALI_TEST_CHECK( accessible );
873 DALI_TEST_EQUALS( accessible->GetRole(), Dali::Accessibility::Role::FILLER, TEST_LOCATION );
878 int UtcDaliAccessibilityVideoViewConstructor(void)
880 ToolkitTestApplication application;
882 auto videoview = VideoView::New();
883 DALI_TEST_CHECK( videoview );
885 auto accessible = Dali::Accessibility::Accessible::Get( videoview );
886 DALI_TEST_CHECK( accessible );
888 DALI_TEST_EQUALS( accessible->GetRole(), Dali::Accessibility::Role::VIDEO, TEST_LOCATION );