[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Accessibility-Text.cpp
index 7bc4fe1..4389b90 100644 (file)
@@ -23,6 +23,9 @@
 #include <dali-toolkit/dali-toolkit.h>
 
 #include <dali/devel-api/adaptor-framework/accessibility.h>
+#include <dali/devel-api/atspi-interfaces/accessible.h>
+#include <dali/devel-api/atspi-interfaces/text.h>
+#include <dali-toolkit/internal/controls/text-controls/text-field-impl.h>
 #include <dali-toolkit/internal/controls/text-controls/text-editor-impl.h>
 
 #include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
@@ -141,7 +144,7 @@ int utcDaliAccessibilityTextEditorGetTextAtOffset(void)
   END_TEST;
 }
 
-int utcDaliAccessibilityTextEditorGetSetSelection(void)
+int utcDaliAccessibilityTextEditorGetSetRangeOfSelection(void)
 {
   ToolkitTestApplication application;
 
@@ -151,14 +154,14 @@ int utcDaliAccessibilityTextEditorGetSetSelection(void)
   DALI_TEST_CHECK( x );
   if( x )
   {
-    auto range = x->GetSelection( 0 );
+    auto range = x->GetRangeOfSelection( 0 );
     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
     DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
 
-    x->SetSelection( 0, 4, 9 );
+    x->SetRangeOfSelection( 0, 4, 9 );
     editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "exemplary_text" );
-    range = x->GetSelection( 0 );
+    range = x->GetRangeOfSelection( 0 );
 
     DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
@@ -178,17 +181,17 @@ int utcDaliAccessibilityTextEditorRemoveSelection(void)
   DALI_TEST_CHECK( x );
   if( x )
   {
-    auto range = x->GetSelection( 0 );
+    auto range = x->GetRangeOfSelection( 0 );
     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
 
-    x->SetSelection( 0, 4, 9 );
-    range = x->GetSelection( 0 );
+    x->SetRangeOfSelection( 0, 4, 9 );
+    range = x->GetRangeOfSelection( 0 );
     DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
 
     x->RemoveSelection( 0 );
-    range = x->GetSelection( 0 );
+    range = x->GetRangeOfSelection( 0 );
     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
   }
@@ -196,6 +199,50 @@ int utcDaliAccessibilityTextEditorRemoveSelection(void)
   END_TEST;
 }
 
+int utcDaliAccessibilityTextEditorGetRangeExtents(void)
+{
+  ToolkitTestApplication application;
+
+  auto editor = Dali::Toolkit::TextEditor::New();
+  auto q     = Dali::Accessibility::Accessible::Get( editor );
+  auto x     = dynamic_cast< Dali::Accessibility::Text* >( q );
+  DALI_TEST_CHECK( x );
+
+  if( x )
+  {
+    auto rangeExtents = x->GetRangeExtents( 0, 0, Dali::Accessibility::CoordinateType::WINDOW );
+    DALI_TEST_EQUALS( (int)rangeExtents.x, 0, TEST_LOCATION );
+    DALI_TEST_EQUALS( (int)rangeExtents.y, 0, TEST_LOCATION );
+    DALI_TEST_EQUALS( (int)rangeExtents.width, 0, TEST_LOCATION );
+    DALI_TEST_EQUALS( (int)rangeExtents.height, 0, TEST_LOCATION );
+
+    application.GetScene().Add( editor );
+
+    editor.SetProperty( Toolkit::TextEditor::Property::POINT_SIZE, 7.f );
+    editor.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) );
+    editor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
+    editor.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
+    editor.SetProperty( Toolkit::TextEditor::Property::TEXT, "text editor test sentence" );
+
+    // Avoid a crash when core load gl resources.
+    application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
+
+    // Render and notify
+    application.SendNotification();
+    application.Render();
+
+    auto characterCount = x->GetCharacterCount();
+    rangeExtents        = x->GetRangeExtents( 0, characterCount, Dali::Accessibility::CoordinateType::WINDOW );
+
+    DALI_TEST_EQUALS((int)rangeExtents.x >= 0, true, TEST_LOCATION);
+    DALI_TEST_EQUALS((int)rangeExtents.y >= 0, true, TEST_LOCATION);
+    DALI_TEST_EQUALS((int)rangeExtents.width <= 200, true, TEST_LOCATION);
+    DALI_TEST_EQUALS((int)rangeExtents.height <= 200, true, TEST_LOCATION);
+  }
+
+  END_TEST;
+}
+
 int utcDaliAccessibilityTextFieldGetName(void)
 {
   ToolkitTestApplication application;
@@ -221,6 +268,20 @@ int utcDaliAccessibilityTextFieldGetText(void)
     DALI_TEST_EQUALS( x->GetText( 0, 0 ), "", TEST_LOCATION );
     field.SetProperty( Toolkit::TextField::Property::TEXT, "exemplary_text" );
     DALI_TEST_EQUALS( x->GetText( 0, 9 ), "exemplary", TEST_LOCATION );
+
+    Dali::Property::Map hiddenInputSettings;
+    hiddenInputSettings[ Toolkit::HiddenInput::Property::MODE ] = Toolkit::HiddenInput::Mode::HIDE_ALL;
+
+    field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
+
+    DALI_TEST_EQUALS( x->GetName(), "", TEST_LOCATION );
+    DALI_TEST_EQUALS( x->GetText( 0, 9 ), "*********", TEST_LOCATION );
+
+    hiddenInputSettings[ Toolkit::HiddenInput::Property::SUBSTITUTE_CHARACTER ] = 0x23;
+    field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
+
+    DALI_TEST_EQUALS( x->GetName(), "", TEST_LOCATION );
+    DALI_TEST_EQUALS( x->GetText( 0, 9 ), "#########", TEST_LOCATION );
   }
 
   END_TEST;
@@ -294,12 +355,22 @@ int utcDaliAccessibilityTextFieldGetTextAtOffset(void)
     DALI_TEST_EQUALS( range.content, " test sentence", TEST_LOCATION );
     DALI_TEST_EQUALS( range.startOffset, 25, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 39, TEST_LOCATION );
+
+    Dali::Property::Map hiddenInputSettings;
+    hiddenInputSettings[ Toolkit::HiddenInput::Property::MODE ] = Toolkit::HiddenInput::Mode::HIDE_ALL;
+    hiddenInputSettings[ Toolkit::HiddenInput::Property::SUBSTITUTE_CHARACTER ] = 0x23;
+    field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
+    range = x->GetTextAtOffset( 8, Dali::Accessibility::TextBoundary::LINE );
+    DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
+    DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
+    DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
+
   }
 
   END_TEST;
 }
 
-int utcDaliAccessibilityTextFieldGetSetSelection(void)
+int utcDaliAccessibilityTextFieldGetSetRangeOfSelection(void)
 {
   ToolkitTestApplication application;
 
@@ -309,18 +380,27 @@ int utcDaliAccessibilityTextFieldGetSetSelection(void)
   DALI_TEST_CHECK( x );
   if( x )
   {
-    auto range = x->GetSelection( 0 );
+    auto range = x->GetRangeOfSelection( 0 );
     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
     DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
 
-    x->SetSelection( 0, 4, 9 );
+    x->SetRangeOfSelection( 0, 4, 9 );
     field.SetProperty( Toolkit::TextEditor::Property::TEXT, "exemplary_text" );
-    range = x->GetSelection( 0 );
+    range = x->GetRangeOfSelection( 0 );
 
     DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
     DALI_TEST_EQUALS( range.content, "plary", TEST_LOCATION );
+
+    Dali::Property::Map hiddenInputSettings;
+    hiddenInputSettings[ Toolkit::HiddenInput::Property::MODE ] = Toolkit::HiddenInput::Mode::HIDE_ALL;
+    field.SetProperty( Toolkit::TextField::Property::HIDDEN_INPUT_SETTINGS, hiddenInputSettings );
+
+    range = x->GetRangeOfSelection( 0 );
+    DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
+    DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
+    DALI_TEST_EQUALS( range.content, "*****", TEST_LOCATION );
   }
 
   END_TEST;
@@ -336,17 +416,17 @@ int utcDaliAccessibilityTextFieldRemoveSelection(void)
   DALI_TEST_CHECK( x );
   if( x )
   {
-    auto range = x->GetSelection( 0 );
+    auto range = x->GetRangeOfSelection( 0 );
     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
 
-    x->SetSelection( 0, 4, 9 );
-    range = x->GetSelection( 0 );
+    x->SetRangeOfSelection( 0, 4, 9 );
+    range = x->GetRangeOfSelection( 0 );
     DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
 
     x->RemoveSelection( 0 );
-    range = x->GetSelection( 0 );
+    range = x->GetRangeOfSelection( 0 );
     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
   }
@@ -354,6 +434,50 @@ int utcDaliAccessibilityTextFieldRemoveSelection(void)
   END_TEST;
 }
 
+int utcDaliAccessibilityTextFieldGetRangeExtents(void)
+{
+  ToolkitTestApplication application;
+
+  auto field = Dali::Toolkit::TextField::New();
+  auto q     = Dali::Accessibility::Accessible::Get( field );
+  auto x     = dynamic_cast< Dali::Accessibility::Text* >( q );
+  DALI_TEST_CHECK( x );
+
+  if( x )
+  {
+    auto rangeExtents = x->GetRangeExtents( 0, 0, Dali::Accessibility::CoordinateType::WINDOW );
+    DALI_TEST_EQUALS( (int)rangeExtents.x, 0, TEST_LOCATION );
+    DALI_TEST_EQUALS( (int)rangeExtents.y, 0, TEST_LOCATION );
+    DALI_TEST_EQUALS( (int)rangeExtents.width, 0, TEST_LOCATION );
+    DALI_TEST_EQUALS( (int)rangeExtents.height, 0, TEST_LOCATION );
+
+    application.GetScene().Add( field );
+
+    field.SetProperty( Toolkit::TextField::Property::POINT_SIZE, 7.f );
+    field.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) );
+    field.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
+    field.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
+    field.SetProperty( Toolkit::TextField::Property::TEXT, "text field test sentence" );
+
+    // Avoid a crash when core load gl resources.
+    application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
+
+    // Render and notify
+    application.SendNotification();
+    application.Render();
+
+    auto characterCount = x->GetCharacterCount();
+    rangeExtents        = x->GetRangeExtents( 0, characterCount, Dali::Accessibility::CoordinateType::WINDOW );
+
+    DALI_TEST_EQUALS((int)rangeExtents.x >= 0, true, TEST_LOCATION);
+    DALI_TEST_EQUALS((int)rangeExtents.y >= 0, true, TEST_LOCATION);
+    DALI_TEST_EQUALS((int)rangeExtents.width <= 200, true, TEST_LOCATION);
+    DALI_TEST_EQUALS((int)rangeExtents.height <= 200, true, TEST_LOCATION);
+  }
+
+  END_TEST;
+}
+
 int utcDaliAccessibilityTextLabelGetName(void)
 {
   ToolkitTestApplication application;
@@ -467,20 +591,65 @@ int utcDaliAccessibilityTextLabelRemoveSelection( void )
   DALI_TEST_CHECK( x );
   if( x )
   {
-    auto range = x->GetSelection( 0 );
+    auto range = x->GetRangeOfSelection( 0 );
     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
 
-    x->SetSelection( 0, 4, 9 );
-    range = x->GetSelection( 0 );
+    x->SetRangeOfSelection( 0, 4, 9 );
+    range = x->GetRangeOfSelection( 0 );
     DALI_TEST_EQUALS( range.startOffset, 4, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 9, TEST_LOCATION );
 
     x->RemoveSelection( 0 );
-    range = x->GetSelection( 0 );
+    range = x->GetRangeOfSelection( 0 );
     DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
     DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
   }
 
   END_TEST;
 }
+
+int utcDaliAccessibilityTextLabelGetRangeExtents(void)
+{
+  ToolkitTestApplication application;
+
+  auto label = Dali::Toolkit::TextLabel::New();
+  auto q     = Dali::Accessibility::Accessible::Get( label );
+  auto x     = dynamic_cast< Dali::Accessibility::Text* >( q );
+  DALI_TEST_CHECK( x );
+
+  if( x )
+  {
+    auto rangeExtents = x->GetRangeExtents( 0, 0, Dali::Accessibility::CoordinateType::WINDOW );
+    DALI_TEST_EQUALS( (int)rangeExtents.x, 0, TEST_LOCATION );
+    DALI_TEST_EQUALS( (int)rangeExtents.y, 0, TEST_LOCATION );
+    DALI_TEST_EQUALS( (int)rangeExtents.width, 0, TEST_LOCATION );
+    DALI_TEST_EQUALS( (int)rangeExtents.height, 0, TEST_LOCATION );
+
+    application.GetScene().Add( label );
+
+    label.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, 7.f );
+    label.SetProperty( Toolkit::TextLabel::Property::MULTI_LINE, true );
+    label.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) );
+    label.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
+    label.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
+    label.SetProperty( Toolkit::TextLabel::Property::TEXT, "text label\n test sentence" );
+
+    // Avoid a crash when core load gl resources.
+    application.GetGlAbstraction().SetCheckFramebufferStatusResult(GL_FRAMEBUFFER_COMPLETE);
+
+    // Render and notify
+    application.SendNotification();
+    application.Render();
+
+    auto characterCount = x->GetCharacterCount();
+    rangeExtents        = x->GetRangeExtents( 0, characterCount, Dali::Accessibility::CoordinateType::WINDOW );
+
+    DALI_TEST_EQUALS((int)rangeExtents.x >= 0, true, TEST_LOCATION);
+    DALI_TEST_EQUALS((int)rangeExtents.y >= 0, true, TEST_LOCATION);
+    DALI_TEST_EQUALS((int)rangeExtents.width <= 200, true, TEST_LOCATION);
+    DALI_TEST_EQUALS((int)rangeExtents.height <= 200, true, TEST_LOCATION);
+  }
+
+  END_TEST;
+}