1 #include <dali-toolkit-test-suite-utils.h>
2 #include <automated-tests/src/dali-toolkit-accessibility/dali-toolkit-accessibility-test-utils.h>
3 #include <dali-toolkit/dali-toolkit.h>
4 #include <dali/devel-api/adaptor-framework/accessibility.h>
5 #include <dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h>
6 #include <dali/devel-api/actors/actor-devel.h>
9 using namespace Dali::Toolkit;
11 using DBusWrapper = Dali::Accessibility::DBusWrapper;
13 void utc_dali_accessibility_controls_bridge_up_startup(void)
15 test_return_value = TET_UNDEF;
18 void utc_dali_accessibility_controls_bridge_up_cleanup(void)
20 test_return_value = TET_PASS;
21 //DBusWrapper::Install({}) is a de-install
22 DBusWrapper::Install({});
26 namespace Accessibility {
27 std::ostream & operator<< (std::ostream & stream, const Address & address)
29 stream << address.ToString();
35 int UtcDaliControlAccessibilityRaiseBridge(void)
37 ToolkitTestApplication application;
39 DALI_TEST_CHECK(!Accessibility::IsUp());
41 Dali::Accessibility::TestEnableSC(true);
43 DALI_TEST_CHECK(Accessibility::IsUp());
45 // auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
46 // for(auto &a : wr->daliMethods) {
48 // if (std::get<3>(a.first) == MethodType::Method) mt = "MethodType::Method";
49 // else if (std::get<3>(a.first) == MethodType::Getter) mt = "MethodType::Getter";
50 // else if (std::get<3>(a.first) == MethodType::Setter) mt = "MethodType::Setter";
52 // 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);
55 Dali::Accessibility::TestEnableSC(false);
57 DALI_TEST_CHECK(!Accessibility::IsUp());
62 int UtcDaliControlAccessibilityName(void)
64 ToolkitTestApplication application;
66 auto control = Control::New();
67 Stage::GetCurrent().Add( control );
69 auto q = Dali::Accessibility::Accessible::Get( control );
72 DALI_TEST_EQUALS( "" , q->GetName(), TEST_LOCATION );
74 control.SetProperty( DevelControl::Property::ACCESSIBILITY_NAME, "Accessibility_Name" );
75 DALI_TEST_EQUALS( "Accessibility_Name" , q->GetName(), TEST_LOCATION );
76 DALI_TEST_EQUALS( control.GetProperty( DevelControl::Property::ACCESSIBILITY_NAME ).Get< std::string >() , "Accessibility_Name", TEST_LOCATION );
78 control.AccessibilityGetNameSignal().Connect( [] (std::string &accessibility_name) {
79 accessibility_name = "Accessibility_Name_With_Callback"; } );
81 DALI_TEST_EQUALS( "Accessibility_Name_With_Callback" , q->GetName(), TEST_LOCATION );
83 Dali::Accessibility::TestEnableSC(true);
85 DALI_TEST_EQUALS( "Accessibility_Name_With_Callback" , TestGetName( q->GetAddress()), TEST_LOCATION );
87 Dali::Accessibility::TestEnableSC( false );
92 int UtcDaliControlAccessibilityDescription(void)
94 ToolkitTestApplication application;
96 auto control = Control::New();
98 auto q = Dali::Accessibility::Accessible::Get( control );
101 DALI_TEST_EQUALS( "" , q->GetDescription(), TEST_LOCATION );
103 control.SetProperty( Control::Property::ACCESSIBILITY_DESCRIPTION, "Accessibility_Description" );
104 DALI_TEST_EQUALS( "Accessibility_Description" , q->GetDescription(), TEST_LOCATION );
106 auto property = control.GetProperty( Control::Property::ACCESSIBILITY_DESCRIPTION ).Get<std::string>();
107 DALI_TEST_EQUALS( "Accessibility_Description", property, TEST_LOCATION );
109 control.AccessibilityGetDescriptionSignal().Connect( [] (std::string &accessibility_description) {
110 accessibility_description = "Accessibility_Description_With_Callback"; } );
112 DALI_TEST_EQUALS( "Accessibility_Description_With_Callback" , q->GetDescription(), TEST_LOCATION );
114 Dali::Accessibility::TestEnableSC( true );
116 DALI_TEST_EQUALS( "Accessibility_Description_With_Callback" , TestGetDescription( q->GetAddress()), TEST_LOCATION );
118 Dali::Accessibility::TestEnableSC( false );
123 int UtcDaliControlAccessibilityRole(void)
125 ToolkitTestApplication application;
127 auto control = Control::New();
128 auto role_unknown = Dali::Accessibility::Role::UNKNOWN;
129 auto role_pushbutton = Dali::Accessibility::Role::PUSH_BUTTON;
131 DALI_TEST_EQUALS( role_unknown,control.GetProperty( Control::Property::ACCESSIBILITY_ROLE ).Get< Dali::Accessibility::Role >(), TEST_LOCATION );
133 auto q = Dali::Accessibility::Accessible::Get( control );
134 DALI_TEST_EQUALS( role_unknown , q->GetRole(), TEST_LOCATION);
135 DALI_TEST_EQUALS( "unknown" , q->GetRoleName(), TEST_LOCATION );
137 Dali::Accessibility::TestEnableSC( true );
138 DALI_TEST_CHECK( q );
139 DALI_TEST_EQUALS( static_cast< uint32_t >( role_unknown ), TestGetRole( q->GetAddress() ), TEST_LOCATION );
140 DALI_TEST_EQUALS( "unknown" , TestGetRoleName( q->GetAddress() ), TEST_LOCATION );
141 DALI_TEST_EQUALS( "unknown" , TestGetLocalizedRoleName( q->GetAddress() ), TEST_LOCATION );
143 control.SetProperty( Control::Property::ACCESSIBILITY_ROLE, role_pushbutton );
145 DALI_TEST_EQUALS( static_cast< uint32_t >( role_pushbutton ), TestGetRole( q->GetAddress() ), TEST_LOCATION );
146 DALI_TEST_EQUALS( "push button" ,TestGetRoleName( q->GetAddress() ), TEST_LOCATION );
147 DALI_TEST_EQUALS( "push button" , TestGetLocalizedRoleName( q->GetAddress() ), TEST_LOCATION );
149 Dali::Accessibility::TestEnableSC( false );
151 DALI_TEST_EQUALS( role_pushbutton , q->GetRole(), TEST_LOCATION);
152 DALI_TEST_EQUALS( "push button" , q->GetRoleName(), TEST_LOCATION );
157 int UtcDaliControlAccessibilityState(void)
159 ToolkitTestApplication application;
161 auto control = Control::New();
162 auto q = Dali::Accessibility::Accessible::Get( control );
164 Dali::Accessibility::TestEnableSC( true );
166 auto states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
167 auto states = control.GetAccessibilityStates();
168 DALI_TEST_CHECK( states_by_bridge == states );
170 Dali::Accessibility::TestEnableSC( false );
175 int UtcDaliControlAccessibilityModal(void)
177 ToolkitTestApplication application;
178 auto control = TextSelectionPopup::New( NULL );
179 auto states = control.GetAccessibilityStates();
181 DALI_TEST_CHECK( states[ Dali::Accessibility::State::MODAL ] );
186 int UtcDaliControlAccessibilityHighlightable(void)
188 ToolkitTestApplication application;
189 auto control = Control::New();
191 auto noneset = control.GetProperty( Control::Property::ACCESSIBILITY_HIGHLIGHTABLE );
192 DALI_TEST_EQUALS( Property::NONE, noneset.GetType(), TEST_LOCATION );
194 auto q = Dali::Accessibility::Accessible::Get( control );
196 Dali::Accessibility::TestEnableSC( true );
198 auto states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
199 DALI_TEST_CHECK( states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
201 control.SetProperty( Control::Property::ACCESSIBILITY_HIGHLIGHTABLE, true );
202 DALI_TEST_EQUALS( Property::BOOLEAN, control.GetProperty( Control::Property::ACCESSIBILITY_HIGHLIGHTABLE ).GetType(), TEST_LOCATION );
203 DALI_TEST_EQUALS( true, control.GetProperty( Control::Property::ACCESSIBILITY_HIGHLIGHTABLE ).Get< bool >(), TEST_LOCATION );
205 states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
206 DALI_TEST_CHECK( states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
208 control.SetProperty( Control::Property::ACCESSIBILITY_HIGHLIGHTABLE, false );
209 DALI_TEST_EQUALS( Property::BOOLEAN, control.GetProperty( Control::Property::ACCESSIBILITY_HIGHLIGHTABLE ).GetType(), TEST_LOCATION );
210 DALI_TEST_EQUALS( false, control.GetProperty( Control::Property::ACCESSIBILITY_HIGHLIGHTABLE ).Get< bool >(), TEST_LOCATION );
212 states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
213 DALI_TEST_CHECK( !states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
215 Dali::Accessibility::TestEnableSC( false );
220 int UtcDaliControlAccessibilityHighlightBridgeUp(void)
222 ToolkitTestApplication application;
224 auto controla = Control::New();
225 auto controlb = Control::New();
227 Dali::Accessibility::TestEnableSC( true );
229 auto accessible_a = Dali::Accessibility::Accessible::Get( controla );
230 auto accessible_b = Dali::Accessibility::Accessible::Get( controlb );
232 auto a = dynamic_cast<Dali::Accessibility::Component*>( accessible_a );
233 auto b = dynamic_cast<Dali::Accessibility::Component*>( accessible_b );
235 auto states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
236 auto states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
238 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
239 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
241 DALI_TEST_EQUALS( true, controla.GrabAccessibilityHighlight(), TEST_LOCATION );
243 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
244 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, controlb.GrabAccessibilityHighlight(), TEST_LOCATION );
250 DALI_TEST_EQUALS( true, controlb.GrabAccessibilityHighlight(), TEST_LOCATION );
252 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
253 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
255 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
256 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
258 DALI_TEST_EQUALS( false, controla.ClearAccessibilityHighlight(), 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( true, controlb.ClearAccessibilityHighlight(), 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_CHECK( TestGrabHighlight( a -> GetAddress() ) );
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( b -> 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( TestClearHighlight( 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 ] );
299 Dali::Accessibility::TestEnableSC( false );
304 int utcDaliAccessibilityControlAttributes(void)
306 ToolkitTestApplication application;
307 auto check_box_button = Toolkit::Control::New();
312 auto attributes = check_box_button.GetProperty( Toolkit::Control::Property::ACCESSIBILITY_ATTRIBUTES );
313 auto attributes_map = attributes.GetMap();
315 auto position = attributes_map->Find( "access_key1" );
316 DALI_TEST_CHECK( !position );
318 check_box_button.AppendAccessibilityAttribute( "access_key1", "access_value1" );
319 attributes = check_box_button.GetProperty( Toolkit::Control::Property::ACCESSIBILITY_ATTRIBUTES );
320 attributes_map = attributes.GetMap();
322 DALI_TEST_EQUALS( (attributes_map->Find( "access_key1" ))->Get<std::string>(), "access_value1", TEST_LOCATION );
324 check_box_button.AppendAccessibilityAttribute( "access_key2", "access_value2_a" );
325 attributes = check_box_button.GetProperty( Toolkit::Control::Property::ACCESSIBILITY_ATTRIBUTES );
326 attributes_map = attributes.GetMap();
328 DALI_TEST_EQUALS( (attributes_map->Find( "access_key1" ))->Get<std::string>(), "access_value1", TEST_LOCATION );
329 DALI_TEST_EQUALS( (attributes_map->Find( "access_key2" ))->Get<std::string>(), "access_value2_a", TEST_LOCATION );
331 check_box_button.AppendAccessibilityAttribute( "access_key2", "access_value2_b" );
332 attributes = check_box_button.GetProperty( Toolkit::Control::Property::ACCESSIBILITY_ATTRIBUTES );
333 attributes_map = attributes.GetMap();
335 DALI_TEST_EQUALS( (attributes_map->Find( "access_key2" ))->Get<std::string>(), "access_value2_b", TEST_LOCATION );
337 check_box_button.RemoveAccessibilityAttribute( "access_key2" );
338 attributes = check_box_button.GetProperty( Toolkit::Control::Property::ACCESSIBILITY_ATTRIBUTES );
339 attributes_map = attributes.GetMap();
341 // In case when we are removing one of attributes the property is setting for NONE type.
342 DALI_TEST_EQUALS( (attributes_map->Find( "access_key2" ))->GetType(), Property::NONE, TEST_LOCATION );
344 Dali::Accessibility::TestEnableSC( true );
346 auto ptr = Dali::Accessibility::Accessible::Get( check_box_button );
347 auto attribute_map_bridge = TestGetAttributes( ptr->GetAddress() );
349 for (auto i = 0u; i<attributes_map->Count();++i)
350 if((attributes_map->GetValue(i)).GetType() != Property::NONE )
353 DALI_TEST_EQUALS( counter, attribute_map_bridge.size(), TEST_LOCATION );
355 for (auto it : attribute_map_bridge)
356 DALI_TEST_EQUALS( (attributes_map->Find( it.first ))->Get<std::string>(), it.second, TEST_LOCATION );
358 check_box_button.ClearAccessibilityAttributes();
359 attributes = check_box_button.GetProperty( Toolkit::Control::Property::ACCESSIBILITY_ATTRIBUTES );
360 attributes_map = attributes.GetMap();
362 position = attributes_map->Find( "access_key1" );
363 DALI_TEST_CHECK( !position );
365 position = attributes_map->Find( "access_key2" );
366 DALI_TEST_CHECK( !position );
368 Dali::Accessibility::TestEnableSC( false );
373 int UtcDaliControlReadingInfoType(void)
375 ToolkitTestApplication application;
376 auto control = Control::New();
378 auto reading_info_type = control.GetAccessibilityReadingInfoType();
379 reading_info_type[Dali::Accessibility::ReadingInfoType::Description] = true;
380 reading_info_type[Dali::Accessibility::ReadingInfoType::State] = true;
381 reading_info_type[Dali::Accessibility::ReadingInfoType::Name] = true;
382 reading_info_type[Dali::Accessibility::ReadingInfoType::Role] = true;
384 control.SetAccessibilityReadingInfoType(reading_info_type);
386 auto q = control.GetProperty( Toolkit::Control::Property::ACCESSIBILITY_ATTRIBUTES );
389 DALI_TEST_EQUALS( (z->Find( "reading_info_type" ))->Get<std::string>(), "name|role|description|state", TEST_LOCATION );
390 reading_info_type = control.GetAccessibilityReadingInfoType();
391 for ( auto i = 0u; i < 4; ++i)
392 DALI_TEST_CHECK ( reading_info_type[ static_cast< Dali::Accessibility::ReadingInfoType >( i ) ]);
397 int UtcDaliControlDoGesture(void)
399 ToolkitTestApplication application;
400 auto control = Control::New();
401 Dali::Accessibility::TestEnableSC( true );
403 auto accessible = Dali::Accessibility::Accessible::Get( control );
404 auto gesture_one = Dali::Accessibility::GestureInfo { Dali::Accessibility::Gesture::OneFingerFlickLeft, 600, 100, 500, 500, Dali::Accessibility::GestureState::Begin, 1000 };
405 auto gesture_two = Dali::Accessibility::GestureInfo { Dali::Accessibility::Gesture::OneFingerFlickRight, 600, 100, 500, 500, Dali::Accessibility::GestureState::Begin, 1000 };
407 DALI_TEST_CHECK( !accessible->DoGesture( gesture_one ) );
408 DALI_TEST_CHECK( !TestDoGesture( accessible->GetAddress(), Dali::Accessibility::Gesture::OneFingerFlickLeft, 600, 100, 500, 500, Dali::Accessibility::GestureState::Begin, 1000 ) );
410 control.AccessibilityDoGestureSignal().Connect( [] ( std::pair< Dali::Accessibility::GestureInfo, bool > &gesture ) {
411 if ( gesture.first.type == Dali::Accessibility::Gesture::OneFingerFlickLeft )
412 gesture.second = true;
414 gesture.second = false;
417 DALI_TEST_CHECK( accessible->DoGesture( gesture_one ) );
418 DALI_TEST_CHECK( TestDoGesture( accessible->GetAddress(), Dali::Accessibility::Gesture::OneFingerFlickLeft, 600, 100, 500, 500, Dali::Accessibility::GestureState::Begin, 1000 ) );
420 DALI_TEST_CHECK( !accessible->DoGesture( gesture_two ) );
421 DALI_TEST_CHECK( !TestDoGesture( accessible->GetAddress(), Dali::Accessibility::Gesture::OneFingerFlickRight, 600, 100, 500, 500, Dali::Accessibility::GestureState::Begin, 1000 ) );
423 Dali::Accessibility::TestEnableSC( false );
428 int UtcDaliAccessibilityRelation(void)
430 ToolkitTestApplication application;
431 Dali::Accessibility::TestEnableSC( true );
433 auto rel = Accessibility::RelationType::FlowsTo;
434 auto number = static_cast< size_t >( rel );
435 auto control = Control::New();
436 auto destination1 = Control::New();
437 auto destination2 = Control::New();
439 control.AppendAccessibilityRelation( destination1, rel );
440 auto relations = control.GetAccessibilityRelations();
441 DALI_TEST_CHECK( relations[ number ].size() == 1 );
443 control.AppendAccessibilityRelation( destination2, rel );
444 relations = control.GetAccessibilityRelations();
445 DALI_TEST_CHECK( relations[ number ].size() == 2 );
447 auto accessible = Dali::Accessibility::Accessible::Get( control );
448 auto accessible_destination1 = Dali::Accessibility::Accessible::Get( destination1 );
449 auto accessible_destination2 = Dali::Accessibility::Accessible::Get( destination2 );
450 auto relationset = accessible->GetRelationSet();
452 DALI_TEST_CHECK( relationset[0].relationType == rel );
453 DALI_TEST_CHECK( relationset[0].targets[0] == accessible_destination1->GetAddress() || relationset[0].targets[1] == accessible_destination1->GetAddress() );
454 DALI_TEST_CHECK( relationset[0].targets[0] == accessible_destination2->GetAddress() || relationset[0].targets[1] == accessible_destination2->GetAddress() );
456 auto relationset_bridge = TestGetRelationSet( accessible -> GetAddress() );
457 DALI_TEST_CHECK( static_cast< uint32_t >( relationset[0].relationType ) == std::get<0>( relationset_bridge[0] ) );
459 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] );
460 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] );
462 control.RemoveAccessibilityRelation(destination2,rel);
463 relations = control.GetAccessibilityRelations();
464 DALI_TEST_CHECK( relations[ number ].size() == 1 );
466 control.ClearAccessibilityRelations();
467 relations = control.GetAccessibilityRelations();
468 DALI_TEST_CHECK( relations[ number ].size() == 0 );
470 Dali::Accessibility::TestEnableSC( false );
475 int UtcDaliAccessibilityParentChildren(void)
477 ToolkitTestApplication application;
478 Dali::Accessibility::TestEnableSC( true );
480 auto parent = Control::New();
481 auto child_1 = Control::New();
482 auto child_2 = Control::New();
484 auto parent_accessible = Dali::Accessibility::Accessible::Get( parent );
485 auto child_1_accessible = Dali::Accessibility::Accessible::Get( child_1 );
486 auto child_2_accessible = Dali::Accessibility::Accessible::Get( child_2 );
488 auto children = TestGetChildren( parent_accessible -> GetAddress() );
489 DALI_TEST_EQUALS( children.size(), 0, TEST_LOCATION );
493 TestGetIndexInParent( child_1_accessible -> GetAddress() );
494 DALI_ABORT("Object has parent, test abort");
496 catch(Accessibility::TestDBusWrapper::error){}
500 TestGetChildAtIndex( parent_accessible -> GetAddress(), -1 );
501 DALI_ABORT("Positive index, test abort");
503 catch(Accessibility::TestDBusWrapper::error){}
505 DALI_TEST_EQUALS( parent_accessible -> GetChildCount(), 0, TEST_LOCATION );
509 child_1_accessible -> GetIndexInParent();
510 DALI_ABORT("Object has parent, test abort");
512 catch (std::domain_error){}
517 children = TestGetChildren( parent_accessible -> GetAddress() );
518 DALI_TEST_EQUALS( children.size(), 2, TEST_LOCATION );
520 DALI_TEST_EQUALS( parent_accessible -> GetAddress(), TestGetParent( child_1_accessible -> GetAddress() ), TEST_LOCATION );
521 DALI_TEST_EQUALS( child_2_accessible -> GetAddress(), TestGetChildAtIndex( parent_accessible -> GetAddress(), TestGetIndexInParent( child_2_accessible -> GetAddress() ) ), TEST_LOCATION );
523 DALI_TEST_EQUALS( parent_accessible, child_1_accessible -> GetParent(), TEST_LOCATION );
524 DALI_TEST_EQUALS( child_2_accessible, parent_accessible -> GetChildAtIndex( child_2_accessible -> GetIndexInParent() ) , TEST_LOCATION );
526 Dali::Accessibility::TestEnableSC( false );
531 int UtcDaliAccessibilityGetLayer(void)
533 ToolkitTestApplication application;
535 Dali::Accessibility::TestEnableSC( true );
537 auto control = Control::New();
538 auto accessible_obj = Dali::Accessibility::Accessible::Get( control );
539 auto accessible_component = dynamic_cast<Dali::Accessibility::Component*>(accessible_obj);
540 DALI_TEST_CHECK( accessible_component );
541 DALI_TEST_EQUALS( Dali::Accessibility::ComponentLayer::Window, accessible_component -> GetLayer(), TEST_LOCATION );
542 DALI_TEST_EQUALS( Dali::Accessibility::ComponentLayer::Window, TestGetLayer( accessible_component -> GetAddress() ), TEST_LOCATION );
544 Dali::Accessibility::TestEnableSC( false );
549 int UtcDaliAccessibilityGrabFocus(void)
551 ToolkitTestApplication application;
553 Dali::Accessibility::TestEnableSC( true );
555 auto controla = Control::New();
556 auto controlb = Control::New();
558 Stage::GetCurrent().Add( controla );
559 Stage::GetCurrent().Add( controlb );
561 controla.SetKeyboardFocusable( true );
562 controlb.SetKeyboardFocusable( true );
564 auto a = Dali::Accessibility::Accessible::Get( controla );
565 auto b = Dali::Accessibility::Accessible::Get( controlb );
567 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
568 auto b_component = dynamic_cast<Dali::Accessibility::Component*>( b );
570 auto states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a_component -> GetAddress() )};
571 auto states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b_component -> GetAddress() )};
573 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::FOCUSED ] );
574 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::FOCUSED ] );
576 DALI_TEST_CHECK( a_component -> GrabFocus() );
578 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a_component -> GetAddress() )};
579 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( TestGrabFocus( b_component -> GetAddress() ) );
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::Accessibility::TestEnableSC( false );
597 int UtcDaliAccessibilityGetExtents(void)
599 ToolkitTestApplication application;
601 Dali::Accessibility::TestEnableSC( true );
603 auto control = Control::New();
604 Stage::GetCurrent().GetRootLayer().Add( control );
606 control.SetPosition(Vector3(10,10,100));
607 control.SetSize( Vector2( 10, 10 ) );
609 application.SendNotification();
610 application.Render( 1 );
612 auto a = Dali::Accessibility::Accessible::Get( control );
613 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
615 auto extents = a_component->GetExtents(Dali::Accessibility::CoordType::Screen);
616 DALI_TEST_EQUALS( extents.position.x, 5, TEST_LOCATION );
617 DALI_TEST_EQUALS( extents.position.y, 5, TEST_LOCATION );
618 DALI_TEST_EQUALS( extents.size.height, 10, TEST_LOCATION );
619 DALI_TEST_EQUALS( extents.size.width, 10, TEST_LOCATION );
621 auto bridge_extents = TestGetExtents( a_component -> GetAddress() );
622 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 5, TEST_LOCATION );
623 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 5, TEST_LOCATION );
624 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
625 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
627 control.SetProperty( Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT, false );
628 application.SendNotification();
629 application.Render( 1 );
631 extents = a_component->GetExtents(Dali::Accessibility::CoordType::Screen);
632 DALI_TEST_EQUALS( extents.position.x, 10, TEST_LOCATION );
633 DALI_TEST_EQUALS( extents.position.y, 10, TEST_LOCATION );
634 DALI_TEST_EQUALS( extents.size.height, 10, TEST_LOCATION );
635 DALI_TEST_EQUALS( extents.size.width, 10, TEST_LOCATION );
637 bridge_extents = TestGetExtents( a_component -> GetAddress() );
638 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 10, TEST_LOCATION );
639 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 10, TEST_LOCATION );
640 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
641 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
643 Dali::Accessibility::TestEnableSC( false );
648 int UtcDaliAccessibilityGetAlpha(void)
650 ToolkitTestApplication application;
652 Dali::Accessibility::TestEnableSC( true );
654 auto control = Control::New();
655 auto a = Dali::Accessibility::Accessible::Get( control );
656 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
658 DALI_TEST_EQUALS( 0.0, a_component -> GetAlpha(), TEST_LOCATION );
659 DALI_TEST_EQUALS( 0.0, TestGetAlpha( a_component -> GetAddress() ), TEST_LOCATION );
661 Dali::Accessibility::TestEnableSC( false );
666 int UtcDaliAccessibilityGetMdiZOrder(void)
668 ToolkitTestApplication application;
670 Dali::Accessibility::TestEnableSC( true );
672 auto control = Control::New();
673 auto a = Dali::Accessibility::Accessible::Get( control );
674 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
676 DALI_TEST_EQUALS( 0, static_cast< int >( a_component -> GetMdiZOrder() ), TEST_LOCATION );
677 DALI_TEST_EQUALS( 0, TestGetMdiZOrder( a_component -> GetAddress() ), TEST_LOCATION );
679 Dali::Accessibility::TestEnableSC( false );
684 int UtcDaliAccessibilityAction(void)
686 ToolkitTestApplication application;
688 Dali::Accessibility::TestEnableSC( true );
690 auto control = Control::New( );
691 auto a = Dali::Accessibility::Accessible::Get( control );
692 auto b = dynamic_cast<Dali::Accessibility::Action*>( a );
694 std::vector< std::string > actions { "activate", "accessibilityActivated", "ReadingSkipped", "ReadingCancelled", "ReadingStopped", "show", "hide" };
695 auto count = b -> GetActionCount();
697 DALI_TEST_EQUALS( count, 7, TEST_LOCATION );
699 for (auto i = 0u; i<count; ++i)
701 DALI_TEST_CHECK( Dali::Accessibility::Find( actions, b -> GetActionName( i ) ) );
702 DALI_TEST_EQUALS( b -> GetActionName( i ), b -> GetLocalizedActionName( i ), TEST_LOCATION );
703 DALI_TEST_EQUALS( b -> GetActionDescription( i ), "", TEST_LOCATION );
704 DALI_TEST_EQUALS( b -> GetActionKeyBinding( i ), "", TEST_LOCATION );
709 b ->GetActionDescription( count );
710 DALI_ABORT( "Correct index, abort" );
712 catch( std::domain_error ){}
716 b ->GetActionName( count );
717 DALI_ABORT( "Correct index, abort" );
719 catch( std::domain_error ){}
723 b ->GetLocalizedActionName( count );
724 DALI_ABORT( "Correct index, abort" );
726 catch( std::domain_error ){}
730 b ->GetActionKeyBinding( count );
731 DALI_ABORT( "Correct index, abort" );
733 catch( std::domain_error ){}
735 count = TestGetActionCount(b -> GetAddress());
737 DALI_TEST_EQUALS( count, 7, TEST_LOCATION );
739 for (auto i = 0u; i<count; ++i)
741 DALI_TEST_CHECK( Dali::Accessibility::Find( actions, TestGetActionName( b->GetAddress(), i ) ) );
742 DALI_TEST_EQUALS( TestGetActionName( b->GetAddress(), i ), TestGetLocalizedActionName( b->GetAddress(), i ), TEST_LOCATION );
743 DALI_TEST_EQUALS( TestGetActionDescription( b->GetAddress(), i ), "", TEST_LOCATION );
744 DALI_TEST_EQUALS( TestGetActionKeyBinding( b->GetAddress(), i ), "", TEST_LOCATION );
749 TestGetActionDescription( b->GetAddress(), count );
750 DALI_ABORT( "Correct index, abort" );
752 catch( Dali::Accessibility::TestDBusWrapper::error ){}
756 TestGetActionName( b->GetAddress(), count );
757 DALI_ABORT( "Correct index, abort" );
759 catch( Dali::Accessibility::TestDBusWrapper::error ){}
763 TestGetLocalizedActionName( b->GetAddress(), count );
764 DALI_ABORT( "Correct index, abort" );
766 catch( Dali::Accessibility::TestDBusWrapper::error ){}
770 TestGetActionKeyBinding( b->GetAddress(), count );
771 DALI_ABORT( "Correct index, abort" );
773 catch( Dali::Accessibility::TestDBusWrapper::error ){}
776 Dali::Accessibility::TestEnableSC( false );
781 int UtcDaliAccessibilityDoAction(void)
783 ToolkitTestApplication application;
785 Dali::Accessibility::TestEnableSC( true );
786 thread_local std::vector< bool > actions_done { false, false, false, false };
788 auto control = Control::New( );
789 auto a = Dali::Accessibility::Accessible::Get( control );
790 auto b = dynamic_cast<Dali::Accessibility::Action*>( a );
791 std::vector< std::string > actions { "activate", "accessibilityActivated", "ReadingSkipped", "ReadingCancelled", "ReadingStopped", "show", "hide" };
793 DALI_TEST_CHECK( b -> DoAction( actions[2] ) );
794 DALI_TEST_CHECK( b -> DoAction( actions[4] ) );
795 DALI_TEST_CHECK( b -> DoAction( actions[4] ) );
797 control.AccessibilityReadingSkippedSignal().Connect( [] () {
798 actions_done[ 1 ] = true;
800 control.AccessibilityReadingCancelledSignal().Connect( [] () {
801 actions_done[ 2 ] = true;
803 control.AccessibilityReadingStoppedSignal().Connect( [] () {
804 actions_done[ 3 ] = true;
806 control.AccessibilityActivateSignal().Connect( [] () {
807 actions_done[ 0 ] = true;
810 DALI_TEST_CHECK( b -> DoAction( 1 ) );
811 DALI_TEST_CHECK( b -> DoAction( 2 ) );
812 DALI_TEST_CHECK( b -> DoAction( 3 ) );
813 DALI_TEST_CHECK( b -> DoAction( 4 ) );
815 for ( auto i = 0u; i < actions_done.size(); ++i )
817 DALI_TEST_CHECK( actions_done[ i ] );
818 actions_done[ i ] = false;
821 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 1 ) );
822 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 2 ) );
823 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 3 ) );
824 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 4 ) );
826 for ( auto i = 0u; i < actions_done.size(); ++i )
828 DALI_TEST_CHECK( actions_done[ i ] );
829 actions_done[ i ] = false;
832 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 1 ] ) );
833 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 2 ] ) );
834 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 3 ] ) );
835 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 4 ] ) );
837 for ( auto i = 0u; i < actions_done.size(); ++i )
838 DALI_TEST_CHECK( actions_done[ i ] );
840 Dali::Accessibility::TestEnableSC( false );