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 <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
4 #include <dali-toolkit/dali-toolkit.h>
5 #include <dali/devel-api/adaptor-framework/accessibility.h>
6 #include <dali/devel-api/adaptor-framework/accessibility-impl.h>
7 #include <dali/devel-api/adaptor-framework/window-devel.h>
8 #include <dali-toolkit/devel-api/controls/buttons/toggle-button.h>
9 #include <dali-toolkit/devel-api/controls/control-devel.h>
10 #include <dali-toolkit/devel-api/controls/popup/popup.h>
11 #include <dali/devel-api/actors/actor-devel.h>
12 #include <dali/devel-api/common/stage.h>
15 #include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
17 using namespace Dali::Toolkit;
19 void utc_dali_accessibility_controls_bridge_up_startup(void)
21 test_return_value = TET_UNDEF;
22 DBusWrapper::Install(std::unique_ptr<DBusWrapper>(new TestDBusWrapper));
25 void utc_dali_accessibility_controls_bridge_up_cleanup(void)
27 test_return_value = TET_PASS;
28 //DBusWrapper::Install({}) is a de-install
29 DBusWrapper::Install({});
33 namespace Accessibility {
34 std::ostream & operator<< (std::ostream & stream, const Address & address)
36 stream << address.ToString();
42 int UtcDaliControlAccessibilityRaiseBridge(void)
44 DALI_TEST_CHECK(!Accessibility::IsUp());
46 ToolkitTestApplication application;
48 Dali::Accessibility::TestEnableSC(true);
50 DALI_TEST_CHECK(Accessibility::IsUp());
52 // auto wr = static_cast<TestDBusWrapper*>(DBusWrapper::Installed());
53 // for(auto &a : wr->daliMethods) {
55 // if (std::get<3>(a.first) == MethodType::Method) mt = "MethodType::Method";
56 // else if (std::get<3>(a.first) == MethodType::Getter) mt = "MethodType::Getter";
57 // else if (std::get<3>(a.first) == MethodType::Setter) mt = "MethodType::Setter";
59 // 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);
62 Dali::Accessibility::TestEnableSC(false);
64 DALI_TEST_CHECK(!Accessibility::IsUp());
69 int UtcDaliControlAccessibilityName(void)
71 ToolkitTestApplication application;
73 auto control = Control::New();
74 Stage::GetCurrent().Add( control );
76 auto q = Dali::Accessibility::Accessible::Get( control );
79 DALI_TEST_EQUALS( "" , q->GetName(), TEST_LOCATION );
81 control.SetProperty( DevelControl::Property::ACCESSIBILITY_NAME, "Accessibility_Name" );
82 DALI_TEST_EQUALS( "Accessibility_Name" , q->GetName(), TEST_LOCATION );
83 DALI_TEST_EQUALS( control.GetProperty( DevelControl::Property::ACCESSIBILITY_NAME ).Get< std::string >() , "Accessibility_Name", TEST_LOCATION );
85 DevelControl::AccessibilityGetNameSignal(control).Connect( [] (std::string &accessibility_name) {
86 accessibility_name = "Accessibility_Name_With_Callback"; } );
88 DALI_TEST_EQUALS( "Accessibility_Name_With_Callback" , q->GetName(), TEST_LOCATION );
90 Dali::Accessibility::TestEnableSC(true);
92 DALI_TEST_EQUALS( "Accessibility_Name_With_Callback" , TestGetName( q->GetAddress()), TEST_LOCATION );
94 //TODO test emission of name change signal
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 //TODO test emission of description change signal
127 Dali::Accessibility::TestEnableSC( false );
132 int UtcDaliControlAccessibilityRole(void)
134 ToolkitTestApplication application;
136 auto control = Control::New();
137 auto role_unknown = Dali::Accessibility::Role::UNKNOWN;
138 auto role_pushbutton = Dali::Accessibility::Role::PUSH_BUTTON;
140 DALI_TEST_EQUALS( role_unknown,control.GetProperty( DevelControl::Property::ACCESSIBILITY_ROLE ).Get< Dali::Accessibility::Role >(), TEST_LOCATION );
142 auto q = Dali::Accessibility::Accessible::Get( control );
143 DALI_TEST_EQUALS( role_unknown , q->GetRole(), TEST_LOCATION);
144 DALI_TEST_EQUALS( "unknown" , q->GetRoleName(), TEST_LOCATION );
146 Dali::Accessibility::TestEnableSC( true );
147 DALI_TEST_CHECK( q );
148 DALI_TEST_EQUALS( static_cast< uint32_t >( role_unknown ), TestGetRole( q->GetAddress() ), TEST_LOCATION );
149 DALI_TEST_EQUALS( "unknown" , TestGetRoleName( q->GetAddress() ), TEST_LOCATION );
150 DALI_TEST_EQUALS( "unknown" , TestGetLocalizedRoleName( q->GetAddress() ), TEST_LOCATION );
152 control.SetProperty( DevelControl::Property::ACCESSIBILITY_ROLE, role_pushbutton );
154 DALI_TEST_EQUALS( static_cast< uint32_t >( role_pushbutton ), TestGetRole( q->GetAddress() ), TEST_LOCATION );
155 DALI_TEST_EQUALS( "push button" ,TestGetRoleName( q->GetAddress() ), TEST_LOCATION );
156 DALI_TEST_EQUALS( "push button" , TestGetLocalizedRoleName( q->GetAddress() ), TEST_LOCATION );
158 Dali::Accessibility::TestEnableSC( false );
160 DALI_TEST_EQUALS( role_pushbutton , q->GetRole(), TEST_LOCATION);
161 DALI_TEST_EQUALS( "push button" , q->GetRoleName(), TEST_LOCATION );
166 int UtcDaliControlAccessibilityRoleToggleButton(void)
168 ToolkitTestApplication application;
170 auto control = Dali::Toolkit::ToggleButton::New();
171 auto button = Dali::Accessibility::Role::TOGGLE_BUTTON;
173 control.SetProperty(Toolkit::ToggleButton::Property::TOOLTIPS,
174 Property::Array{"option1", "option2"});
176 Dali::Accessibility::TestEnableSC( true );
178 control.SetProperty( DevelControl::Property::ACCESSIBILITY_ROLE, button );
179 auto q = Dali::Accessibility::Accessible::Get( control );
181 DALI_TEST_EQUALS( button , q->GetRole(), TEST_LOCATION);
182 DALI_TEST_EQUALS( "toggle button" , q->GetRoleName(), TEST_LOCATION );
184 Dali::Accessibility::States states = q->GetStates();
185 DALI_TEST_EQUALS( true , (bool)states[Dali::Accessibility::State::VISIBLE], TEST_LOCATION);
187 DALI_TEST_EQUALS( "option1", q->GetDescription(), TEST_LOCATION );
189 auto i = dynamic_cast<Dali::Accessibility::Component*>(q);
193 control.SetProperty( Toolkit::Button::Property::LABEL, "ToggleButton2" );
194 DALI_TEST_EQUALS( "ToggleButton2", TestGetName( q->GetAddress() ), TEST_LOCATION );
196 Dali::Accessibility::TestEnableSC( false );
201 int UtcDaliControlAccessibilityButtonLabel(void)
203 ToolkitTestApplication application;
205 auto control = Dali::Toolkit::PushButton::New();
206 auto button = Dali::Accessibility::Role::PUSH_BUTTON;
208 Dali::Accessibility::TestEnableSC( true );
210 control.SetProperty( DevelControl::Property::ACCESSIBILITY_ROLE, button );
212 auto q = Dali::Accessibility::Accessible::Get( control );
213 auto i = dynamic_cast<Dali::Accessibility::Component*>(q);
218 control.SetProperty( Toolkit::Button::Property::LABEL, "Button2" );
220 DALI_TEST_EQUALS( "Button2" , TestGetName( q->GetAddress() ), TEST_LOCATION );
222 Dali::Accessibility::TestEnableSC( false );
227 int UtcDaliControlAccessibilityState(void)
229 ToolkitTestApplication application;
231 auto control = Control::New();
232 auto q = Dali::Accessibility::Accessible::Get( control );
234 Dali::Accessibility::TestEnableSC( true );
236 auto states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
237 auto states = DevelControl::GetAccessibilityStates(control);
238 DALI_TEST_CHECK( states_by_bridge == states );
240 Dali::Accessibility::TestEnableSC( false );
245 int UtcDaliControlAccessibilityModal(void)
247 ToolkitTestApplication application;
249 auto control = Dali::Toolkit::Popup::New();
250 auto q = Dali::Accessibility::Accessible::Get( control );
252 Dali::Accessibility::TestEnableSC( true );
254 auto states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
255 DALI_TEST_CHECK( states_by_bridge[Dali::Accessibility::State::MODAL] );
257 Dali::Accessibility::TestEnableSC( false );
262 int UtcDaliControlAccessibilityHighlightable(void)
264 ToolkitTestApplication application;
265 auto control = Control::New();
267 auto noneset = control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE );
268 DALI_TEST_EQUALS( Property::NONE, noneset.GetType(), TEST_LOCATION );
270 // negative testcase - trying to set unconvertible value
271 control.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, "deadbeef" );
272 noneset = control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE );
273 DALI_TEST_EQUALS( Property::NONE, noneset.GetType(), TEST_LOCATION );
275 auto q = Dali::Accessibility::Accessible::Get( control );
277 Dali::Accessibility::TestEnableSC( true );
279 auto states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
280 DALI_TEST_CHECK( !states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
282 control.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, true );
283 DALI_TEST_EQUALS( Property::BOOLEAN, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).GetType(), TEST_LOCATION );
284 DALI_TEST_EQUALS( true, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).Get< bool >(), TEST_LOCATION );
286 states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
287 DALI_TEST_CHECK( states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
289 control.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, false );
290 DALI_TEST_EQUALS( Property::BOOLEAN, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).GetType(), TEST_LOCATION );
291 DALI_TEST_EQUALS( false, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).Get< bool >(), TEST_LOCATION );
293 states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
294 DALI_TEST_CHECK( !states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
296 Dali::Accessibility::TestEnableSC( false );
301 int UtcDaliControlAccessibilityHighlightBridgeUp(void)
303 ToolkitTestApplication application;
305 auto controla = Control::New();
306 auto controlb = Control::New();
307 controla.Add(controlb);
309 controla.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, true );
310 controlb.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, true );
312 Dali::Accessibility::TestEnableSC( true );
314 auto accessible_a = Dali::Accessibility::Accessible::Get( controla );
315 auto accessible_b = Dali::Accessibility::Accessible::Get( controlb );
317 auto a = dynamic_cast<Dali::Accessibility::Component*>( accessible_a );
318 auto b = dynamic_cast<Dali::Accessibility::Component*>( accessible_b );
320 auto states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
321 auto states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
323 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
324 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
326 DALI_TEST_EQUALS( true, DevelControl::GrabAccessibilityHighlight(controla), TEST_LOCATION );
328 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
329 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
331 DALI_TEST_CHECK( states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
332 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
334 DALI_TEST_EQUALS( true, DevelControl::GrabAccessibilityHighlight(controlb), TEST_LOCATION );
335 DALI_TEST_EQUALS( true, DevelControl::GrabAccessibilityHighlight(controlb), TEST_LOCATION );
337 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
338 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
340 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
341 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
343 DALI_TEST_EQUALS( false, DevelControl::ClearAccessibilityHighlight(controla), TEST_LOCATION );
345 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
346 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
348 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
349 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
351 DALI_TEST_EQUALS( true, DevelControl::ClearAccessibilityHighlight(controlb), TEST_LOCATION );
353 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
354 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
356 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
357 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
359 DALI_TEST_CHECK( TestGrabHighlight( a -> GetAddress() ) );
361 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
362 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
364 DALI_TEST_CHECK( states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
365 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
367 DALI_TEST_CHECK( TestGrabHighlight( b -> GetAddress() ) );
369 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
370 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
372 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
373 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
375 DALI_TEST_CHECK( TestClearHighlight( b -> GetAddress() ) );
377 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a->GetAddress() )};
378 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b->GetAddress() )};
380 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::HIGHLIGHTED ] );
381 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::HIGHLIGHTED ] );
384 Dali::Accessibility::TestEnableSC( false );
389 int utcDaliAccessibilityControlAttributes(void)
391 ToolkitTestApplication application;
392 auto check_box_button = Toolkit::Control::New();
397 auto attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
398 auto attributes_map = attributes.GetMap();
400 auto position = attributes_map->Find( "access_key1" );
401 DALI_TEST_CHECK( !position );
403 DevelControl::AppendAccessibilityAttribute( check_box_button, "access_key1", "access_value1" );
404 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
405 attributes_map = attributes.GetMap();
407 DALI_TEST_EQUALS( (attributes_map->Find( "access_key1" ))->Get<std::string>(), "access_value1", TEST_LOCATION );
409 DevelControl::AppendAccessibilityAttribute( check_box_button, "access_key2", "access_value2_a" );
410 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
411 attributes_map = attributes.GetMap();
413 DALI_TEST_EQUALS( (attributes_map->Find( "access_key1" ))->Get<std::string>(), "access_value1", TEST_LOCATION );
414 DALI_TEST_EQUALS( (attributes_map->Find( "access_key2" ))->Get<std::string>(), "access_value2_a", TEST_LOCATION );
416 DevelControl::AppendAccessibilityAttribute( check_box_button, "access_key2", "access_value2_b" );
417 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
418 attributes_map = attributes.GetMap();
420 DALI_TEST_EQUALS( (attributes_map->Find( "access_key2" ))->Get<std::string>(), "access_value2_b", TEST_LOCATION );
422 DevelControl::RemoveAccessibilityAttribute( check_box_button, "access_key2" );
423 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
424 attributes_map = attributes.GetMap();
426 // In case when we are removing one of attributes the property is setting for NONE type.
427 DALI_TEST_EQUALS( (attributes_map->Find( "access_key2" ))->GetType(), Property::NONE, TEST_LOCATION );
429 Dali::Accessibility::TestEnableSC( true );
431 auto ptr = Dali::Accessibility::Accessible::Get( check_box_button );
432 auto attribute_map_bridge = TestGetAttributes( ptr->GetAddress() );
434 for (auto i = 0u; i<attributes_map->Count();++i)
435 if((attributes_map->GetValue(i)).GetType() != Property::NONE )
438 DALI_TEST_EQUALS( counter, attribute_map_bridge.size(), TEST_LOCATION );
440 for (auto it : attribute_map_bridge)
441 DALI_TEST_EQUALS( (attributes_map->Find( it.first ))->Get<std::string>(), it.second, TEST_LOCATION );
443 DevelControl::ClearAccessibilityAttributes(check_box_button);
444 attributes = check_box_button.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
445 attributes_map = attributes.GetMap();
447 position = attributes_map->Find( "access_key1" );
448 DALI_TEST_CHECK( !position );
450 position = attributes_map->Find( "access_key2" );
451 DALI_TEST_CHECK( !position );
453 Dali::Accessibility::TestEnableSC( false );
458 int UtcDaliControlReadingInfoType(void)
460 ToolkitTestApplication application;
461 auto control = Control::New();
463 auto reading_info_type = DevelControl::GetAccessibilityReadingInfoType(control);
465 for ( auto i = 0u; i < 4; ++i)
466 DALI_TEST_CHECK ( reading_info_type[ static_cast< Dali::Accessibility::ReadingInfoType >( i ) ]);
468 reading_info_type[Dali::Accessibility::ReadingInfoType::DESCRIPTION] = false;
469 reading_info_type[Dali::Accessibility::ReadingInfoType::STATE] = false;
470 reading_info_type[Dali::Accessibility::ReadingInfoType::NAME] = false;
471 reading_info_type[Dali::Accessibility::ReadingInfoType::ROLE] = false;
473 DevelControl::SetAccessibilityReadingInfoType(control, reading_info_type);
475 reading_info_type = DevelControl::GetAccessibilityReadingInfoType(control);
477 for ( auto i = 0u; i < 4; ++i)
478 DALI_TEST_CHECK ( false == reading_info_type[ static_cast< Dali::Accessibility::ReadingInfoType >( i ) ]);
480 reading_info_type[Dali::Accessibility::ReadingInfoType::DESCRIPTION] = true;
481 reading_info_type[Dali::Accessibility::ReadingInfoType::STATE] = true;
482 reading_info_type[Dali::Accessibility::ReadingInfoType::NAME] = true;
483 reading_info_type[Dali::Accessibility::ReadingInfoType::ROLE] = true;
485 DevelControl::SetAccessibilityReadingInfoType(control, reading_info_type);
487 auto q = control.GetProperty( Toolkit::DevelControl::Property::ACCESSIBILITY_ATTRIBUTES );
490 DALI_TEST_EQUALS( (z->Find( "reading_info_type" ))->Get<std::string>(), "name|role|description|state", TEST_LOCATION );
491 reading_info_type = DevelControl::GetAccessibilityReadingInfoType(control);
492 for ( auto i = 0u; i < 4; ++i)
493 DALI_TEST_CHECK ( reading_info_type[ static_cast< Dali::Accessibility::ReadingInfoType >( i ) ]);
498 int UtcDaliControlDoGesture(void)
500 ToolkitTestApplication application;
501 auto control = Control::New();
502 Dali::Accessibility::TestEnableSC( true );
504 auto accessible = Dali::Accessibility::Accessible::Get( control );
505 auto gesture_one = Dali::Accessibility::GestureInfo { Dali::Accessibility::Gesture::ONE_FINGER_FLICK_LEFT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 };
506 auto gesture_two = Dali::Accessibility::GestureInfo { Dali::Accessibility::Gesture::ONE_FINGER_FLICK_RIGHT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 };
508 DALI_TEST_CHECK( !accessible->DoGesture( gesture_one ) );
509 DALI_TEST_CHECK( !TestDoGesture( accessible->GetAddress(), Dali::Accessibility::Gesture::ONE_FINGER_FLICK_LEFT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 ) );
511 DevelControl::AccessibilityDoGestureSignal(control).Connect( [] ( std::pair< Dali::Accessibility::GestureInfo, bool > &gesture ) {
512 if ( gesture.first.type == Dali::Accessibility::Gesture::ONE_FINGER_FLICK_LEFT )
513 gesture.second = true;
515 gesture.second = false;
518 DALI_TEST_CHECK( accessible->DoGesture( gesture_one ) );
519 DALI_TEST_CHECK( TestDoGesture( accessible->GetAddress(), Dali::Accessibility::Gesture::ONE_FINGER_FLICK_LEFT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 ) );
521 DALI_TEST_CHECK( !accessible->DoGesture( gesture_two ) );
522 DALI_TEST_CHECK( !TestDoGesture( accessible->GetAddress(), Dali::Accessibility::Gesture::ONE_FINGER_FLICK_RIGHT, 600, 100, 500, 500, Dali::Accessibility::GestureState::BEGIN, 1000 ) );
524 Dali::Accessibility::TestEnableSC( false );
529 int UtcDaliAccessibilityRelation(void)
531 ToolkitTestApplication application;
532 Dali::Accessibility::TestEnableSC( true );
534 auto rel = Accessibility::RelationType::FLOWS_TO;
535 auto number = static_cast< size_t >( rel );
536 auto control = Control::New();
537 auto destination1 = Control::New();
538 auto destination2 = Control::New();
540 DevelControl::AppendAccessibilityRelation( control, destination1, rel );
541 auto relations = DevelControl::GetAccessibilityRelations(control);
542 DALI_TEST_CHECK( relations[ number ].size() == 1 );
544 DevelControl::AppendAccessibilityRelation( control, destination2, rel );
545 relations = DevelControl::GetAccessibilityRelations(control);
546 DALI_TEST_CHECK( relations[ number ].size() == 2 );
548 auto accessible = Dali::Accessibility::Accessible::Get( control );
549 auto accessible_destination1 = Dali::Accessibility::Accessible::Get( destination1 );
550 auto accessible_destination2 = Dali::Accessibility::Accessible::Get( destination2 );
551 auto relationset = accessible->GetRelationSet();
553 DALI_TEST_CHECK( relationset[0].relationType == rel );
554 DALI_TEST_CHECK( relationset[0].targets[0] == accessible_destination1->GetAddress() || relationset[0].targets[1] == accessible_destination1->GetAddress() );
555 DALI_TEST_CHECK( relationset[0].targets[0] == accessible_destination2->GetAddress() || relationset[0].targets[1] == accessible_destination2->GetAddress() );
557 auto relationset_bridge = TestGetRelationSet( accessible -> GetAddress() );
558 DALI_TEST_CHECK( static_cast< uint32_t >( relationset[0].relationType ) == std::get<0>( relationset_bridge[0] ) );
560 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] );
561 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] );
563 DevelControl::RemoveAccessibilityRelation(control,destination2,rel);
564 relations = DevelControl::GetAccessibilityRelations(control);
565 DALI_TEST_CHECK( relations[ number ].size() == 1 );
567 DevelControl::ClearAccessibilityRelations(control);
568 relations = DevelControl::GetAccessibilityRelations(control);
569 DALI_TEST_CHECK( relations[ number ].size() == 0 );
571 Dali::Accessibility::TestEnableSC( false );
576 int UtcDaliAccessibilityParentChildren(void)
578 ToolkitTestApplication application;
579 Dali::Accessibility::TestEnableSC( true );
581 auto parent = Control::New();
582 auto child_1 = Control::New();
583 auto child_2 = Control::New();
585 auto parent_accessible = Dali::Accessibility::Accessible::Get( parent );
586 auto child_1_accessible = Dali::Accessibility::Accessible::Get( child_1 );
587 auto child_2_accessible = Dali::Accessibility::Accessible::Get( child_2 );
589 auto children = TestGetChildren( parent_accessible -> GetAddress() );
590 DALI_TEST_EQUALS( children.size(), 0, TEST_LOCATION );
594 TestGetIndexInParent( child_1_accessible -> GetAddress() );
595 DALI_ABORT("Object has parent, test abort");
597 catch(TestDBusWrapper::error &){}
601 TestGetChildAtIndex( parent_accessible -> GetAddress(), -1 );
602 DALI_ABORT("Positive index, test abort");
604 catch(TestDBusWrapper::error &){}
606 DALI_TEST_EQUALS( parent_accessible -> GetChildCount(), 0, TEST_LOCATION );
610 child_1_accessible -> GetIndexInParent();
611 DALI_ABORT("Object has parent, test abort");
613 catch (Dali::DaliException &){}
618 children = TestGetChildren( parent_accessible -> GetAddress() );
619 DALI_TEST_EQUALS( children.size(), 2, TEST_LOCATION );
621 DALI_TEST_EQUALS( parent_accessible -> GetAddress(), TestGetParent( child_1_accessible -> GetAddress() ), TEST_LOCATION );
622 DALI_TEST_EQUALS( child_2_accessible -> GetAddress(), TestGetChildAtIndex( parent_accessible -> GetAddress(), TestGetIndexInParent( child_2_accessible -> GetAddress() ) ), TEST_LOCATION );
624 DALI_TEST_EQUALS( parent_accessible, child_1_accessible -> GetParent(), TEST_LOCATION );
625 DALI_TEST_EQUALS( child_2_accessible, parent_accessible -> GetChildAtIndex( child_2_accessible -> GetIndexInParent() ) , TEST_LOCATION );
627 Dali::Accessibility::TestEnableSC( false );
632 int UtcDaliAccessibilityGetLayer(void)
634 ToolkitTestApplication application;
636 Dali::Accessibility::TestEnableSC( true );
638 auto control = Control::New();
639 auto accessible_obj = Dali::Accessibility::Accessible::Get( control );
640 auto accessible_component = dynamic_cast<Dali::Accessibility::Component*>(accessible_obj);
641 DALI_TEST_CHECK( accessible_component );
642 DALI_TEST_EQUALS( Dali::Accessibility::ComponentLayer::WINDOW, accessible_component -> GetLayer(), TEST_LOCATION );
643 DALI_TEST_EQUALS( Dali::Accessibility::ComponentLayer::WINDOW, TestGetLayer( accessible_component -> GetAddress() ), TEST_LOCATION );
645 Dali::Accessibility::TestEnableSC( false );
650 int UtcDaliAccessibilityGrabFocus(void)
652 ToolkitTestApplication application;
654 Dali::Accessibility::TestEnableSC( true );
656 auto controla = Control::New();
657 auto controlb = Control::New();
659 Stage::GetCurrent().Add( controla );
660 Stage::GetCurrent().Add( controlb );
662 controla.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
663 controlb.SetProperty(Actor::Property::KEYBOARD_FOCUSABLE, true);
665 auto a = Dali::Accessibility::Accessible::Get( controla );
666 auto b = Dali::Accessibility::Accessible::Get( controlb );
668 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
669 auto b_component = dynamic_cast<Dali::Accessibility::Component*>( b );
671 auto states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a_component -> GetAddress() )};
672 auto states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b_component -> GetAddress() )};
674 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::FOCUSED ] );
675 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::FOCUSED ] );
677 DALI_TEST_CHECK( a_component -> GrabFocus() );
679 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a_component -> GetAddress() )};
680 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b_component -> GetAddress() )};
682 DALI_TEST_CHECK( states_by_bridge_a[ Dali::Accessibility::State::FOCUSED ] );
683 DALI_TEST_CHECK( !states_by_bridge_b[ Dali::Accessibility::State::FOCUSED ] );
685 DALI_TEST_CHECK( TestGrabFocus( b_component -> GetAddress() ) );
687 states_by_bridge_a = Dali::Accessibility::States { TestGetStates( a_component -> GetAddress() )};
688 states_by_bridge_b = Dali::Accessibility::States { TestGetStates( b_component -> GetAddress() )};
690 DALI_TEST_CHECK( !states_by_bridge_a[ Dali::Accessibility::State::FOCUSED ] );
691 DALI_TEST_CHECK( states_by_bridge_b[ Dali::Accessibility::State::FOCUSED ] );
693 Dali::Accessibility::TestEnableSC( false );
698 int UtcDaliAccessibilityGetExtentsScreenAndWindowPositionMatch(void)
700 ToolkitTestApplication application;
701 tet_infoline( "UtcDaliAccessibilityGetExtentsScreenAndWindowPositionMatch" );
703 Dali::Accessibility::TestEnableSC( true );
705 auto control = Control::New();
706 Stage::GetCurrent().GetRootLayer().Add( control );
708 auto window = Dali::DevelWindow::Get( control );
709 DALI_TEST_CHECK( window );
711 //window.SetPosition({0,0});
712 DevelWindow::SetPositionSize( window, PositionSize( 0,0,480, 240 ) );
714 control.SetProperty( Actor::Property::POSITION, Vector3( 10, 10, 100 ) );
715 control.SetProperty( Actor::Property::SIZE, Vector2( 10, 10 ) );
717 application.SendNotification();
718 application.Render( 1 );
720 auto a = Dali::Accessibility::Accessible::Get( control );
721 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
723 auto extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::SCREEN );
724 DALI_TEST_EQUALS( extents.x, 5.0f, TEST_LOCATION );
725 DALI_TEST_EQUALS( extents.y, 5.0f, TEST_LOCATION );
726 DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
727 DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION );
729 auto bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::SCREEN );
730 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 5, TEST_LOCATION );
731 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 5, TEST_LOCATION );
732 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
733 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
735 extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::WINDOW );
736 DALI_TEST_EQUALS( extents.x, 5.0f, TEST_LOCATION );
737 DALI_TEST_EQUALS( extents.y, 5.0f, TEST_LOCATION );
738 DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
739 DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION );
741 bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::WINDOW );
742 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 5, TEST_LOCATION );
743 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 5, TEST_LOCATION );
744 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
745 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
747 control.SetProperty( Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT, false );
748 application.SendNotification();
749 application.Render( 1 );
751 extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::SCREEN );
752 DALI_TEST_EQUALS( extents.x, 10.0f, TEST_LOCATION );
753 DALI_TEST_EQUALS( extents.y, 10.0f, TEST_LOCATION );
754 DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
755 DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION );
757 bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::SCREEN );
758 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 10, TEST_LOCATION );
759 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 10, TEST_LOCATION );
760 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
761 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
763 extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::WINDOW );
764 DALI_TEST_EQUALS( extents.x, 10.0f, TEST_LOCATION );
765 DALI_TEST_EQUALS( extents.y, 10.0f, TEST_LOCATION );
766 DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
767 DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION );
769 bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::WINDOW );
770 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 10, TEST_LOCATION );
771 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 10, TEST_LOCATION );
772 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
773 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
775 Dali::Accessibility::TestEnableSC( false );
780 int UtcDaliAccessibilityGetExtentsScreenAndWindowPositionDoNotMatch(void)
782 ToolkitTestApplication application;
784 Dali::Accessibility::TestEnableSC( true );
786 auto control = Control::New();
787 Stage::GetCurrent().GetRootLayer().Add( control );
788 auto window = Dali::DevelWindow::Get( control );
789 //window.SetPosition({33,33});
790 DevelWindow::SetPositionSize( window, PositionSize( 33,33,480, 240 ) );
792 control.SetProperty( Actor::Property::POSITION, Vector3( 10, 10, 100 ) );
793 control.SetProperty( Actor::Property::SIZE, Vector2( 10, 10 ) );
795 application.SendNotification();
796 application.Render( 1 );
798 auto a = Dali::Accessibility::Accessible::Get( control );
799 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
801 auto extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::SCREEN );
802 DALI_TEST_EQUALS( extents.x, 38.0f, TEST_LOCATION );
803 DALI_TEST_EQUALS( extents.y, 38.0f, TEST_LOCATION );
804 DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
805 DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION );
807 auto bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::SCREEN );
808 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 38, TEST_LOCATION );
809 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 38, TEST_LOCATION );
810 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
811 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
813 extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::WINDOW );
814 DALI_TEST_EQUALS( extents.x, 5.0f, TEST_LOCATION );
815 DALI_TEST_EQUALS( extents.y, 5.0f, TEST_LOCATION );
816 DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
817 DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION );
819 bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::WINDOW );
820 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 5, TEST_LOCATION );
821 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 5, TEST_LOCATION );
822 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
823 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
825 control.SetProperty( Dali::DevelActor::Property::POSITION_USES_ANCHOR_POINT, false );
826 application.SendNotification();
827 application.Render( 1 );
829 extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::SCREEN );
830 DALI_TEST_EQUALS( extents.x, 43.0f, TEST_LOCATION );
831 DALI_TEST_EQUALS( extents.y, 43.0f, TEST_LOCATION );
832 DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
833 DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION );
835 bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::SCREEN );
836 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 43, TEST_LOCATION );
837 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 43, TEST_LOCATION );
838 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
839 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
841 extents = a_component->GetExtents( Dali::Accessibility::CoordinateType::WINDOW );
842 DALI_TEST_EQUALS( extents.x, 10.0f, TEST_LOCATION );
843 DALI_TEST_EQUALS( extents.y, 10.0f, TEST_LOCATION );
844 DALI_TEST_EQUALS( extents.height, 10.0f, TEST_LOCATION );
845 DALI_TEST_EQUALS( extents.width, 10.0f, TEST_LOCATION );
847 bridge_extents = TestGetExtents( a_component -> GetAddress(), Dali::Accessibility::CoordinateType::WINDOW );
848 DALI_TEST_EQUALS( std::get< 0 >( bridge_extents ), 10, TEST_LOCATION );
849 DALI_TEST_EQUALS( std::get< 1 >( bridge_extents ), 10, TEST_LOCATION );
850 DALI_TEST_EQUALS( std::get< 2 >( bridge_extents ), 10, TEST_LOCATION );
851 DALI_TEST_EQUALS( std::get< 3 >( bridge_extents ), 10, TEST_LOCATION );
853 Dali::Accessibility::TestEnableSC( false );
858 int UtcDaliAccessibilityGetAlpha(void)
860 ToolkitTestApplication application;
862 Dali::Accessibility::TestEnableSC( true );
864 auto control = Control::New();
865 auto a = Dali::Accessibility::Accessible::Get( control );
866 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
868 DALI_TEST_EQUALS( 0.0, a_component -> GetAlpha(), TEST_LOCATION );
869 DALI_TEST_EQUALS( 0.0, TestGetAlpha( a_component -> GetAddress() ), TEST_LOCATION );
871 Dali::Accessibility::TestEnableSC( false );
876 int UtcDaliAccessibilityGetMdiZOrder(void)
878 ToolkitTestApplication application;
880 Dali::Accessibility::TestEnableSC( true );
882 auto control = Control::New();
883 auto a = Dali::Accessibility::Accessible::Get( control );
884 auto a_component = dynamic_cast<Dali::Accessibility::Component*>( a );
886 DALI_TEST_EQUALS( 0, static_cast< int >( a_component -> GetMdiZOrder() ), TEST_LOCATION );
887 DALI_TEST_EQUALS( 0, TestGetMdiZOrder( a_component -> GetAddress() ), TEST_LOCATION );
889 Dali::Accessibility::TestEnableSC( false );
894 int UtcDaliAccessibilityAction(void)
896 ToolkitTestApplication application;
898 Dali::Accessibility::TestEnableSC( true );
900 auto control = Control::New( );
901 auto a = Dali::Accessibility::Accessible::Get( control );
902 auto b = dynamic_cast<Dali::Accessibility::Action*>( a );
904 std::vector< std::string > actions { "activate", "accessibilityActivated", "ReadingSkipped", "ReadingCancelled", "ReadingStopped", "ReadingPaused", "ReadingResumed", "show", "hide" };
905 auto count = b -> GetActionCount();
907 DALI_TEST_EQUALS( count, 9, TEST_LOCATION );
909 for (auto i = 0u; i<count; ++i)
911 DALI_TEST_CHECK( Dali::Accessibility::Find( actions, b -> GetActionName( i ) ) );
912 DALI_TEST_EQUALS( b -> GetActionName( i ), b -> GetLocalizedActionName( i ), TEST_LOCATION );
913 DALI_TEST_EQUALS( b -> GetActionDescription( i ), "", TEST_LOCATION );
914 DALI_TEST_EQUALS( b -> GetActionKeyBinding( i ), "", TEST_LOCATION );
917 // Empty strings should be returned for invalid indices
918 DALI_TEST_EQUALS(b->GetActionDescription(count), "", TEST_LOCATION);
919 DALI_TEST_EQUALS(b->GetActionName(count), "", TEST_LOCATION);
920 DALI_TEST_EQUALS(b->GetLocalizedActionName(count), "", TEST_LOCATION);
921 DALI_TEST_EQUALS(b->GetActionKeyBinding(count), "", TEST_LOCATION);
923 count = TestGetActionCount(b -> GetAddress());
925 DALI_TEST_EQUALS( count, 9, TEST_LOCATION );
927 for (auto i = 0u; i<count; ++i)
929 DALI_TEST_CHECK( Dali::Accessibility::Find( actions, TestGetActionName( b->GetAddress(), i ) ) );
930 DALI_TEST_EQUALS( TestGetActionName( b->GetAddress(), i ), TestGetLocalizedActionName( b->GetAddress(), i ), TEST_LOCATION );
931 DALI_TEST_EQUALS( TestGetActionDescription( b->GetAddress(), i ), "", TEST_LOCATION );
932 DALI_TEST_EQUALS( TestGetActionKeyBinding( b->GetAddress(), i ), "", TEST_LOCATION );
935 DALI_TEST_EQUALS(TestGetActionDescription(b->GetAddress(), count), "", TEST_LOCATION);
936 DALI_TEST_EQUALS(TestGetActionName(b->GetAddress(), count), "", TEST_LOCATION);
937 DALI_TEST_EQUALS(TestGetLocalizedActionName(b->GetAddress(), count), "", TEST_LOCATION);
938 DALI_TEST_EQUALS(TestGetActionKeyBinding(b->GetAddress(), count), "", TEST_LOCATION);
940 Dali::Accessibility::TestEnableSC( false );
945 int UtcDaliAccessibilityDoAction(void)
947 ToolkitTestApplication application;
949 Dali::Accessibility::TestEnableSC( true );
950 thread_local std::vector< bool > actions_done { false, false, false, false, false, false };
952 auto control = Control::New( );
953 auto a = Dali::Accessibility::Accessible::Get( control );
954 auto b = dynamic_cast<Dali::Accessibility::Action*>( a );
955 std::vector< std::string > actions { "activate", "accessibilityActivated", "ReadingSkipped", "ReadingCancelled", "ReadingStopped", "ReadingPaused", "ReadingResumed", "show", "hide" };
957 // Test calling action by name
958 DALI_TEST_CHECK( b -> DoAction( actions[2] ) ); // ReadingSkipped
959 DALI_TEST_CHECK( b -> DoAction( actions[4] ) ); // ReadingStopped
960 DALI_TEST_CHECK( b -> DoAction( actions[4] ) ); // ReadingStopped
962 // Negative test of calling action with not defined name
963 DALI_TEST_CHECK( !b -> DoAction( "undefined" ) );
965 DevelControl::AccessibilityReadingSkippedSignal(control).Connect( [] () {
966 actions_done[ 1 ] = true;
968 DevelControl::AccessibilityReadingCancelledSignal(control).Connect( [] () {
969 actions_done[ 2 ] = true;
971 DevelControl::AccessibilityReadingStoppedSignal(control).Connect( [] () {
972 actions_done[ 3 ] = true;
974 DevelControl::AccessibilityReadingPausedSignal(control).Connect( [] () {
975 actions_done[ 4 ] = true;
977 DevelControl::AccessibilityReadingResumedSignal(control).Connect( [] () {
978 actions_done[ 5 ] = true;
980 DevelControl::AccessibilityActivateSignal(control).Connect( [] () {
981 actions_done[ 0 ] = true;
984 // Test calling action by index
985 DALI_TEST_CHECK( b -> DoAction( 1 ) );
986 DALI_TEST_CHECK( b -> DoAction( 2 ) );
987 DALI_TEST_CHECK( b -> DoAction( 3 ) );
988 DALI_TEST_CHECK( b -> DoAction( 4 ) );
989 DALI_TEST_CHECK( b -> DoAction( 5 ) );
990 DALI_TEST_CHECK( b -> DoAction( 6 ) );
992 for ( auto i = 0u; i < actions_done.size(); ++i )
994 DALI_TEST_CHECK( actions_done[ i ] );
995 actions_done[ i ] = false;
998 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 1 ) );
999 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 2 ) );
1000 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 3 ) );
1001 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 4 ) );
1002 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 5 ) );
1003 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 6 ) );
1005 for ( auto i = 0u; i < actions_done.size(); ++i )
1007 DALI_TEST_CHECK( actions_done[ i ] );
1008 actions_done[ i ] = false;
1011 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 1 ] ) );
1012 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 2 ] ) );
1013 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 3 ] ) );
1014 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 4 ] ) );
1015 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 5 ] ) );
1016 DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 6 ] ) );
1018 for ( auto i = 0u; i < actions_done.size(); ++i )
1019 DALI_TEST_CHECK( actions_done[ i ] );
1021 Dali::Accessibility::TestEnableSC( false );
1026 void TestVoidCallback()
1030 int UtcDaliAccessibilitySignals(void)
1032 ToolkitTestApplication application;
1033 ConnectionTracker connectionTracker;
1034 Control control = Control::New();
1036 DALI_TEST_CHECK( DevelControl::AccessibilityGetNameSignal(control).Empty() );
1037 control.ConnectSignal( &connectionTracker, "getName", &TestVoidCallback );
1038 DALI_TEST_CHECK( !DevelControl::AccessibilityGetNameSignal(control).Empty() );
1040 DALI_TEST_CHECK( DevelControl::AccessibilityGetDescriptionSignal(control).Empty() );
1041 control.ConnectSignal( &connectionTracker, "getDescription", &TestVoidCallback );
1042 DALI_TEST_CHECK( !DevelControl::AccessibilityGetDescriptionSignal(control).Empty() );
1044 DALI_TEST_CHECK( DevelControl::AccessibilityDoGestureSignal(control).Empty() );
1045 control.ConnectSignal( &connectionTracker, "doGesture", &TestVoidCallback );
1046 DALI_TEST_CHECK( !DevelControl::AccessibilityDoGestureSignal(control).Empty() );
1051 static void Wait(ToolkitTestApplication& application)
1053 application.SendNotification();
1054 application.Render(16);
1057 int UtcDaliAccessibilityScrollToChildScrollView(void)
1059 ToolkitTestApplication application;
1060 Dali::Accessibility::TestEnableSC( true );
1062 ScrollView scrollView = ScrollView::New();
1063 application.GetScene().Add( scrollView );
1065 PushButton actorA = PushButton::New();
1066 const Dali::Vector3 positionA = Vector3(100.0f, 400.0f, 0.0f);
1067 actorA.SetProperty( Dali::Actor::Property::POSITION, positionA );
1068 scrollView.Add(actorA);
1070 PushButton actorB = PushButton::New();
1071 const Dali::Vector3 positionB = Vector3(500.0f, 200.0f, 0.0f);
1072 actorB.SetProperty( Dali::Actor::Property::POSITION, positionB );
1073 scrollView.Add(actorB);
1077 auto* accessibleParent = dynamic_cast<DevelControl::AccessibleImpl*>(Dali::Accessibility::Accessible::Get(scrollView));
1078 DALI_TEST_CHECK(accessibleParent);
1079 auto* accessibleA = dynamic_cast<DevelControl::AccessibleImpl*>(Dali::Accessibility::Accessible::Get(actorA));
1080 DALI_TEST_CHECK(accessibleA);
1081 auto* accessibleB = dynamic_cast<DevelControl::AccessibleImpl*>(Dali::Accessibility::Accessible::Get(actorB));
1082 DALI_TEST_CHECK(accessibleB);
1084 accessibleA->GrabHighlight(); // == scrollView.ScrollTo(actorA)
1086 accessibleB->GrabHighlight(); // == scrollView.ScrollTo(actorB)
1089 Dali::Accessibility::TestEnableSC( false );
1094 class TestItemFactory : public ItemFactory
1101 unsigned int GetNumberOfItems() override
1106 Dali::Actor NewItem(unsigned int itemId) override
1108 return TextLabel::New(std::to_string(itemId));
1113 int UtcDaliAccessibilityScrollToChildItemView(void)
1115 ToolkitTestApplication application;
1116 Dali::Accessibility::TestEnableSC( true );
1118 TestItemFactory factory;
1119 ItemView view = ItemView::New(factory);
1120 Dali::Vector3 vec(480.0f, 800.0f, 0.0f);
1121 ItemLayoutPtr layout = DefaultItemLayout::New( DefaultItemLayout::DEPTH );
1123 view.AddLayout(*layout);
1124 view.SetProperty( Actor::Property::SIZE, vec );
1126 application.GetScene().Add(view);
1127 layout->SetOrientation(ControlOrientation::Down);
1128 view.ActivateLayout(0, vec, 0.0f);
1132 auto* accessibleParent = dynamic_cast<DevelControl::AccessibleImpl*>(Dali::Accessibility::Accessible::Get(view));
1133 DALI_TEST_CHECK(accessibleParent);
1134 auto* accessibleA = dynamic_cast<DevelControl::AccessibleImpl*>(Dali::Accessibility::Accessible::Get(view.GetItem(0)));
1135 DALI_TEST_CHECK(accessibleA);
1136 auto* accessibleB = dynamic_cast<DevelControl::AccessibleImpl*>(Dali::Accessibility::Accessible::Get(view.GetItem(1)));
1137 DALI_TEST_CHECK(accessibleB);
1139 accessibleA->GrabHighlight(); // == view.ScrollToItem(view.GetItemId(actorA))
1141 accessibleB->GrabHighlight(); // == view.ScrollToItem(view.GetItemId(actorB))
1144 Dali::Accessibility::TestEnableSC( false );
1148 int UtcDaliAccessibilityScrollToChildNonScrollable(void)
1150 ToolkitTestApplication application;
1151 Dali::Accessibility::TestEnableSC( true );
1153 TextLabel label = TextLabel::New("123");
1155 auto* accessible = dynamic_cast<DevelControl::AccessibleImpl*>(Dali::Accessibility::Accessible::Get(label));
1156 DALI_TEST_CHECK(accessible);
1158 DALI_TEST_EQUALS(accessible->IsScrollable(), false, TEST_LOCATION);
1159 DALI_TEST_EQUALS(accessible->ScrollToChild({}), false, TEST_LOCATION);
1161 Dali::Accessibility::TestEnableSC( false );
1165 int UtcDaliAccessibilityCheckHighlight(void)
1167 ToolkitTestApplication application;
1168 Dali::Accessibility::TestEnableSC( true );
1169 Dali::Accessibility::TestResetMoveOutedCalled();
1171 // Make precondition two children exist in parent area
1172 PushButton parentButton = PushButton::New();
1173 parentButton.SetProperty(Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_TO_BOUNDING_BOX);
1174 parentButton.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
1175 parentButton.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
1176 parentButton.SetProperty(Actor::Property::POSITION, Dali::Vector2(0.0f, 0.0f));
1177 parentButton.SetProperty(Actor::Property::SIZE, Dali::Vector2(100.0f, 200.0f));
1178 application.GetScene().Add( parentButton );
1180 PushButton buttonA = PushButton::New();
1181 buttonA.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
1182 buttonA.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
1183 buttonA.SetProperty(Actor::Property::POSITION, Dali::Vector2(0.0f, 0.0f));
1184 buttonA.SetProperty(Actor::Property::SIZE, Dali::Vector2(100.0f, 100.0f));
1185 parentButton.Add(buttonA);
1187 PushButton buttonB = PushButton::New();
1188 buttonB.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT);
1189 buttonB.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
1190 buttonB.SetProperty(Actor::Property::POSITION, Dali::Vector2(0.0f, 100.0f));
1191 buttonB.SetProperty(Actor::Property::SIZE, Dali::Vector2(100.0f, 100.0f));
1192 parentButton.Add(buttonB);
1195 // Set highlight to first child (A) to enable movement tracking
1196 auto* accessible = dynamic_cast<DevelControl::AccessibleImpl*>(Dali::Accessibility::Accessible::Get(buttonA));
1197 DALI_TEST_CHECK(accessible);
1198 accessible->GrabHighlight();
1201 // Move first child (A) out of parent area through the parent's area top edge - single move outed event expected for A object and OUTGOING_TOP_LEFT direction
1202 buttonA.SetProperty(Actor::Property::POSITION, Dali::Vector2(0.0f, -200.0f));
1204 // Need one more notificaiton to get correct updated position
1205 application.SendNotification();
1206 DALI_TEST_EQUALS( true, Dali::Accessibility::TestGetMoveOutedCalled(), TEST_LOCATION );
1208 // Reset verdict data
1209 Dali::Accessibility::TestResetMoveOutedCalled();
1211 // Move first child (A) outside of parent area (both start and end position are outside of parent area) - no move outed event expected for A object
1212 buttonA.SetProperty( Dali::Actor::Property::POSITION, Dali::Vector2(0.0f, -300.0f) );
1214 // Need one more notificaiton to get correct updated position
1215 application.SendNotification();
1216 DALI_TEST_EQUALS( false, Dali::Accessibility::TestGetMoveOutedCalled(), TEST_LOCATION );
1218 // Reset verdict data
1219 Dali::Accessibility::TestResetMoveOutedCalled();
1221 // Set highlight to second child (B) to enable movement tracking
1222 accessible = dynamic_cast<DevelControl::AccessibleImpl*>(Dali::Accessibility::Accessible::Get(buttonB));
1223 DALI_TEST_CHECK(accessible);
1224 accessible->GrabHighlight();
1227 // Move second child (B) inside of parent area (both start and end position are inside of parent area) - no move outed event expected for B object
1228 // B: (0,100) --> (0, 50)
1229 buttonB.SetProperty( Dali::Actor::Property::POSITION, Dali::Vector2(0.0f, 50.0f) );
1231 // Need one more notificaiton to get correct updated position
1232 application.SendNotification();
1233 DALI_TEST_EQUALS( false, Dali::Accessibility::TestGetMoveOutedCalled(), TEST_LOCATION );
1235 // Reset verdict data
1236 Dali::Accessibility::TestResetMoveOutedCalled();
1238 // Move second child (B) out of parent area through the parent's area right edge - single move outed event expected for B object and OUTGOING_BOTTOM_RIGHT direction
1239 buttonB.SetProperty(Actor::Property::POSITION, Dali::Vector2(300.0f, 100.0f));
1241 // Need one more notificaiton to get correct updated position
1242 application.SendNotification();
1243 DALI_TEST_EQUALS( true, Dali::Accessibility::TestGetMoveOutedCalled(), TEST_LOCATION );
1245 // Reset verdict data
1246 Dali::Accessibility::TestResetMoveOutedCalled();
1248 // Move second child (B) back into parent area (start position is outside but end position is inside of parent area) - no move outed event expected for B object
1249 // B: (300,100) --> (0, 100)
1250 buttonB.SetProperty( Dali::Actor::Property::POSITION, Dali::Vector2(0.0f, 100.0f) );
1252 // Need one more seding notificaiton to get correct updated position
1253 application.SendNotification();
1254 DALI_TEST_EQUALS( false, Dali::Accessibility::TestGetMoveOutedCalled(), TEST_LOCATION );
1256 // Reset verdict data
1257 Dali::Accessibility::TestResetMoveOutedCalled();
1259 // Disable movement tracking on B by giving highlight to A
1260 accessible = dynamic_cast<DevelControl::AccessibleImpl*>(Dali::Accessibility::Accessible::Get(buttonA));
1261 DALI_TEST_CHECK(accessible);
1262 accessible->GrabHighlight();
1265 // Move B (untracked) out of parent area through the parent's area right edge - no move outed event expected for B object
1266 // B: (0,100) --> (300, 100)
1267 buttonB.SetProperty( Dali::Actor::Property::POSITION, Dali::Vector2(300.0f, 100.0f) );
1269 // Need one more seding notificaiton to get correct updated position
1270 application.SendNotification();
1271 DALI_TEST_EQUALS( false, Dali::Accessibility::TestGetMoveOutedCalled(), TEST_LOCATION );
1273 Dali::Accessibility::TestEnableSC( false );