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 using namespace Dali::Toolkit;
14 //using DBusWrapper = Dali::Accessibility::DBusWrapper; // FIXME
16 namespace Dali::Accessibility::TestDBusWrapper { struct error {}; } // FIXME
18 void utc_dali_accessibility_controls_bridge_up_startup(void)
20 test_return_value = TET_UNDEF;
23 void utc_dali_accessibility_controls_bridge_up_cleanup(void)
25 test_return_value = TET_PASS;
26 //DBusWrapper::Install({}) is a de-install
27 //DBusWrapper::Install({}); // FIXME
31 namespace Accessibility {
32 std::ostream & operator<< (std::ostream & stream, const Address & address)
34 stream << address.ToString();
40 int UtcDaliControlAccessibilityRaiseBridge(void)
42 ToolkitTestApplication application;
44 DALI_TEST_CHECK(!Accessibility::IsUp());
46 Dali::Accessibility::TestEnableSC(true);
48 DALI_TEST_CHECK(Accessibility::IsUp());
50 // auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
51 // for(auto &a : wr->daliMethods) {
53 // if (std::get<3>(a.first) == MethodType::Method) mt = "MethodType::Method";
54 // else if (std::get<3>(a.first) == MethodType::Getter) mt = "MethodType::Getter";
55 // else if (std::get<3>(a.first) == MethodType::Setter) mt = "MethodType::Setter";
57 // 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);
60 Dali::Accessibility::TestEnableSC(false);
62 DALI_TEST_CHECK(!Accessibility::IsUp());
67 int UtcDaliControlAccessibilityName(void)
69 ToolkitTestApplication application;
71 auto control = Control::New();
72 Stage::GetCurrent().Add( control );
74 auto q = Dali::Accessibility::Accessible::Get( control );
77 DALI_TEST_EQUALS( "" , q->GetName(), TEST_LOCATION );
79 control.SetProperty( DevelControl::Property::ACCESSIBILITY_NAME, "Accessibility_Name" );
80 DALI_TEST_EQUALS( "Accessibility_Name" , q->GetName(), TEST_LOCATION );
81 DALI_TEST_EQUALS( control.GetProperty( DevelControl::Property::ACCESSIBILITY_NAME ).Get< std::string >() , "Accessibility_Name", TEST_LOCATION );
83 DevelControl::AccessibilityGetNameSignal(control).Connect( [] (std::string &accessibility_name) {
84 accessibility_name = "Accessibility_Name_With_Callback"; } );
86 DALI_TEST_EQUALS( "Accessibility_Name_With_Callback" , q->GetName(), TEST_LOCATION );
88 Dali::Accessibility::TestEnableSC(true);
90 DALI_TEST_EQUALS( "Accessibility_Name_With_Callback" , TestGetName( q->GetAddress()), TEST_LOCATION );
92 Dali::Accessibility::TestEnableSC( false );
97 int UtcDaliControlAccessibilityDescription(void)
99 ToolkitTestApplication application;
101 auto control = Control::New();
103 auto q = Dali::Accessibility::Accessible::Get( control );
104 DALI_TEST_CHECK( q );
106 DALI_TEST_EQUALS( "" , q->GetDescription(), TEST_LOCATION );
108 control.SetProperty( DevelControl::Property::ACCESSIBILITY_DESCRIPTION, "Accessibility_Description" );
109 DALI_TEST_EQUALS( "Accessibility_Description" , q->GetDescription(), TEST_LOCATION );
111 auto property = control.GetProperty( DevelControl::Property::ACCESSIBILITY_DESCRIPTION ).Get<std::string>();
112 DALI_TEST_EQUALS( "Accessibility_Description", property, TEST_LOCATION );
114 DevelControl::AccessibilityGetDescriptionSignal(control).Connect( [] (std::string &accessibility_description) {
115 accessibility_description = "Accessibility_Description_With_Callback"; } );
117 DALI_TEST_EQUALS( "Accessibility_Description_With_Callback" , q->GetDescription(), TEST_LOCATION );
119 Dali::Accessibility::TestEnableSC( true );
121 DALI_TEST_EQUALS( "Accessibility_Description_With_Callback" , TestGetDescription( q->GetAddress()), TEST_LOCATION );
123 Dali::Accessibility::TestEnableSC( false );
128 int UtcDaliControlAccessibilityRole(void)
130 ToolkitTestApplication application;
132 auto control = Control::New();
133 auto role_unknown = Dali::Accessibility::Role::UNKNOWN;
134 auto role_pushbutton = Dali::Accessibility::Role::PUSH_BUTTON;
136 DALI_TEST_EQUALS( role_unknown,control.GetProperty( DevelControl::Property::ACCESSIBILITY_ROLE ).Get< Dali::Accessibility::Role >(), TEST_LOCATION );
138 auto q = Dali::Accessibility::Accessible::Get( control );
139 DALI_TEST_EQUALS( role_unknown , q->GetRole(), TEST_LOCATION);
140 DALI_TEST_EQUALS( "unknown" , q->GetRoleName(), TEST_LOCATION );
142 Dali::Accessibility::TestEnableSC( true );
143 DALI_TEST_CHECK( q );
144 DALI_TEST_EQUALS( static_cast< uint32_t >( role_unknown ), TestGetRole( q->GetAddress() ), TEST_LOCATION );
145 DALI_TEST_EQUALS( "unknown" , TestGetRoleName( q->GetAddress() ), TEST_LOCATION );
146 DALI_TEST_EQUALS( "unknown" , TestGetLocalizedRoleName( q->GetAddress() ), TEST_LOCATION );
148 control.SetProperty( DevelControl::Property::ACCESSIBILITY_ROLE, role_pushbutton );
150 DALI_TEST_EQUALS( static_cast< uint32_t >( role_pushbutton ), TestGetRole( q->GetAddress() ), TEST_LOCATION );
151 DALI_TEST_EQUALS( "push button" ,TestGetRoleName( q->GetAddress() ), TEST_LOCATION );
152 DALI_TEST_EQUALS( "push button" , TestGetLocalizedRoleName( q->GetAddress() ), TEST_LOCATION );
154 Dali::Accessibility::TestEnableSC( false );
156 DALI_TEST_EQUALS( role_pushbutton , q->GetRole(), TEST_LOCATION);
157 DALI_TEST_EQUALS( "push button" , q->GetRoleName(), TEST_LOCATION );
162 int UtcDaliControlAccessibilityState(void)
164 ToolkitTestApplication application;
166 auto control = Control::New();
167 auto q = Dali::Accessibility::Accessible::Get( control );
169 Dali::Accessibility::TestEnableSC( true );
171 auto states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
172 auto states = DevelControl::GetAccessibilityStates(control);
173 DALI_TEST_CHECK( states_by_bridge == states );
175 Dali::Accessibility::TestEnableSC( false );
180 int UtcDaliControlAccessibilityModal(void)
182 ToolkitTestApplication application;
183 auto control = TextSelectionPopup::New( NULL );
184 auto states = DevelControl::GetAccessibilityStates(control);
186 DALI_TEST_CHECK( states[ Dali::Accessibility::State::MODAL ] );
191 int UtcDaliControlAccessibilityHighlightable(void)
193 ToolkitTestApplication application;
194 auto control = Control::New();
196 auto noneset = control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE );
197 DALI_TEST_EQUALS( Property::NONE, noneset.GetType(), TEST_LOCATION );
199 auto q = Dali::Accessibility::Accessible::Get( control );
201 Dali::Accessibility::TestEnableSC( true );
203 auto states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
204 DALI_TEST_CHECK( states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
206 control.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, true );
207 DALI_TEST_EQUALS( Property::BOOLEAN, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).GetType(), TEST_LOCATION );
208 DALI_TEST_EQUALS( true, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).Get< bool >(), TEST_LOCATION );
210 states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
211 DALI_TEST_CHECK( states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
213 control.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, false );
214 DALI_TEST_EQUALS( Property::BOOLEAN, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).GetType(), TEST_LOCATION );
215 DALI_TEST_EQUALS( false, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).Get< bool >(), TEST_LOCATION );
217 states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
218 DALI_TEST_CHECK( !states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
220 Dali::Accessibility::TestEnableSC( false );
225 int UtcDaliControlAccessibilityHighlightBridgeUp(void)
227 ToolkitTestApplication application;
229 auto controla = Control::New();
230 auto controlb = Control::New();
232 Dali::Accessibility::TestEnableSC( true );
234 auto accessible_a = Dali::Accessibility::Accessible::Get( controla );
235 auto accessible_b = Dali::Accessibility::Accessible::Get( controlb );
237 auto a = dynamic_cast<Dali::Accessibility::Component*>( accessible_a );
238 auto b = dynamic_cast<Dali::Accessibility::Component*>( accessible_b );
240 auto states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
241 auto states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
243 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
244 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
246 DALI_TEST_EQUALS( true, DevelControl::GrabAccessibilityHighlight(controla), TEST_LOCATION );
248 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
249 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
251 DALI_TEST_CHECK( states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
252 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
254 DALI_TEST_EQUALS( true, DevelControl::GrabAccessibilityHighlight(controlb), TEST_LOCATION );
255 DALI_TEST_EQUALS( true, DevelControl::GrabAccessibilityHighlight(controlb), TEST_LOCATION );
257 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
258 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
260 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
261 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
263 DALI_TEST_EQUALS( false, DevelControl::ClearAccessibilityHighlight(controla), TEST_LOCATION );
265 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
266 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
268 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
269 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
271 DALI_TEST_EQUALS( true, DevelControl::ClearAccessibilityHighlight(controlb), TEST_LOCATION );
273 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
274 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
276 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
277 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
279 DALI_TEST_CHECK( TestGrabHighlight( a -> GetAddress() ) );
281 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
282 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
284 DALI_TEST_CHECK( states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
285 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
287 DALI_TEST_CHECK( TestGrabHighlight( b -> GetAddress() ) );
289 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
290 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
292 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
293 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
295 DALI_TEST_CHECK( TestClearHighlight( b -> GetAddress() ) );
297 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
298 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
300 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
301 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
304 Dali::Accessibility::TestEnableSC( false );
309 int utcDaliAccessibilityControlAttributes(void)
311 ToolkitTestApplication application;
312 auto check_box_button = Toolkit::Control::New();
317 auto attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
318 auto attributes_map = attributes.GetMap();
320 auto position = attributes_map->Find( "access_key1" );
321 DALI_TEST_CHECK( !position );
323 DevelControl::AppendAccessibilityAttribute( check_box_button, "access_key1", "access_value1" );
324 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
325 attributes_map = attributes.GetMap();
327 DALI_TEST_EQUALS( (attributes_map->Find( "access_key1" ))->Get<std::string>(), "access_value1", TEST_LOCATION );
329 DevelControl::AppendAccessibilityAttribute( check_box_button, "access_key2", "access_value2_a" );
330 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
331 attributes_map = attributes.GetMap();
333 DALI_TEST_EQUALS( (attributes_map->Find( "access_key1" ))->Get<std::string>(), "access_value1", TEST_LOCATION );
334 DALI_TEST_EQUALS( (attributes_map->Find( "access_key2" ))->Get<std::string>(), "access_value2_a", TEST_LOCATION );
336 DevelControl::AppendAccessibilityAttribute( check_box_button, "access_key2", "access_value2_b" );
337 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
338 attributes_map = attributes.GetMap();
340 DALI_TEST_EQUALS( (attributes_map->Find( "access_key2" ))->Get<std::string>(), "access_value2_b", TEST_LOCATION );
342 DevelControl::RemoveAccessibilityAttribute( check_box_button, "access_key2" );
343 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
344 attributes_map = attributes.GetMap();
346 // In case when we are removing one of attributes the property is setting for NONE type.
347 DALI_TEST_EQUALS( (attributes_map->Find( "access_key2" ))->GetType(), Property::NONE, TEST_LOCATION );
349 Dali::Accessibility::TestEnableSC( true );
351 auto ptr = Dali::Accessibility::Accessible::Get( check_box_button );
352 auto attribute_map_bridge = TestGetAttributes( ptr->GetAddress() );
354 for (auto i = 0u; i<attributes_map->Count();++i)
355 if((attributes_map->GetValue(i)).GetType() != Property::NONE )
358 DALI_TEST_EQUALS( counter, attribute_map_bridge.size(), TEST_LOCATION );
360 for (auto it : attribute_map_bridge)
361 DALI_TEST_EQUALS( (attributes_map->Find( it.first ))->Get<std::string>(), it.second, TEST_LOCATION );
363 DevelControl::ClearAccessibilityAttributes(check_box_button);
364 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
365 attributes_map = attributes.GetMap();
367 position = attributes_map->Find( "access_key1" );
368 DALI_TEST_CHECK( !position );
370 position = attributes_map->Find( "access_key2" );
371 DALI_TEST_CHECK( !position );
373 Dali::Accessibility::TestEnableSC( false );
378 int UtcDaliControlReadingInfoType(void)
380 ToolkitTestApplication application;
381 auto control = Control::New();
383 auto reading_info_type = DevelControl::GetAccessibilityReadingInfoType(control);
384 reading_info_type[Dali::Accessibility::ReadingInfoType::DESCRIPTION] = true;
385 reading_info_type[Dali::Accessibility::ReadingInfoType::STATE] = true;
386 reading_info_type[Dali::Accessibility::ReadingInfoType::NAME] = true;
387 reading_info_type[Dali::Accessibility::ReadingInfoType::ROLE] = true;
389 DevelControl::SetAccessibilityReadingInfoType(control, reading_info_type);
391 auto q = control.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
394 DALI_TEST_EQUALS( (z->Find( "reading_info_type" ))->Get<std::string>(), "name|role|description|state", TEST_LOCATION );
395 reading_info_type = DevelControl::GetAccessibilityReadingInfoType(control);
396 for ( auto i = 0u; i < 4; ++i)
397 DALI_TEST_CHECK ( reading_info_type[ static_cast< Dali::Accessibility::ReadingInfoType >( i ) ]);
402 int UtcDaliControlDoGesture(void)
404 ToolkitTestApplication application;
405 auto control = Control::New();
406 Dali::Accessibility::TestEnableSC( true );
408 auto accessible = Dali::Accessibility::Accessible::Get( control );
409 auto gesture_one = Dali::Accessibility::GestureInfo { Dali::Accessibility::Gesture::ONE_FINGER_FLICK_LEFT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 };
410 auto gesture_two = Dali::Accessibility::GestureInfo { Dali::Accessibility::Gesture::ONE_FINGER_FLICK_RIGHT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 };
412 DALI_TEST_CHECK( !accessible->DoGesture( gesture_one ) );
413 DALI_TEST_CHECK( !TestDoGesture( accessible->GetAddress(), Dali::Accessibility::Gesture::ONE_FINGER_FLICK_LEFT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 ) );
415 DevelControl::AccessibilityDoGestureSignal(control).Connect( [] ( std::pair< Dali::Accessibility::GestureInfo, bool > &gesture ) {
416 if ( gesture.first.type == Dali::Accessibility::Gesture::ONE_FINGER_FLICK_LEFT )
417 gesture.second = true;
419 gesture.second = false;
422 DALI_TEST_CHECK( accessible->DoGesture( gesture_one ) );
423 DALI_TEST_CHECK( TestDoGesture( accessible->GetAddress(), Dali::Accessibility::Gesture::ONE_FINGER_FLICK_LEFT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 ) );
425 DALI_TEST_CHECK( !accessible->DoGesture( gesture_two ) );
426 DALI_TEST_CHECK( !TestDoGesture( accessible->GetAddress(), Dali::Accessibility::Gesture::ONE_FINGER_FLICK_RIGHT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 ) );
428 Dali::Accessibility::TestEnableSC( false );
433 int UtcDaliAccessibilityRelation(void)
435 ToolkitTestApplication application;
436 Dali::Accessibility::TestEnableSC( true );
438 auto rel = Accessibility::RelationType::FLOWS_TO;
439 auto number = static_cast< size_t >( rel );
440 auto control = Control::New();
441 auto destination1 = Control::New();
442 auto destination2 = Control::New();
444 DevelControl::AppendAccessibilityRelation( control, destination1, rel );
445 auto relations = DevelControl::GetAccessibilityRelations(control);
446 DALI_TEST_CHECK( relations[ number ].size() == 1 );
448 DevelControl::AppendAccessibilityRelation( control, destination2, rel );
449 relations = DevelControl::GetAccessibilityRelations(control);
450 DALI_TEST_CHECK( relations[ number ].size() == 2 );
452 auto accessible = Dali::Accessibility::Accessible::Get( control );
453 auto accessible_destination1 = Dali::Accessibility::Accessible::Get( destination1 );
454 auto accessible_destination2 = Dali::Accessibility::Accessible::Get( destination2 );
455 auto relationset = accessible->GetRelationSet();
457 DALI_TEST_CHECK( relationset[0].relationType == rel );
458 DALI_TEST_CHECK( relationset[0].targets[0] == accessible_destination1->GetAddress() || relationset[0].targets[1] == accessible_destination1->GetAddress() );
459 DALI_TEST_CHECK( relationset[0].targets[0] == accessible_destination2->GetAddress() || relationset[0].targets[1] == accessible_destination2->GetAddress() );
461 auto relationset_bridge = TestGetRelationSet( accessible -> GetAddress() );
462 DALI_TEST_CHECK( static_cast< uint32_t >( relationset[0].relationType ) == std::get<0>( relationset_bridge[0] ) );
464 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] );
465 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] );
467 DevelControl::RemoveAccessibilityRelation(control,destination2,rel);
468 relations = DevelControl::GetAccessibilityRelations(control);
469 DALI_TEST_CHECK( relations[ number ].size() == 1 );
471 DevelControl::ClearAccessibilityRelations(control);
472 relations = DevelControl::GetAccessibilityRelations(control);
473 DALI_TEST_CHECK( relations[ number ].size() == 0 );
475 Dali::Accessibility::TestEnableSC( false );
480 int UtcDaliAccessibilityParentChildren(void)
482 ToolkitTestApplication application;
483 Dali::Accessibility::TestEnableSC( true );
485 auto parent = Control::New();
486 auto child_1 = Control::New();
487 auto child_2 = Control::New();
489 auto parent_accessible = Dali::Accessibility::Accessible::Get( parent );
490 auto child_1_accessible = Dali::Accessibility::Accessible::Get( child_1 );
491 auto child_2_accessible = Dali::Accessibility::Accessible::Get( child_2 );
493 auto children = TestGetChildren( parent_accessible -> GetAddress() );
494 DALI_TEST_EQUALS( children.size(), 0, TEST_LOCATION );
498 TestGetIndexInParent( child_1_accessible -> GetAddress() );
499 DALI_ABORT("Object has parent, test abort");
501 catch(Accessibility::TestDBusWrapper::error){}
505 TestGetChildAtIndex( parent_accessible -> GetAddress(), -1 );
506 DALI_ABORT("Positive index, test abort");
508 catch(Accessibility::TestDBusWrapper::error){}
510 DALI_TEST_EQUALS( parent_accessible -> GetChildCount(), 0, TEST_LOCATION );
514 child_1_accessible -> GetIndexInParent();
515 DALI_ABORT("Object has parent, test abort");
517 catch (std::domain_error){}
522 children = TestGetChildren( parent_accessible -> GetAddress() );
523 DALI_TEST_EQUALS( children.size(), 2, TEST_LOCATION );
525 DALI_TEST_EQUALS( parent_accessible -> GetAddress(), TestGetParent( child_1_accessible -> GetAddress() ), TEST_LOCATION );
526 DALI_TEST_EQUALS( child_2_accessible -> GetAddress(), TestGetChildAtIndex( parent_accessible -> GetAddress(), TestGetIndexInParent( child_2_accessible -> GetAddress() ) ), TEST_LOCATION );
528 DALI_TEST_EQUALS( parent_accessible, child_1_accessible -> GetParent(), TEST_LOCATION );
529 DALI_TEST_EQUALS( child_2_accessible, parent_accessible -> GetChildAtIndex( child_2_accessible -> GetIndexInParent() ) , TEST_LOCATION );
531 Dali::Accessibility::TestEnableSC( false );
536 int UtcDaliAccessibilityGetLayer(void)
538 ToolkitTestApplication application;
540 Dali::Accessibility::TestEnableSC( true );
542 auto control = Control::New();
543 auto accessible_obj = Dali::Accessibility::Accessible::Get( control );
544 auto accessible_component = dynamic_cast<Dali::Accessibility::Component*>(accessible_obj);
545 DALI_TEST_CHECK( accessible_component );
546 DALI_TEST_EQUALS( Dali::Accessibility::ComponentLayer::WINDOW, accessible_component -> GetLayer(), TEST_LOCATION );
547 DALI_TEST_EQUALS( Dali::Accessibility::ComponentLayer::WINDOW, TestGetLayer( accessible_component -> GetAddress() ), TEST_LOCATION );
549 Dali::Accessibility::TestEnableSC( false );
554 int UtcDaliAccessibilityGrabFocus(void)
556 ToolkitTestApplication application;
558 Dali::Accessibility::TestEnableSC( true );
560 auto controla = Control::New();
561 auto controlb = Control::New();
563 Stage::GetCurrent().Add( controla );
564 Stage::GetCurrent().Add( controlb );
566 controla.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
567 controlb.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
569 auto a = Dali::Accessibility::Accessible::Get( controla );
570 auto b = Dali::Accessibility::Accessible::Get( controlb );
572 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
573 auto b_component = dynamic_cast<Dali::Accessibility::Component*>( b );
575 auto states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a_component -> GetAddress() )};
576 auto states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b_component -> GetAddress() )};
578 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::FOCUSED ] );
579 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::FOCUSED ] );
581 DALI_TEST_CHECK( a_component -> GrabFocus() );
583 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a_component -> GetAddress() )};
584 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b_component -> GetAddress() )};
586 DALI_TEST_CHECK( states_by_bridge_a[ Dali::Accessibility::State::FOCUSED ] );
587 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::FOCUSED ] );
589 DALI_TEST_CHECK( TestGrabFocus( b_component -> GetAddress() ) );
591 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a_component -> GetAddress() )};
592 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b_component -> GetAddress() )};
594 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::FOCUSED ] );
595 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::FOCUSED ] );
597 Dali::Accessibility::TestEnableSC( false );
602 int UtcDaliAccessibilityGetExtents(void)
604 ToolkitTestApplication application;
606 Dali::Accessibility::TestEnableSC( true );
608 auto control = Control::New();
609 Stage::GetCurrent().GetRootLayer().Add( control );
611 control.SetProperty(Actor::Property::POSITION, Vector3(10, 10, 100));
612 control.SetProperty(Actor::Property::SIZE, Vector2(10, 10));
614 application.SendNotification();
615 application.Render( 1 );
617 auto a = Dali::Accessibility::Accessible::Get( control );
618 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
620 auto extents = a_component->GetExtents(Dali::Accessibility::CoordType::SCREEN);
621 DALI_TEST_EQUALS( extents.x, 5.0f, TEST_LOCATION );
622 DALI_TEST_EQUALS( extents.y, 5.0f, TEST_LOCATION );
623 DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
624 DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION );
626 auto bridge_extents = TestGetExtents( a_component -> GetAddress() );
627 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 5, TEST_LOCATION );
628 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 5, TEST_LOCATION );
629 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
630 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
632 control.SetProperty( Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT, false );
633 application.SendNotification();
634 application.Render( 1 );
636 extents = a_component->GetExtents(Dali::Accessibility::CoordType::SCREEN);
637 DALI_TEST_EQUALS( extents.x, 10.0f, TEST_LOCATION );
638 DALI_TEST_EQUALS( extents.y, 10.0f, TEST_LOCATION );
639 DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
640 DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION );
642 bridge_extents = TestGetExtents( a_component -> GetAddress() );
643 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 10, TEST_LOCATION );
644 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 10, TEST_LOCATION );
645 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
646 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
648 Dali::Accessibility::TestEnableSC( false );
653 int UtcDaliAccessibilityGetAlpha(void)
655 ToolkitTestApplication application;
657 Dali::Accessibility::TestEnableSC( true );
659 auto control = Control::New();
660 auto a = Dali::Accessibility::Accessible::Get( control );
661 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
663 DALI_TEST_EQUALS( 0.0, a_component -> GetAlpha(), TEST_LOCATION );
664 DALI_TEST_EQUALS( 0.0, TestGetAlpha( a_component -> GetAddress() ), TEST_LOCATION );
666 Dali::Accessibility::TestEnableSC( false );
671 int UtcDaliAccessibilityGetMdiZOrder(void)
673 ToolkitTestApplication application;
675 Dali::Accessibility::TestEnableSC( true );
677 auto control = Control::New();
678 auto a = Dali::Accessibility::Accessible::Get( control );
679 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
681 DALI_TEST_EQUALS( 0, static_cast< int >( a_component -> GetMdiZOrder() ), TEST_LOCATION );
682 DALI_TEST_EQUALS( 0, TestGetMdiZOrder( a_component -> GetAddress() ), TEST_LOCATION );
684 Dali::Accessibility::TestEnableSC( false );
689 int UtcDaliAccessibilityAction(void)
691 ToolkitTestApplication application;
693 Dali::Accessibility::TestEnableSC( true );
695 auto control = Control::New( );
696 auto a = Dali::Accessibility::Accessible::Get( control );
697 auto b = dynamic_cast<Dali::Accessibility::Action*>( a );
699 std::vector< std::string > actions { "activate", "accessibilityActivated", "ReadingSkipped", "ReadingCancelled", "ReadingStopped", "show", "hide" };
700 auto count = b -> GetActionCount();
702 DALI_TEST_EQUALS( count, 7, TEST_LOCATION );
704 for (auto i = 0u; i<count; ++i)
706 DALI_TEST_CHECK( Dali::Accessibility::Find( actions, b -> GetActionName( i ) ) );
707 DALI_TEST_EQUALS( b -> GetActionName( i ), b -> GetLocalizedActionName( i ), TEST_LOCATION );
708 DALI_TEST_EQUALS( b -> GetActionDescription( i ), "", TEST_LOCATION );
709 DALI_TEST_EQUALS( b -> GetActionKeyBinding( i ), "", TEST_LOCATION );
714 b ->GetActionDescription( count );
715 DALI_ABORT( "Correct index, abort" );
717 catch( std::domain_error ){}
721 b ->GetActionName( count );
722 DALI_ABORT( "Correct index, abort" );
724 catch( std::domain_error ){}
728 b ->GetLocalizedActionName( count );
729 DALI_ABORT( "Correct index, abort" );
731 catch( std::domain_error ){}
735 b ->GetActionKeyBinding( count );
736 DALI_ABORT( "Correct index, abort" );
738 catch( std::domain_error ){}
740 count = TestGetActionCount(b -> GetAddress());
742 DALI_TEST_EQUALS( count, 7, TEST_LOCATION );
744 for (auto i = 0u; i<count; ++i)
746 DALI_TEST_CHECK( Dali::Accessibility::Find( actions, TestGetActionName( b->GetAddress(), i ) ) );
747 DALI_TEST_EQUALS( TestGetActionName( b->GetAddress(), i ), TestGetLocalizedActionName( b->GetAddress(), i ), TEST_LOCATION );
748 DALI_TEST_EQUALS( TestGetActionDescription( b->GetAddress(), i ), "", TEST_LOCATION );
749 DALI_TEST_EQUALS( TestGetActionKeyBinding( b->GetAddress(), i ), "", TEST_LOCATION );
754 TestGetActionDescription( b->GetAddress(), count );
755 DALI_ABORT( "Correct index, abort" );
757 catch( Dali::Accessibility::TestDBusWrapper::error ){}
761 TestGetActionName( b->GetAddress(), count );
762 DALI_ABORT( "Correct index, abort" );
764 catch( Dali::Accessibility::TestDBusWrapper::error ){}
768 TestGetLocalizedActionName( b->GetAddress(), count );
769 DALI_ABORT( "Correct index, abort" );
771 catch( Dali::Accessibility::TestDBusWrapper::error ){}
775 TestGetActionKeyBinding( b->GetAddress(), count );
776 DALI_ABORT( "Correct index, abort" );
778 catch( Dali::Accessibility::TestDBusWrapper::error ){}
781 Dali::Accessibility::TestEnableSC( false );
786 int UtcDaliAccessibilityDoAction(void)
788 ToolkitTestApplication application;
790 Dali::Accessibility::TestEnableSC( true );
791 thread_local std::vector< bool > actions_done { false, false, false, false };
793 auto control = Control::New( );
794 auto a = Dali::Accessibility::Accessible::Get( control );
795 auto b = dynamic_cast<Dali::Accessibility::Action*>( a );
796 std::vector< std::string > actions { "activate", "accessibilityActivated", "ReadingSkipped", "ReadingCancelled", "ReadingStopped", "show", "hide" };
798 DALI_TEST_CHECK( b -> DoAction( actions[2] ) );
799 DALI_TEST_CHECK( b -> DoAction( actions[4] ) );
800 DALI_TEST_CHECK( b -> DoAction( actions[4] ) );
802 DevelControl::AccessibilityReadingSkippedSignal(control).Connect( [] () {
803 actions_done[ 1 ] = true;
805 DevelControl::AccessibilityReadingCancelledSignal(control).Connect( [] () {
806 actions_done[ 2 ] = true;
808 DevelControl::AccessibilityReadingStoppedSignal(control).Connect( [] () {
809 actions_done[ 3 ] = true;
811 DevelControl::AccessibilityActivateSignal(control).Connect( [] () {
812 actions_done[ 0 ] = true;
815 DALI_TEST_CHECK( b -> DoAction( 1 ) );
816 DALI_TEST_CHECK( b -> DoAction( 2 ) );
817 DALI_TEST_CHECK( b -> DoAction( 3 ) );
818 DALI_TEST_CHECK( b -> DoAction( 4 ) );
820 for ( auto i = 0u; i < actions_done.size(); ++i )
822 DALI_TEST_CHECK( actions_done[ i ] );
823 actions_done[ i ] = false;
826 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 1 ) );
827 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 2 ) );
828 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 3 ) );
829 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 4 ) );
831 for ( auto i = 0u; i < actions_done.size(); ++i )
833 DALI_TEST_CHECK( actions_done[ i ] );
834 actions_done[ i ] = false;
837 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 1 ] ) );
838 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 2 ] ) );
839 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 3 ] ) );
840 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 4 ] ) );
842 for ( auto i = 0u; i < actions_done.size(); ++i )
843 DALI_TEST_CHECK( actions_done[ i ] );
845 Dali::Accessibility::TestEnableSC( false );