• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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