#include <dali-toolkit-test-suite-utils.h>
#include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/accessibility-test-utils.h>
+#include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
#include <dali-toolkit/dali-toolkit.h>
#include <dali/devel-api/adaptor-framework/accessibility.h>
#include <dali/devel-api/adaptor-framework/accessibility-impl.h>
+#include <dali-toolkit/devel-api/controls/buttons/toggle-button.h>
#include <dali-toolkit/devel-api/controls/control-devel.h>
-#include <dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h>
+#include <dali-toolkit/devel-api/controls/popup/popup.h>
#include <dali/devel-api/actors/actor-devel.h>
#include <dali/devel-api/common/stage.h>
#include <cstdlib>
-using namespace Dali::Toolkit;
-
-//using DBusWrapper = Dali::Accessibility::DBusWrapper; // FIXME
+#include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
-namespace Dali::Accessibility::TestDBusWrapper { struct error {}; } // FIXME
+using namespace Dali::Toolkit;
void utc_dali_accessibility_controls_bridge_up_startup(void)
{
test_return_value = TET_UNDEF;
+ DBusWrapper::Install(std::unique_ptr<DBusWrapper>(new TestDBusWrapper));
}
void utc_dali_accessibility_controls_bridge_up_cleanup(void)
{
test_return_value = TET_PASS;
//DBusWrapper::Install({}) is a de-install
- //DBusWrapper::Install({}); // FIXME
+ DBusWrapper::Install({});
}
namespace Dali {
int UtcDaliControlAccessibilityRaiseBridge(void)
{
- ToolkitTestApplication application;
-
DALI_TEST_CHECK(!Accessibility::IsUp());
+ ToolkitTestApplication application;
+
Dali::Accessibility::TestEnableSC(true);
DALI_TEST_CHECK(Accessibility::IsUp());
DALI_TEST_EQUALS( "Accessibility_Name_With_Callback" , TestGetName( q->GetAddress()), TEST_LOCATION );
+ //TODO test emission of name change signal
Dali::Accessibility::TestEnableSC( false );
END_TEST;
DALI_TEST_EQUALS( "Accessibility_Description_With_Callback" , TestGetDescription( q->GetAddress()), TEST_LOCATION );
+ //TODO test emission of description change signal
Dali::Accessibility::TestEnableSC( false );
END_TEST;
END_TEST;
}
+int UtcDaliControlAccessibilityRoleToggleButton(void)
+{
+ ToolkitTestApplication application;
+
+ auto control = Dali::Toolkit::ToggleButton::New();
+ auto button = Dali::Accessibility::Role::TOGGLE_BUTTON;
+
+ control.SetProperty(Toolkit::ToggleButton::Property::TOOLTIPS,
+ Property::Array{"option1", "option2"});
+
+ Dali::Accessibility::TestEnableSC( true );
+
+ control.SetProperty( DevelControl::Property::ACCESSIBILITY_ROLE, button );
+ auto q = Dali::Accessibility::Accessible::Get( control );
+
+ DALI_TEST_EQUALS( button , q->GetRole(), TEST_LOCATION);
+ DALI_TEST_EQUALS( "toggle button" , q->GetRoleName(), TEST_LOCATION );
+
+ Dali::Accessibility::States states = q->GetStates();
+ DALI_TEST_EQUALS( true , (bool)states[Dali::Accessibility::State::VISIBLE], TEST_LOCATION);
+
+ DALI_TEST_EQUALS( "option1", q->GetDescription(), TEST_LOCATION );
+
+ auto i = dynamic_cast<Dali::Accessibility::Component*>(q);
+ if (i)
+ i->GrabHighlight();
+
+ control.SetProperty( Toolkit::Button::Property::LABEL, "ToggleButton2" );
+ DALI_TEST_EQUALS( "ToggleButton2", TestGetName( q->GetAddress() ), TEST_LOCATION );
+
+ Dali::Accessibility::TestEnableSC( false );
+
+ END_TEST;
+}
+
+int UtcDaliControlAccessibilityButtonLabel(void)
+{
+ ToolkitTestApplication application;
+
+ auto control = Dali::Toolkit::PushButton::New();
+ auto button = Dali::Accessibility::Role::PUSH_BUTTON;
+
+ Dali::Accessibility::TestEnableSC( true );
+
+ control.SetProperty( DevelControl::Property::ACCESSIBILITY_ROLE, button );
+
+ auto q = Dali::Accessibility::Accessible::Get( control );
+ auto i = dynamic_cast<Dali::Accessibility::Component*>(q);
+
+ if (i)
+ i->GrabHighlight();
+
+ control.SetProperty( Toolkit::Button::Property::LABEL, "Button2" );
+
+ DALI_TEST_EQUALS( "Button2" , TestGetName( q->GetAddress() ), TEST_LOCATION );
+
+ Dali::Accessibility::TestEnableSC( false );
+
+ END_TEST;
+}
+
int UtcDaliControlAccessibilityState(void)
{
ToolkitTestApplication application;
int UtcDaliControlAccessibilityModal(void)
{
ToolkitTestApplication application;
- auto control = TextSelectionPopup::New( NULL );
- auto states = DevelControl::GetAccessibilityStates(control);
- DALI_TEST_CHECK( states[ Dali::Accessibility::State::MODAL ] );
+ auto control = Dali::Toolkit::Popup::New();
+ auto q = Dali::Accessibility::Accessible::Get( control );
+
+ Dali::Accessibility::TestEnableSC( true );
+
+ auto states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
+ DALI_TEST_CHECK( states_by_bridge[Dali::Accessibility::State::MODAL] );
+
+ Dali::Accessibility::TestEnableSC( false );
END_TEST;
}
auto noneset = control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE );
DALI_TEST_EQUALS( Property::NONE, noneset.GetType(), TEST_LOCATION );
+ // negative testcase - trying to set unconvertible value
+ control.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, "deadbeef" );
+ noneset = control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE );
+ DALI_TEST_EQUALS( Property::NONE, noneset.GetType(), TEST_LOCATION );
+
auto q = Dali::Accessibility::Accessible::Get( control );
Dali::Accessibility::TestEnableSC( true );
auto states_by_bridge = Dali::Accessibility::States { TestGetStates( q->GetAddress() )};
- DALI_TEST_CHECK( states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
+ DALI_TEST_CHECK( !states_by_bridge[ Dali::Accessibility::State::HIGHLIGHTABLE ] );
control.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, true );
DALI_TEST_EQUALS( Property::BOOLEAN, control.GetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE ).GetType(), TEST_LOCATION );
auto controla = Control::New();
auto controlb = Control::New();
+ controla.Add(controlb);
+
+ controla.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, true );
+ controlb.SetProperty( DevelControl::Property::ACCESSIBILITY_HIGHLIGHTABLE, true );
Dali::Accessibility::TestEnableSC( true );
auto control = Control::New();
auto reading_info_type = DevelControl::GetAccessibilityReadingInfoType(control);
+
+ for ( auto i = 0u; i < 4; ++i)
+ DALI_TEST_CHECK ( reading_info_type[ static_cast< Dali::Accessibility::ReadingInfoType >( i ) ]);
+
+ reading_info_type[Dali::Accessibility::ReadingInfoType::DESCRIPTION] = false;
+ reading_info_type[Dali::Accessibility::ReadingInfoType::STATE] = false;
+ reading_info_type[Dali::Accessibility::ReadingInfoType::NAME] = false;
+ reading_info_type[Dali::Accessibility::ReadingInfoType::ROLE] = false;
+
+ DevelControl::SetAccessibilityReadingInfoType(control, reading_info_type);
+
+ reading_info_type = DevelControl::GetAccessibilityReadingInfoType(control);
+
+ for ( auto i = 0u; i < 4; ++i)
+ DALI_TEST_CHECK ( false == reading_info_type[ static_cast< Dali::Accessibility::ReadingInfoType >( i ) ]);
+
reading_info_type[Dali::Accessibility::ReadingInfoType::DESCRIPTION] = true;
reading_info_type[Dali::Accessibility::ReadingInfoType::STATE] = true;
reading_info_type[Dali::Accessibility::ReadingInfoType::NAME] = true;
TestGetIndexInParent( child_1_accessible -> GetAddress() );
DALI_ABORT("Object has parent, test abort");
}
- catch(Accessibility::TestDBusWrapper::error &){}
+ catch(TestDBusWrapper::error &){}
try
{
TestGetChildAtIndex( parent_accessible -> GetAddress(), -1 );
DALI_ABORT("Positive index, test abort");
}
- catch(Accessibility::TestDBusWrapper::error &){}
+ catch(TestDBusWrapper::error &){}
DALI_TEST_EQUALS( parent_accessible -> GetChildCount(), 0, TEST_LOCATION );
child_1_accessible -> GetIndexInParent();
DALI_ABORT("Object has parent, test abort");
}
- catch (std::domain_error &){}
+ catch (Dali::DaliException &){}
parent.Add(child_1);
parent.Add(child_2);
auto a = Dali::Accessibility::Accessible::Get( control );
auto b = dynamic_cast<Dali::Accessibility::Action*>( a );
- std::vector< std::string > actions { "activate", "accessibilityActivated", "ReadingSkipped", "ReadingCancelled", "ReadingStopped", "show", "hide" };
+ std::vector< std::string > actions { "activate", "accessibilityActivated", "ReadingSkipped", "ReadingCancelled", "ReadingStopped", "ReadingPaused", "ReadingResumed", "show", "hide" };
auto count = b -> GetActionCount();
- DALI_TEST_EQUALS( count, 7, TEST_LOCATION );
+ DALI_TEST_EQUALS( count, 9, TEST_LOCATION );
for (auto i = 0u; i<count; ++i)
{
DALI_TEST_EQUALS( b -> GetActionKeyBinding( i ), "", TEST_LOCATION );
}
- try
- {
- b ->GetActionDescription( count );
- DALI_ABORT( "Correct index, abort" );
- }
- catch( std::domain_error &){}
-
- try
- {
- b ->GetActionName( count );
- DALI_ABORT( "Correct index, abort" );
- }
- catch( std::domain_error &){}
-
- try
- {
- b ->GetLocalizedActionName( count );
- DALI_ABORT( "Correct index, abort" );
- }
- catch( std::domain_error &){}
-
- try
- {
- b ->GetActionKeyBinding( count );
- DALI_ABORT( "Correct index, abort" );
- }
- catch( std::domain_error &){}
+ // Empty strings should be returned for invalid indices
+ DALI_TEST_EQUALS(b->GetActionDescription(count), "", TEST_LOCATION);
+ DALI_TEST_EQUALS(b->GetActionName(count), "", TEST_LOCATION);
+ DALI_TEST_EQUALS(b->GetLocalizedActionName(count), "", TEST_LOCATION);
+ DALI_TEST_EQUALS(b->GetActionKeyBinding(count), "", TEST_LOCATION);
count = TestGetActionCount(b -> GetAddress());
- DALI_TEST_EQUALS( count, 7, TEST_LOCATION );
+ DALI_TEST_EQUALS( count, 9, TEST_LOCATION );
for (auto i = 0u; i<count; ++i)
{
DALI_TEST_EQUALS( TestGetActionKeyBinding( b->GetAddress(), i ), "", TEST_LOCATION );
}
- try
- {
- TestGetActionDescription( b->GetAddress(), count );
- DALI_ABORT( "Correct index, abort" );
- }
- catch( Dali::Accessibility::TestDBusWrapper::error ){}
-
- try
- {
- TestGetActionName( b->GetAddress(), count );
- DALI_ABORT( "Correct index, abort" );
- }
- catch( Dali::Accessibility::TestDBusWrapper::error ){}
-
- try
- {
- TestGetLocalizedActionName( b->GetAddress(), count );
- DALI_ABORT( "Correct index, abort" );
- }
- catch( Dali::Accessibility::TestDBusWrapper::error ){}
-
- try
- {
- TestGetActionKeyBinding( b->GetAddress(), count );
- DALI_ABORT( "Correct index, abort" );
- }
- catch( Dali::Accessibility::TestDBusWrapper::error ){}
-
+ DALI_TEST_EQUALS(TestGetActionDescription(b->GetAddress(), count), "", TEST_LOCATION);
+ DALI_TEST_EQUALS(TestGetActionName(b->GetAddress(), count), "", TEST_LOCATION);
+ DALI_TEST_EQUALS(TestGetLocalizedActionName(b->GetAddress(), count), "", TEST_LOCATION);
+ DALI_TEST_EQUALS(TestGetActionKeyBinding(b->GetAddress(), count), "", TEST_LOCATION);
Dali::Accessibility::TestEnableSC( false );
ToolkitTestApplication application;
Dali::Accessibility::TestEnableSC( true );
- thread_local std::vector< bool > actions_done { false, false, false, false };
+ thread_local std::vector< bool > actions_done { false, false, false, false, false, false };
auto control = Control::New( );
auto a = Dali::Accessibility::Accessible::Get( control );
auto b = dynamic_cast<Dali::Accessibility::Action*>( a );
- std::vector< std::string > actions { "activate", "accessibilityActivated", "ReadingSkipped", "ReadingCancelled", "ReadingStopped", "show", "hide" };
+ std::vector< std::string > actions { "activate", "accessibilityActivated", "ReadingSkipped", "ReadingCancelled", "ReadingStopped", "ReadingPaused", "ReadingResumed", "show", "hide" };
+
+ // Test calling action by name
+ DALI_TEST_CHECK( b -> DoAction( actions[2] ) ); // ReadingSkipped
+ DALI_TEST_CHECK( b -> DoAction( actions[4] ) ); // ReadingStopped
+ DALI_TEST_CHECK( b -> DoAction( actions[4] ) ); // ReadingStopped
- DALI_TEST_CHECK( b -> DoAction( actions[2] ) );
- DALI_TEST_CHECK( b -> DoAction( actions[4] ) );
- DALI_TEST_CHECK( b -> DoAction( actions[4] ) );
+ // Negative test of calling action with not defined name
+ DALI_TEST_CHECK( !b -> DoAction( "undefined" ) );
DevelControl::AccessibilityReadingSkippedSignal(control).Connect( [] () {
actions_done[ 1 ] = true;
DevelControl::AccessibilityReadingStoppedSignal(control).Connect( [] () {
actions_done[ 3 ] = true;
} );
+ DevelControl::AccessibilityReadingPausedSignal(control).Connect( [] () {
+ actions_done[ 4 ] = true;
+ } );
+ DevelControl::AccessibilityReadingResumedSignal(control).Connect( [] () {
+ actions_done[ 5 ] = true;
+ } );
DevelControl::AccessibilityActivateSignal(control).Connect( [] () {
actions_done[ 0 ] = true;
} );
+ // Test calling action by index
DALI_TEST_CHECK( b -> DoAction( 1 ) );
DALI_TEST_CHECK( b -> DoAction( 2 ) );
DALI_TEST_CHECK( b -> DoAction( 3 ) );
DALI_TEST_CHECK( b -> DoAction( 4 ) );
+ DALI_TEST_CHECK( b -> DoAction( 5 ) );
+ DALI_TEST_CHECK( b -> DoAction( 6 ) );
for ( auto i = 0u; i < actions_done.size(); ++i )
{
DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 2 ) );
DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 3 ) );
DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 4 ) );
+ DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 5 ) );
+ DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), 6 ) );
for ( auto i = 0u; i < actions_done.size(); ++i )
{
DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 2 ] ) );
DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 3 ] ) );
DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 4 ] ) );
+ DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 5 ] ) );
+ DALI_TEST_CHECK( TestDoAction( b -> GetAddress(), actions[ 6 ] ) );
for ( auto i = 0u; i < actions_done.size(); ++i )
DALI_TEST_CHECK( actions_done[ i ] );
END_TEST;
}
+
+void TestVoidCallback()
+{
+}
+
+int UtcDaliAccessibilitySignals(void)
+{
+ ToolkitTestApplication application;
+ ConnectionTracker connectionTracker;
+ Control control = Control::New();
+
+ DALI_TEST_CHECK( DevelControl::AccessibilityGetNameSignal(control).Empty() );
+ control.ConnectSignal( &connectionTracker, "getName", &TestVoidCallback );
+ DALI_TEST_CHECK( !DevelControl::AccessibilityGetNameSignal(control).Empty() );
+
+ DALI_TEST_CHECK( DevelControl::AccessibilityGetDescriptionSignal(control).Empty() );
+ control.ConnectSignal( &connectionTracker, "getDescription", &TestVoidCallback );
+ DALI_TEST_CHECK( !DevelControl::AccessibilityGetDescriptionSignal(control).Empty() );
+
+ DALI_TEST_CHECK( DevelControl::AccessibilityDoGestureSignal(control).Empty() );
+ control.ConnectSignal( &connectionTracker, "doGesture", &TestVoidCallback );
+ DALI_TEST_CHECK( !DevelControl::AccessibilityDoGestureSignal(control).Empty() );
+
+ END_TEST;
+}