[AT-SPI] Fix EditableTextControlAccessible::InsertText()
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit-internal / utc-Dali-Accessibility-Controls.cpp
index f3d97a9..29aa513 100644 (file)
@@ -4,7 +4,13 @@
 
 #include <dali-toolkit/devel-api/controls/control-devel.h>
 #include <dali-toolkit/devel-api/controls/table-view/table-view.h>
-#include <dali/devel-api/adaptor-framework/accessibility-impl.h>
+#include <dali/devel-api/adaptor-framework/accessibility-bridge.h>
+#include <dali/devel-api/atspi-interfaces/accessible.h>
+#include <dali/devel-api/atspi-interfaces/action.h>
+#include <dali/devel-api/atspi-interfaces/editable-text.h>
+#include <dali/devel-api/atspi-interfaces/hyperlink.h>
+#include <dali/devel-api/atspi-interfaces/hypertext.h>
+#include <dali/devel-api/atspi-interfaces/text.h>
 
 #include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
 
@@ -30,7 +36,7 @@ int UtcDaliControlPropertyAccessibilityTranslationDomain(void)
   auto control = Control::New();
 
   auto accessibility_translation_domain = DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN;
-  DALI_TEST_EQUALS( Property::NONE , control.GetProperty( accessibility_translation_domain ).GetType(), TEST_LOCATION );
+  DALI_TEST_EQUALS("", control.GetProperty<std::string>(accessibility_translation_domain), TEST_LOCATION);
 
   control.SetProperty( accessibility_translation_domain, "translation_domain_test_1" );
   DALI_TEST_EQUALS( "translation_domain_test_1" , control.GetProperty( accessibility_translation_domain ).Get<  std::string  >(), TEST_LOCATION );
@@ -516,6 +522,39 @@ int UtcDaliAccessibilityBloomViewConstructor(void)
 }
 
 #include <dali-toolkit/internal/controls/text-controls/text-field-impl.h>
+#include <dali-toolkit/internal/controls/text-controls/text-anchor-impl.h>
+int UtcDaliAccessibilityTextAnchor(void)
+{
+  ToolkitTestApplication application;
+
+  auto textanchor = TextAnchor::New();
+  DALI_TEST_CHECK( textanchor );
+
+  auto textlabel = TextLabel::New();
+  DALI_TEST_CHECK( textlabel );
+
+  Dali::Accessibility::TestEnableSC( true );
+
+  textlabel.Add(textanchor);
+  auto accessible = Dali::Accessibility::Accessible::Get( textanchor );
+  DALI_TEST_CHECK( accessible );
+  auto hyperlink = dynamic_cast< Dali::Accessibility::Hyperlink* >( accessible );
+  DALI_TEST_CHECK( hyperlink );
+  textanchor.SetProperty( Toolkit::TextAnchor::Property::URI, "https://www.tizen.org" );
+  DALI_TEST_EQUALS( hyperlink->IsValid(), true, TEST_LOCATION );
+  auto action = dynamic_cast<Dali::Accessibility::Action*>( accessible );
+  // activation of valid hyperlink
+  DALI_TEST_CHECK( action->DoAction( "accessibilityActivated" ) );
+  // making hyperlink invalid
+  textanchor.SetProperty( Toolkit::TextAnchor::Property::URI, "" );
+  DALI_TEST_EQUALS( hyperlink->IsValid(), false, TEST_LOCATION );
+  DALI_TEST_CHECK( !action->DoAction( "accessibilityActivated" ) );
+
+  Dali::Accessibility::TestEnableSC( false );
+
+  END_TEST;
+}
+
 int UtcDaliAccessibilityTextField(void)
 {
   ToolkitTestApplication application;
@@ -540,9 +579,9 @@ int UtcDaliAccessibilityTextField(void)
   auto text = dynamic_cast< Dali::Accessibility::Text* >( accessible );
   DALI_TEST_CHECK( text );
   DALI_TEST_EQUALS( text->GetText( 0, 10 ), "", TEST_LOCATION );
-  DALI_TEST_EQUALS( text->SetCaretOffset(100), false, TEST_LOCATION );
-  DALI_TEST_EQUALS( text->SetCaretOffset(2), true, TEST_LOCATION );
-  DALI_TEST_EQUALS( text->GetCaretOffset(), 2, TEST_LOCATION );
+  DALI_TEST_EQUALS( text->SetCursorOffset(100), false, TEST_LOCATION );
+  DALI_TEST_EQUALS( text->SetCursorOffset(2), true, TEST_LOCATION );
+  DALI_TEST_EQUALS( text->GetCursorOffset(), 2, TEST_LOCATION );
 
   auto editabletext = dynamic_cast< Dali::Accessibility::EditableText* >( accessible );
   DALI_TEST_CHECK( editabletext );
@@ -552,13 +591,75 @@ int UtcDaliAccessibilityTextField(void)
   DALI_TEST_EQUALS( editabletext->CutText( 1, 3 ), true, TEST_LOCATION );
   DALI_TEST_EQUALS( text->GetText( 0, 1 ), "t", TEST_LOCATION );
 
-  auto range = text->GetSelection( 1 );
+  auto range = text->GetRangeOfSelection( 1 );
   DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
   DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
   DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
-  DALI_TEST_EQUALS( text->SetSelection( 1, 0, 1 ), false, TEST_LOCATION );
+  DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION );
   DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION );
 
+  // Insert into empty field
+  DALI_TEST_EQUALS(editabletext->SetTextContents(""), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(editabletext->InsertText(1, "xyz"), false, TEST_LOCATION);
+  DALI_TEST_EQUALS(editabletext->InsertText(0, "abc"), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(text->GetText(0, 3), "abc", TEST_LOCATION);
+
+  // Append at end
+  DALI_TEST_EQUALS(editabletext->InsertText(3, "xyz"), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(text->GetText(0, 6), "abcxyz", TEST_LOCATION);
+
+  DALI_TEST_EQUALS(editabletext->SetTextContents("adef"), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(editabletext->InsertText(1, "bc"), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(text->GetText(0, 6), "abcdef", TEST_LOCATION);
+  DALI_TEST_EQUALS(editabletext->DeleteText(5, 1), false, TEST_LOCATION);
+  DALI_TEST_EQUALS(editabletext->DeleteText(1, 5), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(text->GetText(0, 2), "af", TEST_LOCATION);
+
+  auto hypertext = dynamic_cast< Dali::Accessibility::Hypertext* >( accessible );
+  DALI_TEST_CHECK( hypertext );
+  // text without the anchors markup and ENABLE_MARKUP property set (by default) to false
+  DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION );
+  // text with the anchors markup and ENABLE_MARKUP property set (by default) to false
+  textfield.SetProperty( Toolkit::TextField::Property::TEXT, "12345<a href = 'https://www.tizen.org'>anchor1</a>12345<a href = 'https://www.tizen.org' >veryveryveryveryveryveryveryverylonganchor2</a>12345<a href = 'https://www.tizen.org'>anchor3</a>12345" );
+  DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION );
+  // text with the anchors markup and ENABLE_MARKUP property set to true
+  textfield.SetProperty( Toolkit::TextField::Property::ENABLE_MARKUP, true);
+  DALI_TEST_EQUALS( hypertext->GetLinkCount(), 3, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), 0, TEST_LOCATION ); //1st anchor index
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 17 ), 1, TEST_LOCATION ); //2nd anchor index
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 66 ), 2, TEST_LOCATION ); //3rd anchor index
+  DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
+  auto hyperlink = hypertext->GetLink( 0 );
+  DALI_TEST_CHECK ( hyperlink );
+  DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 5, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 12, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetAnchorCount(), 1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetAnchorUri( 0 ), "https://www.tizen.org", TEST_LOCATION );
+  auto anchorAccessible = hyperlink->GetAnchorAccessible( 0 );
+  DALI_TEST_EQUALS( hyperlink == anchorAccessible, true, TEST_LOCATION );
+  hyperlink = hypertext->GetLink( 1 );
+  DALI_TEST_CHECK ( hyperlink );
+  DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 17, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 60, TEST_LOCATION );
+  hyperlink = hypertext->GetLink( 2 );
+  DALI_TEST_CHECK ( hyperlink );
+  DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 65, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 72, TEST_LOCATION );
+
   Dali::Accessibility::TestEnableSC( false );
 
   END_TEST;
@@ -589,9 +690,9 @@ int UtcDaliAccessibilityTextEditor(void)
   auto text = dynamic_cast< Dali::Accessibility::Text* >( accessible );
   DALI_TEST_CHECK( text );
   DALI_TEST_EQUALS( text->GetText( 0, 10 ), "", TEST_LOCATION );
-  DALI_TEST_EQUALS( text->SetCaretOffset(100), false, TEST_LOCATION );
-  DALI_TEST_EQUALS( text->SetCaretOffset(2), true, TEST_LOCATION );
-  DALI_TEST_EQUALS( text->GetCaretOffset(), 2, TEST_LOCATION );
+  DALI_TEST_EQUALS( text->SetCursorOffset(100), false, TEST_LOCATION );
+  DALI_TEST_EQUALS( text->SetCursorOffset(2), true, TEST_LOCATION );
+  DALI_TEST_EQUALS( text->GetCursorOffset(), 2, TEST_LOCATION );
 
   auto editabletext = dynamic_cast< Dali::Accessibility::EditableText* >( accessible );
   DALI_TEST_CHECK( editabletext );
@@ -601,13 +702,75 @@ int UtcDaliAccessibilityTextEditor(void)
   DALI_TEST_EQUALS( editabletext->CutText( 1, 3 ), true, TEST_LOCATION );
   DALI_TEST_EQUALS( text->GetText( 0, 1 ), "t", TEST_LOCATION );
 
-  auto range = text->GetSelection( 1 );
+  auto range = text->GetRangeOfSelection( 1 );
   DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
   DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
   DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
-  DALI_TEST_EQUALS( text->SetSelection( 1, 0, 1 ), false, TEST_LOCATION );
+  DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION );
   DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION );
 
+  // Insert into empty field
+  DALI_TEST_EQUALS(editabletext->SetTextContents(""), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(editabletext->InsertText(1, "xyz"), false, TEST_LOCATION);
+  DALI_TEST_EQUALS(editabletext->InsertText(0, "abc"), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(text->GetText(0, 3), "abc", TEST_LOCATION);
+
+  // Append at end
+  DALI_TEST_EQUALS(editabletext->InsertText(3, "xyz"), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(text->GetText(0, 6), "abcxyz", TEST_LOCATION);
+
+  DALI_TEST_EQUALS(editabletext->SetTextContents("adef"), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(editabletext->InsertText(1, "bc"), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(text->GetText(0, 6), "abcdef", TEST_LOCATION);
+  DALI_TEST_EQUALS(editabletext->DeleteText(5, 1), false, TEST_LOCATION);
+  DALI_TEST_EQUALS(editabletext->DeleteText(1, 5), true, TEST_LOCATION);
+  DALI_TEST_EQUALS(text->GetText(0, 2), "af", TEST_LOCATION);
+
+  auto hypertext = dynamic_cast< Dali::Accessibility::Hypertext* >( accessible );
+  DALI_TEST_CHECK( hypertext );
+  // text without the anchors markup and ENABLE_MARKUP property set (by default) to false
+  DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION );
+  // text with the anchors markup and ENABLE_MARKUP property set (by default) to false
+  texteditor.SetProperty( Toolkit::TextEditor::Property::TEXT, "12345<a href = 'https://www.tizen.org'>anchor1</a>12345<a href = 'https://www.tizen.org' >veryveryveryveryveryveryveryverylonganchor2</a>12345<a href = 'https://www.tizen.org'>anchor3</a>12345" );
+  DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION );
+  // text with the anchors markup and ENABLE_MARKUP property set to true
+  texteditor.SetProperty( Toolkit::TextEditor::Property::ENABLE_MARKUP, true);
+  DALI_TEST_EQUALS( hypertext->GetLinkCount(), 3, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), 0, TEST_LOCATION ); //1st anchor index
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 17 ), 1, TEST_LOCATION ); //2nd anchor index
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 66 ), 2, TEST_LOCATION ); //3rd anchor index
+  DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
+  auto hyperlink = hypertext->GetLink( 0 );
+  DALI_TEST_CHECK ( hyperlink );
+  DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 5, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 12, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetAnchorCount(), 1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetAnchorUri( 0 ), "https://www.tizen.org", TEST_LOCATION );
+  auto anchorAccessible = hyperlink->GetAnchorAccessible( 0 );
+  DALI_TEST_EQUALS( hyperlink == anchorAccessible, true, TEST_LOCATION );
+  hyperlink = hypertext->GetLink( 1 );
+  DALI_TEST_CHECK ( hyperlink );
+  DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 17, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 60, TEST_LOCATION );
+  hyperlink = hypertext->GetLink( 2 );
+  DALI_TEST_CHECK ( hyperlink );
+  DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 65, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 72, TEST_LOCATION );
+
   Dali::Accessibility::TestEnableSC( false );
 
   END_TEST;
@@ -636,16 +799,61 @@ int UtcDaliAccessibilityTextLabel(void)
   DALI_TEST_CHECK( text );
   DALI_TEST_EQUALS( text->GetText( 0, 10 ), "", TEST_LOCATION );
   DALI_TEST_EQUALS( text->GetText( 0, 4 ), "test", TEST_LOCATION );
-  DALI_TEST_EQUALS( text->SetCaretOffset(0), false, TEST_LOCATION );
-  DALI_TEST_EQUALS( text->GetCaretOffset(), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS( text->SetCursorOffset(0), false, TEST_LOCATION );
+  DALI_TEST_EQUALS( text->GetCursorOffset(), 0, TEST_LOCATION );
 
-  auto range = text->GetSelection( 1 );
+  auto range = text->GetRangeOfSelection( 1 );
   DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION );
   DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION );
   DALI_TEST_EQUALS( range.content, "", TEST_LOCATION );
-  DALI_TEST_EQUALS( text->SetSelection( 1, 0, 1 ), false, TEST_LOCATION );
+  DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION );
   DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION );
 
+  auto hypertext = dynamic_cast< Dali::Accessibility::Hypertext* >( accessible );
+  DALI_TEST_CHECK( hypertext );
+  // text without the anchors markup and ENABLE_MARKUP property set (by default) to false
+  DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION );
+  // text with the anchors markup and ENABLE_MARKUP property set (by default) to false
+  textlabel.SetProperty( Toolkit::TextLabel::Property::TEXT, "12345<a href = 'https://www.tizen.org'>anchor1</a>12345<a href = 'https://www.tizen.org' >veryveryveryveryveryveryveryverylonganchor2</a>12345<a href = 'https://www.tizen.org'>anchor3</a>12345" );
+  DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION );
+  // text with the anchors markup and ENABLE_MARKUP property set to true
+  textlabel.SetProperty( Toolkit::TextLabel::Property::ENABLE_MARKUP, true);
+  DALI_TEST_EQUALS( hypertext->GetLinkCount(), 3, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), 0, TEST_LOCATION ); //1st anchor index
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 17 ), 1, TEST_LOCATION ); //2nd anchor index
+  DALI_TEST_EQUALS( hypertext->GetLinkIndex( 66 ), 2, TEST_LOCATION ); //3rd anchor index
+  DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION );
+  auto hyperlink = hypertext->GetLink( 0 );
+  DALI_TEST_CHECK ( hyperlink );
+  DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 5, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 12, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetAnchorCount(), 1, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetAnchorUri( 0 ), "https://www.tizen.org", TEST_LOCATION );
+  auto anchorAccessible = hyperlink->GetAnchorAccessible( 0 );
+  DALI_TEST_EQUALS( hyperlink == anchorAccessible, true, TEST_LOCATION );
+  hyperlink = hypertext->GetLink( 1 );
+  DALI_TEST_CHECK ( hyperlink );
+  DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 17, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 60, TEST_LOCATION );
+  hyperlink = hypertext->GetLink( 2 );
+  DALI_TEST_CHECK ( hyperlink );
+  DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 65, TEST_LOCATION );
+  DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 72, TEST_LOCATION );
+
   Dali::Accessibility::TestEnableSC( false );
 
   END_TEST;