2 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 #include <dali-toolkit-test-suite-utils.h>
23 #include <dali-toolkit/dali-toolkit.h>
24 #include <dali-toolkit/devel-api/text/spannable-string.h>
25 #include <dali-toolkit/devel-api/text/spans/foreground-color-span.h>
28 using namespace Toolkit;
30 int UtcDaliToolkitTextSpannableStringNew(void)
32 ToolkitTestApplication application;
33 tet_infoline(" UtcDaliToolkitTextSpannableStringNew");
35 Text::SpannableString spannableString = Text::SpannableString::New("Hello مرحبا");
37 DALI_TEST_CHECK(spannableString);
42 int UtcDaliToolkitTextSpannableStringGetCharacters(void)
44 ToolkitTestApplication application;
45 tet_infoline(" UtcDaliToolkitTextSpannableStringGetCharacters");
47 Text::SpannableString spannableString = Text::SpannableString::New("Hello مرحبا");
48 DALI_TEST_CHECK(spannableString);
50 Vector<uint32_t> expectedChars;
51 expectedChars.PushBack('H');
52 expectedChars.PushBack('e');
53 expectedChars.PushBack('l');
54 expectedChars.PushBack('l');
55 expectedChars.PushBack('o');
56 expectedChars.PushBack(' ');
57 expectedChars.PushBack(0x0645); //'م'
58 expectedChars.PushBack(0x0631); //'ر'
59 expectedChars.PushBack(0x062D); //'ح'
60 expectedChars.PushBack(0x0628); //'ب'
61 expectedChars.PushBack(0x0627); //'ا'
63 auto chars = spannableString.GetCharacters();
64 DALI_TEST_EQUALS(expectedChars.Size(), chars.Size(), TEST_LOCATION);
66 for(uint32_t i = 0; i < expectedChars.Size(); i++)
68 DALI_TEST_EQUALS(expectedChars[i], chars[i], TEST_LOCATION);
74 int UtcDaliToolkitTextSpannableStringGetNumberOfCharacters(void)
76 ToolkitTestApplication application;
77 tet_infoline(" UtcDaliToolkitTextSpannableStringGetNumberOfCharacters");
79 Text::SpannableString spannableString = Text::SpannableString::New("Hello مرحبا");
80 DALI_TEST_CHECK(spannableString);
82 DALI_TEST_EQUALS(11u, spannableString.GetNumberOfCharacters(), TEST_LOCATION);
87 int UtcDaliToolkitTextSpannableStringToString(void)
89 ToolkitTestApplication application;
90 tet_infoline(" UtcDaliToolkitTextSpannableStringToString");
91 std::string text = "Hello مرحبا";
93 Text::SpannableString spannableString = Text::SpannableString::New(text);
94 DALI_TEST_CHECK(spannableString);
96 DALI_TEST_EQUALS(text, spannableString.ToString(), TEST_LOCATION);
101 int UtcDaliToolkitTextSpannableStringAttachSpan(void)
103 ToolkitTestApplication application;
104 tet_infoline(" UtcDaliToolkitTextSpannableStringAttachSpan");
106 Text::SpannableString spannableString = Text::SpannableString::New("Hello مرحبا");
107 DALI_TEST_CHECK(spannableString);
109 auto greenSpan = Dali::Toolkit::Text::ForegroundColorSpan::New(Color::GREEN);
111 auto isAddedGreen = spannableString.AttachSpan(
113 Dali::Toolkit::Text::Range::New(5u, 7u));
114 DALI_TEST_CHECK(isAddedGreen);
116 auto isAddedBlue = spannableString.AttachSpan(
117 Dali::Toolkit::Text::ForegroundColorSpan::New(Color::BLUE),
118 Dali::Toolkit::Text::Range::New(4u, 2u));
119 DALI_TEST_CHECK(isAddedBlue);
121 auto isAddedRed = spannableString.AttachSpan(
122 Dali::Toolkit::Text::ForegroundColorSpan::New(Color::RED),
123 Dali::Toolkit::Text::Range::New(15u, 2u));
124 DALI_TEST_CHECK(!isAddedRed);
129 int UtcDaliToolkitTextSpannableStringDetachSpan(void)
131 ToolkitTestApplication application;
132 tet_infoline(" UtcDaliToolkitTextSpannableStringDetachSpan");
134 Text::SpannableString spannableString = Text::SpannableString::New("Hello مرحبا");
135 DALI_TEST_CHECK(spannableString);
137 auto greenSpan = Dali::Toolkit::Text::ForegroundColorSpan::New(Color::GREEN);
139 auto isAddedGreen = spannableString.AttachSpan(
141 Dali::Toolkit::Text::Range::New(5u, 7u));
142 DALI_TEST_CHECK(isAddedGreen);
144 auto isAddedBlue = spannableString.AttachSpan(
145 Dali::Toolkit::Text::ForegroundColorSpan::New(Color::BLUE),
146 Dali::Toolkit::Text::Range::New(4u, 2u));
147 DALI_TEST_CHECK(isAddedBlue);
149 auto isRemovedGreen = spannableString.DetachSpan(greenSpan);
150 DALI_TEST_CHECK(isRemovedGreen);
152 auto isRemovedGreen2 = spannableString.DetachSpan(greenSpan);
153 DALI_TEST_CHECK(!isRemovedGreen2);
158 int UtcDaliToolkitTextSpannableStringGetAllSpans(void)
160 ToolkitTestApplication application;
161 tet_infoline(" UtcDaliToolkitTextSpannableStringGetAllSpans");
163 Text::SpannableString spannableString = Text::SpannableString::New("Hello مرحبا");
164 DALI_TEST_CHECK(spannableString);
166 auto greenSpan = Dali::Toolkit::Text::ForegroundColorSpan::New(Color::GREEN);
167 spannableString.AttachSpan(
169 Dali::Toolkit::Text::Range::New(5u, 7u));
171 auto blueSpan = Dali::Toolkit::Text::ForegroundColorSpan::New(Color::BLUE);
172 spannableString.AttachSpan(
174 Dali::Toolkit::Text::Range::New(4u, 2u));
176 auto redSpan = Dali::Toolkit::Text::ForegroundColorSpan::New(Color::RED);
177 spannableString.AttachSpan(
179 Dali::Toolkit::Text::Range::New(15u, 2u));
181 auto spans = spannableString.GetAllSpans();
183 DALI_TEST_EQUALS(2u, spans.size(), TEST_LOCATION);
185 DALI_TEST_EQUALS(greenSpan, spans[0], TEST_LOCATION);
186 DALI_TEST_EQUALS(blueSpan, spans[1], TEST_LOCATION);
191 int UtcDaliToolkitTextSpannableStringRetrieveAllSpansAndRanges(void)
193 ToolkitTestApplication application;
194 tet_infoline(" UtcDaliToolkitTextSpannableStringRetrieveAllSpansAndRanges");
196 Text::SpannableString spannableString = Text::SpannableString::New("Hello مرحبا");
197 DALI_TEST_CHECK(spannableString);
199 auto greenSpan = Dali::Toolkit::Text::ForegroundColorSpan::New(Color::GREEN);
200 auto greenRange = Dali::Toolkit::Text::Range::New(5u, 7u);
201 spannableString.AttachSpan(
205 auto blueSpan = Dali::Toolkit::Text::ForegroundColorSpan::New(Color::BLUE);
206 auto blueRange = Dali::Toolkit::Text::Range::New(4u, 2u);
207 spannableString.AttachSpan(
211 auto redSpan = Dali::Toolkit::Text::ForegroundColorSpan::New(Color::RED);
212 auto redRange = Dali::Toolkit::Text::Range::New(15u, 2u);
213 spannableString.AttachSpan(
217 std::vector<Text::BaseSpan> spans;
218 std::vector<Text::Range> ranges;
220 spannableString.RetrieveAllSpansAndRanges(spans, ranges);
222 DALI_TEST_EQUALS(2u, spans.size(), TEST_LOCATION);
223 DALI_TEST_EQUALS(2u, ranges.size(), TEST_LOCATION);
225 DALI_TEST_EQUALS(greenSpan, spans[0], TEST_LOCATION);
226 DALI_TEST_EQUALS(blueSpan, spans[1], TEST_LOCATION);
228 DALI_TEST_EQUALS(greenRange, ranges[0], TEST_LOCATION);
229 DALI_TEST_EQUALS(blueRange, ranges[1], TEST_LOCATION);