1 /*
2 * Copyright (c) 2024 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 <gtest/gtest.h>
17
18 #include "pasteboard_client.h"
19 #include "pasteboard_error.h"
20 #include "pasteboard_hilog.h"
21 #include "pasteboard_observer_callback.h"
22 #include "pasteboard_pattern.h"
23 #include "pixel_map.h"
24 #include "uri.h"
25 #include "want.h"
26
27 namespace OHOS::MiscServices {
28 using namespace testing::ext;
29 class PasteboardPatternTest : public testing::Test {
30 public:
31 static void SetUpTestCase(void);
32 static void TearDownTestCase(void);
33 void SetUp();
34 void TearDown();
35 };
36
SetUpTestCase(void)37 void PasteboardPatternTest::SetUpTestCase(void) { }
38
TearDownTestCase(void)39 void PasteboardPatternTest::TearDownTestCase(void) { }
40
SetUp(void)41 void PasteboardPatternTest::SetUp(void) { }
42
TearDown(void)43 void PasteboardPatternTest::TearDown(void) { }
44
45 /**
46 * @tc.name: PasteboardPatternTest001
47 * @tc.desc: detect test.
48 * @tc.type: FUNC
49 */
50 HWTEST_F(PasteboardPatternTest, PasteboardPatternTest001, TestSize.Level0)
51 {
52 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest001 start");
53 bool hasPlain = true;
54 bool hasHTML = true;
55
56 std::string plainText = "plain text";
57 auto data = PasteboardClient::GetInstance()->CreatePlainTextData(plainText);
58 ASSERT_TRUE(data != nullptr);
59
60 PasteboardClient::GetInstance()->Clear();
61 auto has = PasteboardClient::GetInstance()->HasPasteData();
62 ASSERT_TRUE(has != true);
63
64 int32_t ret = PasteboardClient::GetInstance()->SetPasteData(*data);
65 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
66
67 has = PasteboardClient::GetInstance()->HasPasteData();
68 ASSERT_TRUE(has == true);
69
70 PasteData pasteData;
71 ret = PasteboardClient::GetInstance()->GetPasteData(pasteData);
72 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
73 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "get.");
74
75 auto primaryText = pasteData.GetPrimaryText();
76 ASSERT_TRUE(primaryText != nullptr);
77 ASSERT_TRUE(*primaryText == plainText);
78
79 const std::set<Pattern> patternsToCheck = {};
80
81 auto detect = PatternDetection::Detect(patternsToCheck, pasteData, hasHTML, hasPlain);
82 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest001 end");
83 }
84
85 /**
86 * @tc.name: PasteboardPatternTest002
87 * @tc.desc: detect test.
88 * @tc.type: FUNC
89 */
90 HWTEST_F(PasteboardPatternTest, PasteboardPatternTest002, TestSize.Level0)
91 {
92 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest002 start");
93 bool hasPlain = true;
94 bool hasHTML = true;
95
96 std::string plainText = "plain text";
97 auto data = PasteboardClient::GetInstance()->CreatePlainTextData(plainText);
98 ASSERT_TRUE(data != nullptr);
99
100 PasteboardClient::GetInstance()->Clear();
101 auto has = PasteboardClient::GetInstance()->HasPasteData();
102 ASSERT_TRUE(has != true);
103
104 int32_t ret = PasteboardClient::GetInstance()->SetPasteData(*data);
105 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
106
107 has = PasteboardClient::GetInstance()->HasPasteData();
108 ASSERT_TRUE(has == true);
109
110 PasteData pasteData;
111 ret = PasteboardClient::GetInstance()->GetPasteData(pasteData);
112 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
113 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "get.");
114
115 auto primaryText = pasteData.GetPrimaryText();
116 ASSERT_TRUE(primaryText != nullptr);
117 ASSERT_TRUE(*primaryText == plainText);
118
119 const std::set<Pattern> patternsToCheck = { Pattern::URL };
120
121 auto detect = PatternDetection::Detect(patternsToCheck, pasteData, hasHTML, hasPlain);
122 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest002 end");
123 }
124
125 /**
126 * @tc.name: PasteboardPatternTest003
127 * @tc.desc: detect test.
128 * @tc.type: FUNC
129 */
130 HWTEST_F(PasteboardPatternTest, PasteboardPatternTest003, TestSize.Level0)
131 {
132 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest003 start");
133 bool hasPlain = true;
134 bool hasHTML = false;
135
136 std::string plainText = "plain text";
137 auto data = PasteboardClient::GetInstance()->CreatePlainTextData(plainText);
138 ASSERT_TRUE(data != nullptr);
139
140 PasteboardClient::GetInstance()->Clear();
141 auto has = PasteboardClient::GetInstance()->HasPasteData();
142 ASSERT_TRUE(has != true);
143
144 int32_t ret = PasteboardClient::GetInstance()->SetPasteData(*data);
145 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
146
147 has = PasteboardClient::GetInstance()->HasPasteData();
148 ASSERT_TRUE(has == true);
149
150 PasteData pasteData;
151 ret = PasteboardClient::GetInstance()->GetPasteData(pasteData);
152 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
153 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "get.");
154
155 auto primaryText = pasteData.GetPrimaryText();
156 ASSERT_TRUE(primaryText != nullptr);
157 ASSERT_TRUE(*primaryText == plainText);
158
159 const std::set<Pattern> patternsToCheck = { Pattern::URL };
160
161 auto detect = PatternDetection::Detect(patternsToCheck, pasteData, hasHTML, hasPlain);
162 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest003 end");
163 }
164
165 /**
166 * @tc.name: PasteboardPatternTest004
167 * @tc.desc: detect test.
168 * @tc.type: FUNC
169 */
170 HWTEST_F(PasteboardPatternTest, PasteboardPatternTest004, TestSize.Level0)
171 {
172 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest004 start");
173 bool hasPlain = false;
174 bool hasHTML = true;
175
176 std::string plainText = "plain text";
177 auto data = PasteboardClient::GetInstance()->CreatePlainTextData(plainText);
178 ASSERT_TRUE(data != nullptr);
179
180 PasteboardClient::GetInstance()->Clear();
181 auto has = PasteboardClient::GetInstance()->HasPasteData();
182 ASSERT_TRUE(has != true);
183
184 int32_t ret = PasteboardClient::GetInstance()->SetPasteData(*data);
185 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
186
187 has = PasteboardClient::GetInstance()->HasPasteData();
188 ASSERT_TRUE(has == true);
189 PasteData pasteData;
190 ret = PasteboardClient::GetInstance()->GetPasteData(pasteData);
191 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
192 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "get.");
193
194 auto primaryText = pasteData.GetPrimaryText();
195 ASSERT_TRUE(primaryText != nullptr);
196 ASSERT_TRUE(*primaryText == plainText);
197
198 const std::set<Pattern> patternsToCheck = { Pattern::URL };
199
200 auto detect = PatternDetection::Detect(patternsToCheck, pasteData, hasHTML, hasPlain);
201 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest004 end");
202 }
203
204 /**
205 * @tc.name: PasteboardPatternTest005
206 * @tc.desc: detect test.
207 * @tc.type: FUNC
208 */
209 HWTEST_F(PasteboardPatternTest, PasteboardPatternTest005, TestSize.Level0)
210 {
211 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest005 start");
212 bool hasPlain = false;
213 bool hasHTML = false;
214
215 std::string plainText = "plain text";
216 auto data = PasteboardClient::GetInstance()->CreatePlainTextData(plainText);
217 ASSERT_TRUE(data != nullptr);
218
219 PasteboardClient::GetInstance()->Clear();
220 auto has = PasteboardClient::GetInstance()->HasPasteData();
221 ASSERT_TRUE(has != true);
222
223 int32_t ret = PasteboardClient::GetInstance()->SetPasteData(*data);
224 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
225
226 has = PasteboardClient::GetInstance()->HasPasteData();
227 ASSERT_TRUE(has == true);
228
229 PasteData pasteData;
230 ret = PasteboardClient::GetInstance()->GetPasteData(pasteData);
231 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
232 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "get.");
233
234 auto primaryText = pasteData.GetPrimaryText();
235 ASSERT_TRUE(primaryText != nullptr);
236 ASSERT_TRUE(*primaryText == plainText);
237
238 const std::set<Pattern> patternsToCheck = { Pattern::URL };
239
240 auto detect = PatternDetection::Detect(patternsToCheck, pasteData, hasHTML, hasPlain);
241 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest005 end");
242 }
243
244 /**
245 * @tc.name: PasteboardPatternTest006
246 * @tc.desc: detect test.
247 * @tc.type: FUNC
248 */
249 HWTEST_F(PasteboardPatternTest, PasteboardPatternTest006, TestSize.Level0)
250 {
251 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest006 start");
252 bool hasPlain = true;
253 bool hasHTML = true;
254
255 std::string htmlText = "<div class='disabled item tip user-programs'>";
256 auto data = PasteboardClient::GetInstance()->CreateHtmlData(htmlText);
257 ASSERT_TRUE(data != nullptr);
258
259 PasteboardClient::GetInstance()->Clear();
260 auto has = PasteboardClient::GetInstance()->HasPasteData();
261 ASSERT_TRUE(has != true);
262
263 int32_t ret = PasteboardClient::GetInstance()->SetPasteData(*data);
264 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
265
266 has = PasteboardClient::GetInstance()->HasPasteData();
267 ASSERT_TRUE(has == true);
268
269 PasteData pasteData;
270 ret = PasteboardClient::GetInstance()->GetPasteData(pasteData);
271 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
272
273 auto record = pasteData.GetPrimaryHtml();
274 ASSERT_TRUE(record != nullptr);
275 ASSERT_TRUE(*record == htmlText);
276
277 const std::set<Pattern> patternsToCheck = { Pattern::URL };
278
279 auto detect = PatternDetection::Detect(patternsToCheck, pasteData, hasHTML, hasPlain);
280 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest006 end");
281 }
282
283 /**
284 * @tc.name: PasteboardPatternTest007
285 * @tc.desc: detect test.
286 * @tc.type: FUNC
287 */
288 HWTEST_F(PasteboardPatternTest, PasteboardPatternTest007, TestSize.Level0)
289 {
290 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest007 start");
291 bool hasPlain = true;
292 bool hasHTML = false;
293
294 std::string htmlText = "<div class='disabled item tip user-programs'>";
295 auto data = PasteboardClient::GetInstance()->CreateHtmlData(htmlText);
296 ASSERT_TRUE(data != nullptr);
297
298 PasteboardClient::GetInstance()->Clear();
299 auto has = PasteboardClient::GetInstance()->HasPasteData();
300 ASSERT_TRUE(has != true);
301
302 int32_t ret = PasteboardClient::GetInstance()->SetPasteData(*data);
303 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
304
305 has = PasteboardClient::GetInstance()->HasPasteData();
306 ASSERT_TRUE(has == true);
307
308 PasteData pasteData;
309 ret = PasteboardClient::GetInstance()->GetPasteData(pasteData);
310 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
311
312 auto record = pasteData.GetPrimaryHtml();
313 ASSERT_TRUE(record != nullptr);
314 ASSERT_TRUE(*record == htmlText);
315
316 const std::set<Pattern> patternsToCheck = { Pattern::URL };
317
318 auto detect = PatternDetection::Detect(patternsToCheck, pasteData, hasHTML, hasPlain);
319 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest007 end");
320 }
321
322 /**
323 * @tc.name: PasteboardPatternTest008
324 * @tc.desc: detect test.
325 * @tc.type: FUNC
326 */
327 HWTEST_F(PasteboardPatternTest, PasteboardPatternTest008, TestSize.Level0)
328 {
329 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest008 start");
330 bool hasPlain = false;
331 bool hasHTML = true;
332
333 std::string htmlText = "<div class='disabled item tip user-programs'>";
334 auto data = PasteboardClient::GetInstance()->CreateHtmlData(htmlText);
335 ASSERT_TRUE(data != nullptr);
336
337 PasteboardClient::GetInstance()->Clear();
338 auto has = PasteboardClient::GetInstance()->HasPasteData();
339 ASSERT_TRUE(has != true);
340
341 int32_t ret = PasteboardClient::GetInstance()->SetPasteData(*data);
342 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
343
344 has = PasteboardClient::GetInstance()->HasPasteData();
345 ASSERT_TRUE(has == true);
346
347 PasteData pasteData;
348 ret = PasteboardClient::GetInstance()->GetPasteData(pasteData);
349 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
350
351 auto record = pasteData.GetPrimaryHtml();
352 ASSERT_TRUE(record != nullptr);
353 ASSERT_TRUE(*record == htmlText);
354
355 const std::set<Pattern> patternsToCheck = { Pattern::URL };
356
357 auto detect = PatternDetection::Detect(patternsToCheck, pasteData, hasHTML, hasPlain);
358 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest008 end");
359 }
360
361 /**
362 * @tc.name: PasteboardPatternTest009
363 * @tc.desc: detect test.
364 * @tc.type: FUNC
365 */
366 HWTEST_F(PasteboardPatternTest, PasteboardPatternTest009, TestSize.Level0)
367 {
368 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest009 start");
369 bool hasPlain = false;
370 bool hasHTML = true;
371
372 std::string htmlText = "<div class='disabled item tip user-programs'>";
373 auto data = PasteboardClient::GetInstance()->CreateHtmlData(htmlText);
374 ASSERT_TRUE(data != nullptr);
375
376 PasteboardClient::GetInstance()->Clear();
377 auto has = PasteboardClient::GetInstance()->HasPasteData();
378 ASSERT_TRUE(has != true);
379
380 int32_t ret = PasteboardClient::GetInstance()->SetPasteData(*data);
381 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
382
383 has = PasteboardClient::GetInstance()->HasPasteData();
384 ASSERT_TRUE(has == true);
385
386 PasteData pasteData;
387 ret = PasteboardClient::GetInstance()->GetPasteData(pasteData);
388 ASSERT_TRUE(ret == static_cast<int32_t>(PasteboardError::E_OK));
389
390 auto record = pasteData.GetPrimaryHtml();
391 ASSERT_TRUE(record != nullptr);
392 ASSERT_TRUE(*record == htmlText);
393
394 const std::set<Pattern> patternsToCheck = { Pattern::URL };
395
396 auto detect = PatternDetection::Detect(patternsToCheck, pasteData, hasHTML, hasPlain);
397 PASTEBOARD_HILOGI(PASTEBOARD_MODULE_SERVICE, "PasteboardPatternTest009 end");
398 }
399 } // namespace OHOS::MiscServices