1 /*
2 * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "components/ui_label.h"
17
18 #include <climits>
19 #include <gtest/gtest.h>
20 #include "font/ui_font.h"
21
22 using namespace testing::ext;
23 namespace OHOS {
24 namespace {
25 const int16_t INIT_WIDTH = 100;
26 const int16_t INIT_HEIGHT = 150;
27 }
28
29 class UILabelTest : public testing::Test {
30 public:
31 static void SetUpTestCase(void);
32 static void TearDownTestCase(void);
33 static UILabel* label_;
34 };
35
36 UILabel* UILabelTest::label_ = nullptr;
37
SetUpTestCase(void)38 void UILabelTest::SetUpTestCase(void)
39 {
40 if (label_ == nullptr) {
41 label_ = new UILabel();
42 }
43 }
44
TearDownTestCase(void)45 void UILabelTest::TearDownTestCase(void)
46 {
47 if (label_ != nullptr) {
48 delete label_;
49 label_ = nullptr;
50 }
51 }
52
53 /**
54 * @tc.name: UILabelGetViewType_001
55 * @tc.desc: Verify GetViewType and GetHeight function.
56 * @tc.type: FUNC
57 * @tc.require: AR000DSMQ1
58 */
59 HWTEST_F(UILabelTest, UILabelGetViewType_001, TestSize.Level1)
60 {
61 if (label_ == nullptr) {
62 EXPECT_EQ(1, 0);
63 return;
64 }
65 EXPECT_EQ(label_->GetViewType(), UI_LABEL);
66 }
67
68 /**
69 * @tc.name: UILabelResize_001
70 * @tc.desc: Verify Resize function.
71 * @tc.type: FUNC
72 * @tc.require: AR000DSMQ1
73 */
74 HWTEST_F(UILabelTest, UILabelResize_001, TestSize.Level1)
75 {
76 if (label_ == nullptr) {
77 EXPECT_EQ(1, 0);
78 return;
79 }
80 label_->Resize(INIT_WIDTH, INIT_HEIGHT);
81 EXPECT_EQ(label_->GetWidth(), INIT_WIDTH);
82 EXPECT_EQ(label_->GetHeight(), INIT_HEIGHT);
83 }
84
85 /**
86 * @tc.name: UILabelSetText_001
87 * @tc.desc: Verify SetText function.
88 * @tc.type: FUNC
89 * @tc.require: AR000DSMQ1
90 */
91 HWTEST_F(UILabelTest, UILabelSetText_001, TestSize.Level1)
92 {
93 if (label_ == nullptr) {
94 EXPECT_EQ(1, 0);
95 return;
96 }
97 const char* text = "abc";
98 label_->Resize(INIT_WIDTH, INIT_HEIGHT);
99 label_->SetText(text);
100
101 const char* text0 = label_->GetText();
102 ASSERT_TRUE(text0);
103 EXPECT_EQ(strcmp(text0, text), 0);
104 }
105
106 /**
107 * @tc.name: UILabelSetLineBreakMode_001
108 * @tc.desc: Verify SetLineBreakMode function.
109 * @tc.type: FUNC
110 * @tc.require: AR000DSMQ1
111 */
112 HWTEST_F(UILabelTest, UILabelSetLineBreakMode_001, TestSize.Level0)
113 {
114 if (label_ == nullptr) {
115 EXPECT_EQ(1, 0);
116 return;
117 }
118 const uint8_t lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS;
119
120 label_->SetLineBreakMode(lineBreakMode);
121 EXPECT_EQ(label_->GetLineBreakMode(), lineBreakMode);
122 }
123
124 /**
125 * @tc.name: UILabelSetTextColor_001
126 * @tc.desc: Verify SetTextColor function.
127 * @tc.type: FUNC
128 * @tc.require: AR000DSMQ1
129 */
130 HWTEST_F(UILabelTest, UILabelSetTextColor_001, TestSize.Level1)
131 {
132 if (label_ == nullptr) {
133 EXPECT_EQ(1, 0);
134 return;
135 }
136 ColorType color = Color::White();
137
138 label_->SetTextColor(color);
139 EXPECT_EQ(label_->GetTextColor().full, color.full);
140 }
141
142 /**
143 * @tc.name: UILabelSetLongMode_001
144 * @tc.desc: Verify SetLongMode function.
145 * @tc.type: FUNC
146 * @tc.require: AR000DSMQ1
147 */
148 HWTEST_F(UILabelTest, UILabelSetLongMode_001, TestSize.Level0)
149 {
150 if (label_ == nullptr) {
151 EXPECT_EQ(1, 0);
152 return;
153 }
154 label_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
155 EXPECT_EQ(label_->GetLineBreakMode(), UILabel::LINE_BREAK_ADAPT);
156 }
157
158 /**
159 * @tc.name: UILabelSetAlign_001
160 * @tc.desc: Verify SetAlign function.
161 * @tc.type: FUNC
162 * @tc.require: AR000DSMQ1
163 */
164 HWTEST_F(UILabelTest, UILabelSetAlign_001, TestSize.Level0)
165 {
166 if (label_ == nullptr) {
167 EXPECT_EQ(1, 0);
168 return;
169 }
170 label_->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_RIGHT, UITextLanguageAlignment::TEXT_ALIGNMENT_BOTTOM);
171 EXPECT_EQ(label_->GetHorAlign(), UITextLanguageAlignment::TEXT_ALIGNMENT_RIGHT);
172 EXPECT_EQ(label_->GetVerAlign(), UITextLanguageAlignment::TEXT_ALIGNMENT_BOTTOM);
173 }
174
175 /**
176 * @tc.name: UILabelSetDirect_001
177 * @tc.desc: Verify SetDirect function.
178 * @tc.type: FUNC
179 * @tc.require: AR000DSMQ1
180 */
181 HWTEST_F(UILabelTest, UILabelSetDirect_001, TestSize.Level1)
182 {
183 if (label_ == nullptr) {
184 EXPECT_EQ(1, 0);
185 return;
186 }
187 label_->SetDirect(UITextLanguageDirect::TEXT_DIRECT_RTL);
188 EXPECT_EQ(label_->GetDirect(), UITextLanguageDirect::TEXT_DIRECT_RTL);
189 }
190
191 /**
192 * @tc.name: UILabelSetRollStartPos_001
193 * @tc.desc: Verify SetRollStartPos function.
194 * @tc.type: FUNC
195 * @tc.require: AR000DSMQ1
196 */
197 HWTEST_F(UILabelTest, UILabelSetRollStartPos_001, TestSize.Level0)
198 {
199 if (label_ == nullptr) {
200 EXPECT_EQ(1, 0);
201 return;
202 }
203 const int16_t rollStartPos = 50;
204
205 label_->SetRollStartPos(rollStartPos);
206 EXPECT_EQ(label_->GetRollStartPos(), rollStartPos);
207 }
208
209 /**
210 * @tc.name: UILabelSetFont_001
211 * @tc.desc: Verify SetFont function.
212 * @tc.type: FUNC
213 * @tc.require: AR000DSMQ1
214 */
215 HWTEST_F(UILabelTest, UILabelSetFont_001, TestSize.Level1)
216 {
217 if (label_ == nullptr) {
218 EXPECT_EQ(1, 0);
219 return;
220 }
221 uint16_t fontId = label_->GetFontId();
222
223 const uint8_t fontSize = 20; // 20: font size for test
224 label_->SetFont("error_font_name", fontSize);
225
226 EXPECT_EQ(label_->GetFontId(), fontId);
227 }
228
229 /**
230 * @tc.name: UILabelSetStyle_001
231 * @tc.desc: Verify SetStyle function, equal.
232 */
233 HWTEST_F(UILabelTest, UILabelSetStyle_001, TestSize.Level1)
234 {
235 if (label_ == nullptr) {
236 EXPECT_NE(0, 0);
237 return;
238 }
239 UIView* view = new UIView();
240 Style style;
241 style.borderOpa_ = OPA_OPAQUE;
242 label_->SetStyle(style);
243 EXPECT_EQ(view->GetStyleConst().borderOpa_, OPA_OPAQUE);
244 label_->SetStyle(STYLE_LINE_OPA, OPA_OPAQUE);
245 EXPECT_EQ(view->GetStyle(STYLE_LINE_OPA), OPA_OPAQUE);
246 delete view;
247 view = nullptr;
248 }
249
250 /**
251 * @tc.name: UILabelOnPreDraw_001
252 * @tc.desc: Verify OnPreDraw function, equal.
253 */
254 HWTEST_F(UILabelTest, UILabelOnPreDraw_001, TestSize.Level1)
255 {
256 if (label_ == nullptr) {
257 EXPECT_NE(0, 0);
258 return;
259 }
260 Rect* invalidatedArea = new Rect();
261 EXPECT_EQ(label_->OnPreDraw(*invalidatedArea), false);
262 delete invalidatedArea;
263 invalidatedArea = nullptr;
264 }
265
266 #if defined(ENABLE_TEXT_STYLE) && ENABLE_TEXT_STYLE
267 /**
268 * @tc.name: UILabelSetText_002
269 * @tc.desc: Verify SetText function.
270 */
271 HWTEST_F(UILabelTest, UILabelSetText_002, TestSize.Level1)
272 {
273 if (label_ == nullptr) {
274 EXPECT_EQ(1, 0);
275 return;
276 }
277 SpannableString spannableString("图形子系统测试正常粗体斜体粗斜体");
278 spannableString.SetTextStyle(TEXT_STYLE_ITALIC, 11, 13);
279 spannableString.SetTextStyle(TEXT_STYLE_BOLD, 9, 11);
280 spannableString.SetTextStyle(TEXT_STYLE_BOLD_ITALIC, 13, 16);
281 label_->SetText(&spannableString);
282 EXPECT_EQ(spannableString.styleList_.Size(), 3);
283 }
284 #endif
285
286 /**
287 * @tc.name: UILabelSetFontId_001
288 * @tc.desc: Verify SetFontId function.
289 */
290 HWTEST_F(UILabelTest, UILabelSetFontId_001, TestSize.Level0)
291 {
292 if (label_ == nullptr) {
293 EXPECT_NE(0, 0);
294 return;
295 }
296 const uint16_t fontId = 16;
297 label_->SetFontId(fontId);
298 if (!UIFont::GetInstance()->IsVectorFont()) {
299 EXPECT_EQ(label_->GetFontId(), fontId);
300 } else {
301 EXPECT_EQ(label_->GetFontId(), 0);
302 }
303 }
304
305 /**
306 * @tc.name: UILabelSetRollSpeed_001
307 * @tc.desc: Verify SetRollSpeed function.
308 */
309 HWTEST_F(UILabelTest, UILabelSetRollSpeed_001, TestSize.Level0)
310 {
311 if (label_ == nullptr) {
312 EXPECT_EQ(1, 0);
313 return;
314 }
315 const uint16_t RollSpeed = 50;
316
317 label_->SetRollSpeed(RollSpeed);
318 EXPECT_EQ(label_->GetRollSpeed(), RollSpeed);
319 }
320
321 /**
322 * @tc.name: UILabelGetTextSize_001
323 * @tc.desc: Verify GetTextSize function.
324 */
325 HWTEST_F(UILabelTest, UILabelGetTextSize_001, TestSize.Level0)
326 {
327 if (label_ == nullptr) {
328 EXPECT_EQ(1, 0);
329 return;
330 }
331 Text* labelText = new Text();
332 EXPECT_EQ(labelText->GetTextSize().x, label_->GetTextWidth());
333 EXPECT_EQ(labelText->GetTextSize().y, label_->GetTextHeight());
334 delete labelText;
335 labelText = nullptr;
336 }
337
338 /**
339 * @tc.name: UILabelSetSize_001
340 * @tc.desc: Verify SetSize function.
341 */
342 HWTEST_F(UILabelTest, UILabelSetSize_001, TestSize.Level0)
343 {
344 if (label_ == nullptr) {
345 EXPECT_EQ(1, 0);
346 return;
347 }
348 label_->SetWidth(0);
349 EXPECT_EQ(label_->GetWidth(), 0);
350
351 label_->SetHeight(0);
352 EXPECT_EQ(label_->GetHeight(), 0);
353 }
354 } // namespace OHOS
355