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 #include <dali/devel-api/adaptor-framework/accessibility.h>
5 #include <dali/devel-api/adaptor-framework/accessibility-impl.h>
6 #include <dali-toolkit/devel-api/controls/control-devel.h>
7 #include <dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h>
8 #include <dali/devel-api/actors/actor-devel.h>
9 #include <dali/devel-api/common/stage.h>
12 #include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
14 using namespace Dali::Toolkit;
16 //using DBusWrapper = Dali::Accessibility::DBusWrapper; // FIXME
18 namespace Dali::Accessibility::TestDBusWrapper { struct error {}; } // FIXME
20 void utc_dali_accessibility_controls_bridge_up_startup(void)
22 test_return_value = TET_UNDEF;
23 DBusWrapper::Install(std::unique_ptr<DBusWrapper>(new TestDBusWrapper));
26 void utc_dali_accessibility_controls_bridge_up_cleanup(void)
28 test_return_value = TET_PASS;
29 //DBusWrapper::Install({}) is a de-install
30 //DBusWrapper::Install({}); // FIXME
34 namespace Accessibility {
35 std::ostream & operator<< (std::ostream & stream, const Address & address)
37 stream << address.ToString();
43 int UtcDaliControlAccessibilityRaiseBridge(void)
45 ToolkitTestApplication application;
47 DALI_TEST_CHECK(!Accessibility::IsUp());
49 Dali::Accessibility::TestEnableSC(true);
51 DALI_TEST_CHECK(Accessibility::IsUp());
53 // auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
54 // for(auto &a : wr->daliMethods) {
56 // if (std::get<3>(a.first) == MethodType::Method) mt = "MethodType::Method";
57 // else if (std::get<3>(a.first) == MethodType::Getter) mt = "MethodType::Getter";
58 // else if (std::get<3>(a.first) == MethodType::Setter) mt = "MethodType::Setter";
60 // printf("%s %s %s %s\n", std::get<0>(a.first).c_str(), std::get<1>(a.first).c_str(), std::get<2>(a.first).c_str(), mt);
63 Dali::Accessibility::TestEnableSC(false);
65 DALI_TEST_CHECK(!Accessibility::IsUp());
70 int UtcDaliControlAccessibilityName(void)
72 ToolkitTestApplication application;
74 auto control = Control::New();
75 Stage::GetCurrent().Add( control );
77 auto q = Dali::Accessibility::Accessible::Get( control );
80 DALI_TEST_EQUALS( "" , q->GetName(), TEST_LOCATION );
82 control.SetProperty( DevelControl::Property::ACCESSIBILITY_NAME, "Accessibility_Name" );
83 DALI_TEST_EQUALS( "Accessibility_Name" , q->GetName(), TEST_LOCATION );
84 DALI_TEST_EQUALS( control.GetProperty( DevelControl::Property::ACCESSIBILITY_NAME ).Get< std::string >() , "Accessibility_Name", TEST_LOCATION );
86 DevelControl::AccessibilityGetNameSignal(control).Connect( [] (std::string &accessibility_name) {
87 accessibility_name = "Accessibility_Name_With_Callback"; } );
89 DALI_TEST_EQUALS( "Accessibility_Name_With_Callback" , q->GetName(), TEST_LOCATION );
91 Dali::Accessibility::TestEnableSC(true);
93 DALI_TEST_EQUALS( "Accessibility_Name_With_Callback" , TestGetName( q->GetAddress()), TEST_LOCATION );
95 Dali::Accessibility::TestEnableSC( false );
100 int UtcDaliControlAccessibilityDescription(void)
102 ToolkitTestApplication application;
104 auto control = Control::New();
106 auto q = Dali::Accessibility::Accessible::Get( control );
107 DALI_TEST_CHECK( q );
109 DALI_TEST_EQUALS( "" , q->GetDescription(), TEST_LOCATION );
111 control.SetProperty( DevelControl::Property::ACCESSIBILITY_DESCRIPTION, "Accessibility_Description" );
112 DALI_TEST_EQUALS( "Accessibility_Description" , q->GetDescription(), TEST_LOCATION );
114 auto property = control.GetProperty( DevelControl::Property::ACCESSIBILITY_DESCRIPTION ).Get<std::string>();
115 DALI_TEST_EQUALS( "Accessibility_Description", property, TEST_LOCATION );
117 DevelControl::AccessibilityGetDescriptionSignal(control).Connect( [] (std::string &accessibility_description) {
118 accessibility_description = "Accessibility_Description_With_Callback"; } );
120 DALI_TEST_EQUALS( "Accessibility_Description_With_Callback" , q->GetDescription(), TEST_LOCATION );
122 Dali::Accessibility::TestEnableSC( true );
124 DALI_TEST_EQUALS( "Accessibility_Description_With_Callback" , TestGetDescription( q->GetAddress()), TEST_LOCATION );
126 Dali::Accessibility::TestEnableSC( false );
131 int UtcDaliControlAccessibilityRole(void)
133 ToolkitTestApplication application;
135 auto control = Control::New();
136 auto role_unknown = Dali::Accessibility::Role::UNKNOWN;
137 auto role_pushbutton = Dali::Accessibility::Role::PUSH_BUTTON;
139 DALI_TEST_EQUALS( role_unknown,control.GetProperty( DevelControl::Property::ACCESSIBILITY_ROLE ).Get< Dali::Accessibility::Role >(), TEST_LOCATION );
141 auto q = Dali::Accessibility::Accessible::Get( control );
142 DALI_TEST_EQUALS( role_unknown , q->GetRole(), TEST_LOCATION);
143 DALI_TEST_EQUALS( "unknown" , q->GetRoleName(), TEST_LOCATION );
145 Dali::Accessibility::TestEnableSC( true );
146 DALI_TEST_CHECK( q );
147 DALI_TEST_EQUALS( static_cast< uint32_t >( role_unknown ), TestGetRole( q->GetAddress() ), TEST_LOCATION );
148 DALI_TEST_EQUALS( "unknown" , TestGetRoleName( q->GetAddress() ), TEST_LOCATION );
149 DALI_TEST_EQUALS( "unknown" , TestGetLocalizedRoleName( q->GetAddress() ), TEST_LOCATION );
151 control.SetProperty( DevelControl::Property::ACCESSIBILITY_ROLE, role_pushbutton );
153 DALI_TEST_EQUALS( static_cast< uint32_t >( role_pushbutton ), TestGetRole( q->GetAddress() ), TEST_LOCATION );
154 DALI_TEST_EQUALS( "push button" ,TestGetRoleName( q->GetAddress() ), TEST_LOCATION );
155 DALI_TEST_EQUALS( "push button" , TestGetLocalizedRoleName( q->GetAddress() ), TEST_LOCATION );
157 Dali::Accessibility::TestEnableSC( false );
159 DALI_TEST_EQUALS( role_pushbutton , q->GetRole(), TEST_LOCATION);
160 DALI_TEST_EQUALS( "push button" , q->GetRoleName(), TEST_LOCATION );
165 int UtcDaliControlAccessibilityState(void)
167 ToolkitTestApplication application;
169 auto control = Control::New();
170 auto q = Dali::Accessibility::Accessible::Get( control );
172 Dali::Accessibility::TestEnableSC( true );
174 auto states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
175 auto states = DevelControl::GetAccessibilityStates(control);
176 DALI_TEST_CHECK( states_by_bridge == states );
178 Dali::Accessibility::TestEnableSC( false );
183 int UtcDaliControlAccessibilityModal(void)
185 ToolkitTestApplication application;
186 auto control = TextSelectionPopup::New( NULL );
187 auto states = DevelControl::GetAccessibilityStates(control);
189 DALI_TEST_CHECK( states[ Dali::Accessibility::State::MODAL ] );
194 int UtcDaliControlAccessibilityHighlightable(void)
196 ToolkitTestApplication application;
197 auto control = Control::New();
199 auto noneset = control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE );
200 DALI_TEST_EQUALS( Property::NONE, noneset.GetType(), TEST_LOCATION );
202 auto q = Dali::Accessibility::Accessible::Get( control );
204 Dali::Accessibility::TestEnableSC( true );
206 auto states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
207 DALI_TEST_CHECK( states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
209 control.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, true );
210 DALI_TEST_EQUALS( Property::BOOLEAN, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).GetType(), TEST_LOCATION );
211 DALI_TEST_EQUALS( true, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).Get< bool >(), TEST_LOCATION );
213 states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
214 DALI_TEST_CHECK( states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
216 control.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, false );
217 DALI_TEST_EQUALS( Property::BOOLEAN, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).GetType(), TEST_LOCATION );
218 DALI_TEST_EQUALS( false, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).Get< bool >(), TEST_LOCATION );
220 states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
221 DALI_TEST_CHECK( !states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
223 Dali::Accessibility::TestEnableSC( false );
228 int UtcDaliControlAccessibilityHighlightBridgeUp(void)
230 ToolkitTestApplication application;
232 auto controla = Control::New();
233 auto controlb = Control::New();
235 Dali::Accessibility::TestEnableSC( true );
237 auto accessible_a = Dali::Accessibility::Accessible::Get( controla );
238 auto accessible_b = Dali::Accessibility::Accessible::Get( controlb );
240 auto a = dynamic_cast<Dali::Accessibility::Component*>( accessible_a );
241 auto b = dynamic_cast<Dali::Accessibility::Component*>( accessible_b );
243 auto states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
244 auto states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
246 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
247 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
249 DALI_TEST_EQUALS( true, DevelControl::GrabAccessibilityHighlight(controla), TEST_LOCATION );
251 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
252 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
254 DALI_TEST_CHECK( states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
255 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
257 DALI_TEST_EQUALS( true, DevelControl::GrabAccessibilityHighlight(controlb), TEST_LOCATION );
258 DALI_TEST_EQUALS( true, DevelControl::GrabAccessibilityHighlight(controlb), TEST_LOCATION );
260 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
261 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
263 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
264 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
266 DALI_TEST_EQUALS( false, DevelControl::ClearAccessibilityHighlight(controla), TEST_LOCATION );
268 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
269 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
271 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
272 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
274 DALI_TEST_EQUALS( true, DevelControl::ClearAccessibilityHighlight(controlb), TEST_LOCATION );
276 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
277 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
279 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
280 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
282 DALI_TEST_CHECK( TestGrabHighlight( a -> GetAddress() ) );
284 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
285 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
287 DALI_TEST_CHECK( states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
288 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
290 DALI_TEST_CHECK( TestGrabHighlight( b -> GetAddress() ) );
292 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
293 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
295 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
296 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
298 DALI_TEST_CHECK( TestClearHighlight( b -> GetAddress() ) );
300 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
301 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
303 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
304 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
307 Dali::Accessibility::TestEnableSC( false );
312 int utcDaliAccessibilityControlAttributes(void)
314 ToolkitTestApplication application;
315 auto check_box_button = Toolkit::Control::New();
320 auto attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
321 auto attributes_map = attributes.GetMap();
323 auto position = attributes_map->Find( "access_key1" );
324 DALI_TEST_CHECK( !position );
326 DevelControl::AppendAccessibilityAttribute( check_box_button, "access_key1", "access_value1" );
327 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
328 attributes_map = attributes.GetMap();
330 DALI_TEST_EQUALS( (attributes_map->Find( "access_key1" ))->Get<std::string>(), "access_value1", TEST_LOCATION );
332 DevelControl::AppendAccessibilityAttribute( check_box_button, "access_key2", "access_value2_a" );
333 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
334 attributes_map = attributes.GetMap();
336 DALI_TEST_EQUALS( (attributes_map->Find( "access_key1" ))->Get<std::string>(), "access_value1", TEST_LOCATION );
337 DALI_TEST_EQUALS( (attributes_map->Find( "access_key2" ))->Get<std::string>(), "access_value2_a", TEST_LOCATION );
339 DevelControl::AppendAccessibilityAttribute( check_box_button, "access_key2", "access_value2_b" );
340 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
341 attributes_map = attributes.GetMap();
343 DALI_TEST_EQUALS( (attributes_map->Find( "access_key2" ))->Get<std::string>(), "access_value2_b", TEST_LOCATION );
345 DevelControl::RemoveAccessibilityAttribute( check_box_button, "access_key2" );
346 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
347 attributes_map = attributes.GetMap();
349 // In case when we are removing one of attributes the property is setting for NONE type.
350 DALI_TEST_EQUALS( (attributes_map->Find( "access_key2" ))->GetType(), Property::NONE, TEST_LOCATION );
352 Dali::Accessibility::TestEnableSC( true );
354 auto ptr = Dali::Accessibility::Accessible::Get( check_box_button );
355 auto attribute_map_bridge = TestGetAttributes( ptr->GetAddress() );
357 for (auto i = 0u; i<attributes_map->Count();++i)
358 if((attributes_map->GetValue(i)).GetType() != Property::NONE )
361 DALI_TEST_EQUALS( counter, attribute_map_bridge.size(), TEST_LOCATION );
363 for (auto it : attribute_map_bridge)
364 DALI_TEST_EQUALS( (attributes_map->Find( it.first ))->Get<std::string>(), it.second, TEST_LOCATION );
366 DevelControl::ClearAccessibilityAttributes(check_box_button);
367 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
368 attributes_map = attributes.GetMap();
370 position = attributes_map->Find( "access_key1" );
371 DALI_TEST_CHECK( !position );
373 position = attributes_map->Find( "access_key2" );
374 DALI_TEST_CHECK( !position );
376 Dali::Accessibility::TestEnableSC( false );
381 int UtcDaliControlReadingInfoType(void)
383 ToolkitTestApplication application;
384 auto control = Control::New();
386 auto reading_info_type = DevelControl::GetAccessibilityReadingInfoType(control);
387 reading_info_type[Dali::Accessibility::ReadingInfoType::DESCRIPTION] = true;
388 reading_info_type[Dali::Accessibility::ReadingInfoType::STATE] = true;
389 reading_info_type[Dali::Accessibility::ReadingInfoType::NAME] = true;
390 reading_info_type[Dali::Accessibility::ReadingInfoType::ROLE] = true;
392 DevelControl::SetAccessibilityReadingInfoType(control, reading_info_type);
394 auto q = control.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
397 DALI_TEST_EQUALS( (z->Find( "reading_info_type" ))->Get<std::string>(), "name|role|description|state", TEST_LOCATION );
398 reading_info_type = DevelControl::GetAccessibilityReadingInfoType(control);
399 for ( auto i = 0u; i < 4; ++i)
400 DALI_TEST_CHECK ( reading_info_type[ static_cast< Dali::Accessibility::ReadingInfoType >( i ) ]);
405 int UtcDaliControlDoGesture(void)
407 ToolkitTestApplication application;
408 auto control = Control::New();
409 Dali::Accessibility::TestEnableSC( true );
411 auto accessible = Dali::Accessibility::Accessible::Get( control );
412 auto gesture_one = Dali::Accessibility::GestureInfo { Dali::Accessibility::Gesture::ONE_FINGER_FLICK_LEFT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 };
413 auto gesture_two = Dali::Accessibility::GestureInfo { Dali::Accessibility::Gesture::ONE_FINGER_FLICK_RIGHT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 };
415 DALI_TEST_CHECK( !accessible->DoGesture( gesture_one ) );
416 DALI_TEST_CHECK( !TestDoGesture( accessible->GetAddress(), Dali::Accessibility::Gesture::ONE_FINGER_FLICK_LEFT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 ) );
418 DevelControl::AccessibilityDoGestureSignal(control).Connect( [] ( std::pair< Dali::Accessibility::GestureInfo, bool > &gesture ) {
419 if ( gesture.first.type == Dali::Accessibility::Gesture::ONE_FINGER_FLICK_LEFT )
420 gesture.second = true;
422 gesture.second = false;
425 DALI_TEST_CHECK( accessible->DoGesture( gesture_one ) );
426 DALI_TEST_CHECK( TestDoGesture( accessible->GetAddress(), Dali::Accessibility::Gesture::ONE_FINGER_FLICK_LEFT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 ) );
428 DALI_TEST_CHECK( !accessible->DoGesture( gesture_two ) );
429 DALI_TEST_CHECK( !TestDoGesture( accessible->GetAddress(), Dali::Accessibility::Gesture::ONE_FINGER_FLICK_RIGHT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 ) );
431 Dali::Accessibility::TestEnableSC( false );
436 int UtcDaliAccessibilityRelation(void)
438 ToolkitTestApplication application;
439 Dali::Accessibility::TestEnableSC( true );
441 auto rel = Accessibility::RelationType::FLOWS_TO;
442 auto number = static_cast< size_t >( rel );
443 auto control = Control::New();
444 auto destination1 = Control::New();
445 auto destination2 = Control::New();
447 DevelControl::AppendAccessibilityRelation( control, destination1, rel );
448 auto relations = DevelControl::GetAccessibilityRelations(control);
449 DALI_TEST_CHECK( relations[ number ].size() == 1 );
451 DevelControl::AppendAccessibilityRelation( control, destination2, rel );
452 relations = DevelControl::GetAccessibilityRelations(control);
453 DALI_TEST_CHECK( relations[ number ].size() == 2 );
455 auto accessible = Dali::Accessibility::Accessible::Get( control );
456 auto accessible_destination1 = Dali::Accessibility::Accessible::Get( destination1 );
457 auto accessible_destination2 = Dali::Accessibility::Accessible::Get( destination2 );
458 auto relationset = accessible->GetRelationSet();
460 DALI_TEST_CHECK( relationset[0].relationType == rel );
461 DALI_TEST_CHECK( relationset[0].targets[0] == accessible_destination1->GetAddress() || relationset[0].targets[1] == accessible_destination1->GetAddress() );
462 DALI_TEST_CHECK( relationset[0].targets[0] == accessible_destination2->GetAddress() || relationset[0].targets[1] == accessible_destination2->GetAddress() );
464 auto relationset_bridge = TestGetRelationSet( accessible -> GetAddress() );
465 DALI_TEST_CHECK( static_cast< uint32_t >( relationset[0].relationType ) == std::get<0>( relationset_bridge[0] ) );
467 DALI_TEST_CHECK( relationset[0].targets[0] == std::get<1>( relationset_bridge[0] )[0] || relationset[0].targets[1] == std::get<1>( relationset_bridge[0] )[0] );
468 DALI_TEST_CHECK( relationset[0].targets[0] == std::get<1>( relationset_bridge[0] )[1] || relationset[0].targets[1] == std::get<1>( relationset_bridge[0] )[1] );
470 DevelControl::RemoveAccessibilityRelation(control,destination2,rel);
471 relations = DevelControl::GetAccessibilityRelations(control);
472 DALI_TEST_CHECK( relations[ number ].size() == 1 );
474 DevelControl::ClearAccessibilityRelations(control);
475 relations = DevelControl::GetAccessibilityRelations(control);
476 DALI_TEST_CHECK( relations[ number ].size() == 0 );
478 Dali::Accessibility::TestEnableSC( false );
483 int UtcDaliAccessibilityParentChildren(void)
485 ToolkitTestApplication application;
486 Dali::Accessibility::TestEnableSC( true );
488 auto parent = Control::New();
489 auto child_1 = Control::New();
490 auto child_2 = Control::New();
492 auto parent_accessible = Dali::Accessibility::Accessible::Get( parent );
493 auto child_1_accessible = Dali::Accessibility::Accessible::Get( child_1 );
494 auto child_2_accessible = Dali::Accessibility::Accessible::Get( child_2 );
496 auto children = TestGetChildren( parent_accessible -> GetAddress() );
497 DALI_TEST_EQUALS( children.size(), 0, TEST_LOCATION );
501 TestGetIndexInParent( child_1_accessible -> GetAddress() );
502 DALI_ABORT("Object has parent, test abort");
504 catch(Accessibility::TestDBusWrapper::error &){}
508 TestGetChildAtIndex( parent_accessible -> GetAddress(), -1 );
509 DALI_ABORT("Positive index, test abort");
511 catch(Accessibility::TestDBusWrapper::error &){}
513 DALI_TEST_EQUALS( parent_accessible -> GetChildCount(), 0, TEST_LOCATION );
517 child_1_accessible -> GetIndexInParent();
518 DALI_ABORT("Object has parent, test abort");
520 catch (std::domain_error &){}
525 children = TestGetChildren( parent_accessible -> GetAddress() );
526 DALI_TEST_EQUALS( children.size(), 2, TEST_LOCATION );
528 DALI_TEST_EQUALS( parent_accessible -> GetAddress(), TestGetParent( child_1_accessible -> GetAddress() ), TEST_LOCATION );
529 DALI_TEST_EQUALS( child_2_accessible -> GetAddress(), TestGetChildAtIndex( parent_accessible -> GetAddress(), TestGetIndexInParent( child_2_accessible -> GetAddress() ) ), TEST_LOCATION );
531 DALI_TEST_EQUALS( parent_accessible, child_1_accessible -> GetParent(), TEST_LOCATION );
532 DALI_TEST_EQUALS( child_2_accessible, parent_accessible -> GetChildAtIndex( child_2_accessible -> GetIndexInParent() ) , TEST_LOCATION );
534 Dali::Accessibility::TestEnableSC( false );
539 int UtcDaliAccessibilityGetLayer(void)
541 ToolkitTestApplication application;
543 Dali::Accessibility::TestEnableSC( true );
545 auto control = Control::New();
546 auto accessible_obj = Dali::Accessibility::Accessible::Get( control );
547 auto accessible_component = dynamic_cast<Dali::Accessibility::Component*>(accessible_obj);
548 DALI_TEST_CHECK( accessible_component );
549 DALI_TEST_EQUALS( Dali::Accessibility::ComponentLayer::WINDOW, accessible_component -> GetLayer(), TEST_LOCATION );
550 DALI_TEST_EQUALS( Dali::Accessibility::ComponentLayer::WINDOW, TestGetLayer( accessible_component -> GetAddress() ), TEST_LOCATION );
552 Dali::Accessibility::TestEnableSC( false );
557 int UtcDaliAccessibilityGrabFocus(void)
559 ToolkitTestApplication application;
561 Dali::Accessibility::TestEnableSC( true );
563 auto controla = Control::New();
564 auto controlb = Control::New();
566 Stage::GetCurrent().Add( controla );
567 Stage::GetCurrent().Add( controlb );
569 controla.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
570 controlb.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
572 auto a = Dali::Accessibility::Accessible::Get( controla );
573 auto b = Dali::Accessibility::Accessible::Get( controlb );
575 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
576 auto b_component = dynamic_cast<Dali::Accessibility::Component*>( b );
578 auto states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a_component -> GetAddress() )};
579 auto states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b_component -> GetAddress() )};
581 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::FOCUSED ] );
582 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::FOCUSED ] );
584 DALI_TEST_CHECK( a_component -> GrabFocus() );
586 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a_component -> GetAddress() )};
587 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b_component -> GetAddress() )};
589 DALI_TEST_CHECK( states_by_bridge_a[ Dali::Accessibility::State::FOCUSED ] );
590 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::FOCUSED ] );
592 DALI_TEST_CHECK( TestGrabFocus( b_component -> GetAddress() ) );
594 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a_component -> GetAddress() )};
595 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b_component -> GetAddress() )};
597 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::FOCUSED ] );
598 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::FOCUSED ] );
600 Dali::Accessibility::TestEnableSC( false );
605 int UtcDaliAccessibilityGetExtents(void)
607 ToolkitTestApplication application;
609 Dali::Accessibility::TestEnableSC( true );
611 auto control = Control::New();
612 Stage::GetCurrent().GetRootLayer().Add( control );
614 control.SetProperty(Actor::Property::POSITION, Vector3(10, 10, 100));
615 control.SetProperty(Actor::Property::SIZE, Vector2(10, 10));
617 application.SendNotification();
618 application.Render( 1 );
620 auto a = Dali::Accessibility::Accessible::Get( control );
621 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
623 auto extents = a_component->GetExtents(Dali::Accessibility::CoordType::SCREEN);
624 DALI_TEST_EQUALS( extents.x, 5.0f, TEST_LOCATION );
625 DALI_TEST_EQUALS( extents.y, 5.0f, TEST_LOCATION );
626 DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
627 DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION );
629 auto bridge_extents = TestGetExtents( a_component -> GetAddress() );
630 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 5, TEST_LOCATION );
631 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 5, TEST_LOCATION );
632 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
633 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
635 control.SetProperty( Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT, false );
636 application.SendNotification();
637 application.Render( 1 );
639 extents = a_component->GetExtents(Dali::Accessibility::CoordType::SCREEN);
640 DALI_TEST_EQUALS( extents.x, 10.0f, TEST_LOCATION );
641 DALI_TEST_EQUALS( extents.y, 10.0f, TEST_LOCATION );
642 DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
643 DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION );
645 bridge_extents = TestGetExtents( a_component -> GetAddress() );
646 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 10, TEST_LOCATION );
647 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 10, TEST_LOCATION );
648 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
649 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
651 Dali::Accessibility::TestEnableSC( false );
656 int UtcDaliAccessibilityGetAlpha(void)
658 ToolkitTestApplication application;
660 Dali::Accessibility::TestEnableSC( true );
662 auto control = Control::New();
663 auto a = Dali::Accessibility::Accessible::Get( control );
664 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
666 DALI_TEST_EQUALS( 0.0, a_component -> GetAlpha(), TEST_LOCATION );
667 DALI_TEST_EQUALS( 0.0, TestGetAlpha( a_component -> GetAddress() ), TEST_LOCATION );
669 Dali::Accessibility::TestEnableSC( false );
674 int UtcDaliAccessibilityGetMdiZOrder(void)
676 ToolkitTestApplication application;
678 Dali::Accessibility::TestEnableSC( true );
680 auto control = Control::New();
681 auto a = Dali::Accessibility::Accessible::Get( control );
682 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
684 DALI_TEST_EQUALS( 0, static_cast< int >( a_component -> GetMdiZOrder() ), TEST_LOCATION );
685 DALI_TEST_EQUALS( 0, TestGetMdiZOrder( a_component -> GetAddress() ), TEST_LOCATION );
687 Dali::Accessibility::TestEnableSC( false );
692 int UtcDaliAccessibilityAction(void)
694 ToolkitTestApplication application;
696 Dali::Accessibility::TestEnableSC( true );
698 auto control = Control::New( );
699 auto a = Dali::Accessibility::Accessible::Get( control );
700 auto b = dynamic_cast<Dali::Accessibility::Action*>( a );
702 std::vector< std::string > actions { "activate", "accessibilityActivated", "ReadingSkipped", "ReadingCancelled", "ReadingStopped", "show", "hide" };
703 auto count = b -> GetActionCount();
705 DALI_TEST_EQUALS( count, 7, TEST_LOCATION );
707 for (auto i = 0u; i<count; ++i)
709 DALI_TEST_CHECK( Dali::Accessibility::Find( actions, b -> GetActionName( i ) ) );
710 DALI_TEST_EQUALS( b -> GetActionName( i ), b -> GetLocalizedActionName( i ), TEST_LOCATION );
711 DALI_TEST_EQUALS( b -> GetActionDescription( i ), "", TEST_LOCATION );
712 DALI_TEST_EQUALS( b -> GetActionKeyBinding( i ), "", TEST_LOCATION );
717 b ->GetActionDescription( count );
718 DALI_ABORT( "Correct index, abort" );
720 catch( std::domain_error &){}
724 b ->GetActionName( count );
725 DALI_ABORT( "Correct index, abort" );
727 catch( std::domain_error &){}
731 b ->GetLocalizedActionName( count );
732 DALI_ABORT( "Correct index, abort" );
734 catch( std::domain_error &){}
738 b ->GetActionKeyBinding( count );
739 DALI_ABORT( "Correct index, abort" );
741 catch( std::domain_error &){}
743 count = TestGetActionCount(b -> GetAddress());
745 DALI_TEST_EQUALS( count, 7, TEST_LOCATION );
747 for (auto i = 0u; i<count; ++i)
749 DALI_TEST_CHECK( Dali::Accessibility::Find( actions, TestGetActionName( b->GetAddress(), i ) ) );
750 DALI_TEST_EQUALS( TestGetActionName( b->GetAddress(), i ), TestGetLocalizedActionName( b->GetAddress(), i ), TEST_LOCATION );
751 DALI_TEST_EQUALS( TestGetActionDescription( b->GetAddress(), i ), "", TEST_LOCATION );
752 DALI_TEST_EQUALS( TestGetActionKeyBinding( b->GetAddress(), i ), "", TEST_LOCATION );
757 TestGetActionDescription( b->GetAddress(), count );
758 DALI_ABORT( "Correct index, abort" );
760 catch( Dali::Accessibility::TestDBusWrapper::error ){}
764 TestGetActionName( b->GetAddress(), count );
765 DALI_ABORT( "Correct index, abort" );
767 catch( Dali::Accessibility::TestDBusWrapper::error ){}
771 TestGetLocalizedActionName( b->GetAddress(), count );
772 DALI_ABORT( "Correct index, abort" );
774 catch( Dali::Accessibility::TestDBusWrapper::error ){}
778 TestGetActionKeyBinding( b->GetAddress(), count );
779 DALI_ABORT( "Correct index, abort" );
781 catch( Dali::Accessibility::TestDBusWrapper::error ){}
784 Dali::Accessibility::TestEnableSC( false );
789 int UtcDaliAccessibilityDoAction(void)
791 ToolkitTestApplication application;
793 Dali::Accessibility::TestEnableSC( true );
794 thread_local std::vector< bool > actions_done { false, false, false, false };
796 auto control = Control::New( );
797 auto a = Dali::Accessibility::Accessible::Get( control );
798 auto b = dynamic_cast<Dali::Accessibility::Action*>( a );
799 std::vector< std::string > actions { "activate", "accessibilityActivated", "ReadingSkipped", "ReadingCancelled", "ReadingStopped", "show", "hide" };
801 DALI_TEST_CHECK( b -> DoAction( actions[2] ) );
802 DALI_TEST_CHECK( b -> DoAction( actions[4] ) );
803 DALI_TEST_CHECK( b -> DoAction( actions[4] ) );
805 DevelControl::AccessibilityReadingSkippedSignal(control).Connect( [] () {
806 actions_done[ 1 ] = true;
808 DevelControl::AccessibilityReadingCancelledSignal(control).Connect( [] () {
809 actions_done[ 2 ] = true;
811 DevelControl::AccessibilityReadingStoppedSignal(control).Connect( [] () {
812 actions_done[ 3 ] = true;
814 DevelControl::AccessibilityActivateSignal(control).Connect( [] () {
815 actions_done[ 0 ] = true;
818 DALI_TEST_CHECK( b -> DoAction( 1 ) );
819 DALI_TEST_CHECK( b -> DoAction( 2 ) );
820 DALI_TEST_CHECK( b -> DoAction( 3 ) );
821 DALI_TEST_CHECK( b -> DoAction( 4 ) );
823 for ( auto i = 0u; i < actions_done.size(); ++i )
825 DALI_TEST_CHECK( actions_done[ i ] );
826 actions_done[ i ] = false;
829 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 1 ) );
830 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 2 ) );
831 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 3 ) );
832 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 4 ) );
834 for ( auto i = 0u; i < actions_done.size(); ++i )
836 DALI_TEST_CHECK( actions_done[ i ] );
837 actions_done[ i ] = false;
840 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 1 ] ) );
841 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 2 ] ) );
842 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 3 ] ) );
843 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 4 ] ) );
845 for ( auto i = 0u; i < actions_done.size(); ++i )
846 DALI_TEST_CHECK( actions_done[ i ] );
848 Dali::Accessibility::TestEnableSC( false );