+ DALI_TEST_EQUALS(underlineRuns[3u].glyphRun.glyphIndex, 5u, TEST_LOCATION);
+ DALI_TEST_EQUALS(underlineRuns[4u].glyphRun.glyphIndex, 6u, TEST_LOCATION);
+
+ END_TEST;
+}
+
+int UtcDaliTextEditorMarkupUnderlineAttributes(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline(" UtcDaliTextEditorMarkupUnderlineAttributes ");
+
+ TextEditor textEditor = TextEditor::New();
+
+ application.GetScene().Add(textEditor);
+
+ std::string testText =
+ "start<u>ABC1</u>then"
+ "<u type='solid'>ABC2</u>then"
+ "<u type='dashed'>ABC3</u>then"
+ "<u type='double'>ABC4</u>then"
+ "<u color='green'>ABC5</u>then"
+ "<u height='5.0f'>ABC6</u>then"
+ "<u type='dashed' dash-gap='3.0f'>ABC7</u>then"
+ "<u type='dashed' dash-width='4.0f'>ABC8</u>then"
+ "<u color='blue' type='dashed' height='4.0f' dash-gap='2.0f' dash-width='3.0f'>ABC9</u>end"
+
+ ;
+
+ textEditor.SetProperty(TextEditor::Property::TEXT, testText);
+ textEditor.SetProperty(TextEditor ::Property::ENABLE_MARKUP, true);
+
+ application.SendNotification();
+ application.Render();
+
+ const uint32_t NUMBER_OF_CASES = 9u;
+ uint32_t expectedNumberOfUnderlinedGlyphs = 36u;
+
+ Toolkit::Internal::TextEditor& textEditorImpl = GetImpl(textEditor);
+ const Text::Length numberOfUnderlineRuns = textEditorImpl.GetTextController()->GetTextModel()->GetNumberOfUnderlineRuns();
+
+ DALI_TEST_EQUALS(numberOfUnderlineRuns, expectedNumberOfUnderlinedGlyphs, TEST_LOCATION);
+
+ Vector<UnderlinedGlyphRun> underlineRuns;
+ underlineRuns.Resize(numberOfUnderlineRuns);
+ textEditorImpl.GetTextController()->GetTextModel()->GetUnderlineRuns(underlineRuns.Begin(), 0u, numberOfUnderlineRuns);
+
+ struct DataOfCase
+ {
+ std::string title;
+ uint32_t startIndex;
+ uint32_t endIndex;
+ GlyphIndex startGlyphIndex;
+ GlyphIndex endGlyphIndex;
+ UnderlineStyleProperties properties;
+ };
+ DataOfCase data[] =
+ {
+ //<u>ABC1</u>
+ {"<u>ABC1</u>",
+ 0u,
+ 3u,
+ 5u,
+ 8u,
+ {
+ Text::Underline::SOLID,
+ Color::BLACK,
+ 0u,
+ 1u,
+ 2u,
+ false,
+ false,
+ false,
+ false,
+ false,
+ }},
+
+ //<u type='solid'>ABC2</u>
+ {"<u type='solid'>ABC2</u>",
+ 4u,
+ 7u,
+ 13u,
+ 16u,
+ {
+ Text::Underline::SOLID,
+ Color::BLACK,
+ 0u,
+ 1u,
+ 2u,
+ true,
+ false,
+ false,
+ false,
+ false,
+ }},
+
+ //<u type='dashed'>ABC3</u>
+ {"<u type='dashed'>ABC3</u>",
+ 8u,
+ 11u,
+ 21u,
+ 24u,
+ {
+ Text::Underline::DASHED,
+ Color::BLACK,
+ 0u,
+ 1u,
+ 2u,
+ true,
+ false,
+ false,
+ false,
+ false,
+ }},
+
+ //<u type='double'>ABC4</u>
+ {"<u type='double'>ABC4</u>",
+ 12u,
+ 15u,
+ 29u,
+ 32u,
+ {
+ Text::Underline::DOUBLE,
+ Color::BLACK,
+ 0u,
+ 1u,
+ 2u,
+ true,
+ false,
+ false,
+ false,
+ false,
+ }},
+
+ //<u color='green'>ABC5</u>
+ {"<u color='green'>ABC5</u>",
+ 16u,
+ 19u,
+ 37u,
+ 40u,
+ {
+ Text::Underline::SOLID,
+ Color::GREEN,
+ 0u,
+ 1u,
+ 2u,
+ false,
+ true,
+ false,
+ false,
+ false,
+ }},
+
+ //<u height='5.0f'>ABC6</u>
+ {"<u height='5.0f'>ABC6</u>",
+ 20u,
+ 23u,
+ 45u,
+ 48u,
+ {
+ Text::Underline::SOLID,
+ Color::BLACK,
+ 5u,
+ 1u,
+ 2u,
+ false,
+ false,
+ true,
+ false,
+ false,
+ }},
+
+ //<u type='dashed' dash-gap='3.0f'>ABC7</u>
+ {"<u type='dashed' dash-gap='3.0f'>ABC7</u>",
+ 24u,
+ 27u,
+ 53u,
+ 56u,
+ {
+ Text::Underline::DASHED,
+ Color::BLACK,
+ 0u,
+ 3u,
+ 2u,
+ true,
+ false,
+ false,
+ true,
+ false,
+ }},
+
+ //<u type='dashed' dash-width='4.0f'>ABC8</u>
+ {"<u type='dashed' dash-width='4.0f'>ABC8</u>",
+ 28u,
+ 31u,
+ 61u,
+ 64u,
+ {
+ Text::Underline::DASHED,
+ Color::BLACK,
+ 0u,
+ 1u,
+ 4u,
+ true,
+ false,
+ false,
+ false,
+ true,
+ }},
+
+ //<u color='blue' type='dashed' height='4.0f' dash-gap='2.0f' dash-width='3.0f'>
+ {"<u color='blue' type='dashed' height='4.0f' dash-gap='2.0f' dash-width='3.0f'>",
+ 32u,
+ 35u,
+ 69u,
+ 72u,
+ {
+ Text::Underline::DASHED,
+ Color::BLUE,
+ 4u,
+ 2u,
+ 3u,
+ true,
+ true,
+ true,
+ true,
+ true,
+ }},
+
+ };
+
+ for(uint32_t i = 0; i < NUMBER_OF_CASES; i++)
+ {
+ tet_infoline(data[i].title.c_str());
+ DALI_TEST_EQUALS(underlineRuns[data[i].startIndex].glyphRun.glyphIndex, data[i].startGlyphIndex, TEST_LOCATION);
+ DALI_TEST_EQUALS(underlineRuns[data[i].endIndex].glyphRun.glyphIndex, data[i].endGlyphIndex, TEST_LOCATION);
+
+ DALI_TEST_CHECK(data[i].properties == underlineRuns[data[i].startIndex].properties);
+ DALI_TEST_CHECK(data[i].properties == underlineRuns[data[i].endIndex].properties);
+ }