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 #define LOG_TAG "UnifiedMetaTest"
16
17 #include <unistd.h>
18 #include <gtest/gtest.h>
19 #include <string>
20
21 #include "logger.h"
22 #include "udmf_capi_common.h"
23 #include "unified_meta.h"
24
25 using namespace testing::ext;
26 using namespace OHOS::UDMF;
27 using namespace OHOS;
28 namespace OHOS::Test {
29 using namespace std;
30
31 class UnifiedMetaTest : public testing::Test {
32 public:
33 static void SetUpTestCase();
34 static void TearDownTestCase();
35 void SetUp() override;
36 void TearDown() override;
37 static constexpr int INT32_SIZE = 4;
38 static constexpr int INT64_SIZE = 8;
39 static constexpr int BOOL_SIZE = 1;
40 static constexpr int DOUBLE_SIZE = 8;
41 };
42
SetUpTestCase()43 void UnifiedMetaTest::SetUpTestCase()
44 {
45 }
46
TearDownTestCase()47 void UnifiedMetaTest::TearDownTestCase()
48 {
49 }
50
SetUp()51 void UnifiedMetaTest::SetUp()
52 {
53 }
54
TearDown()55 void UnifiedMetaTest::TearDown()
56 {
57 }
58
59 /**
60 * @tc.name: IsValidType001
61 * @tc.desc: Normal testcase of IsValidType
62 * @tc.type: FUNC
63 */
HWTEST_F(UnifiedMetaTest, IsValidType001, TestSize.Level1)64 HWTEST_F(UnifiedMetaTest, IsValidType001, TestSize.Level1)
65 {
66 LOG_INFO(UDMF_TEST, "IsValidType001 begin.");
67 int32_t value = 0;
68 bool ret = UnifiedDataUtils::IsValidType(value);
69 EXPECT_EQ(ret, value >= ENTITY && value < UD_BUTT);
70 LOG_INFO(UDMF_TEST, "IsValidType001 end.");
71 }
72
73 /**
74 * @tc.name: GetEnumNum001
75 * @tc.desc: Normal testcase of GetEnumNum
76 * @tc.type: FUNC
77 */
HWTEST_F(UnifiedMetaTest, GetEnumNum001, TestSize.Level1)78 HWTEST_F(UnifiedMetaTest, GetEnumNum001, TestSize.Level1)
79 {
80 LOG_INFO(UDMF_TEST, "GetEnumNum001 begin.");
81 const std::string shareOption = "";
82 int32_t ret = ShareOptionsUtil::GetEnumNum(shareOption);
83 EXPECT_EQ(ret, ShareOptions::SHARE_OPTIONS_BUTT);
84 LOG_INFO(UDMF_TEST, "GetEnumNum001 end.");
85 }
86
87 /**
88 * @tc.name: GetEnumNum002
89 * @tc.desc: Abnormal testcase of GetEnumNum, shareOption is APP_SHARE_OPTIONS.enumNum
90 * @tc.type: FUNC
91 */
HWTEST_F(UnifiedMetaTest, GetEnumNum002, TestSize.Level1)92 HWTEST_F(UnifiedMetaTest, GetEnumNum002, TestSize.Level1)
93 {
94 LOG_INFO(UDMF_TEST, "GetEnumNum002 begin.");
95 const std::string shareOption = "CROSS_APP";
96 int32_t ret = ShareOptionsUtil::GetEnumNum(shareOption);
97 EXPECT_EQ(ret, 1);
98 LOG_INFO(UDMF_TEST, "GetEnumNum002 end.");
99 }
100
101 /**
102 * @tc.name: GetEnumStr001
103 * @tc.desc: Normal testcase of GetEnumStr
104 * @tc.type: FUNC
105 */
HWTEST_F(UnifiedMetaTest, GetEnumStr001, TestSize.Level1)106 HWTEST_F(UnifiedMetaTest, GetEnumStr001, TestSize.Level1)
107 {
108 LOG_INFO(UDMF_TEST, "GetEnumStr001 begin.");
109 int32_t shareOption = 4;
110 std::string ret = ShareOptionsUtil::GetEnumStr(shareOption);
111 EXPECT_EQ(ret, "");
112 LOG_INFO(UDMF_TEST, "GetEnumStr001 end.");
113 }
114
115 /**
116 * @tc.name: GetEnumStr002
117 * @tc.desc: Abnormal testcase of GetEnumStr, shareOption is APP_SHARE_OPTIONS.enumStr
118 * @tc.type: FUNC
119 */
HWTEST_F(UnifiedMetaTest, GetEnumStr002, TestSize.Level1)120 HWTEST_F(UnifiedMetaTest, GetEnumStr002, TestSize.Level1)
121 {
122 LOG_INFO(UDMF_TEST, "GetEnumStr002 begin.");
123 int32_t shareOption = 1;
124 std::string ret = ShareOptionsUtil::GetEnumStr(shareOption);
125 EXPECT_NE(ret, "");
126 LOG_INFO(UDMF_TEST, "GetEnumStr002 end.");
127 }
128
129 /**
130 * @tc.name: IsValidUtdId001
131 * @tc.desc: Normal testcase of IsValidUtdId
132 * @tc.type: FUNC
133 */
HWTEST_F(UnifiedMetaTest, IsValidUtdId001, TestSize.Level1)134 HWTEST_F(UnifiedMetaTest, IsValidUtdId001, TestSize.Level1)
135 {
136 std::string utdId = "general.text";
137 bool ret = UtdUtils::IsValidUtdId(utdId);
138 EXPECT_TRUE(ret);
139 }
140
141 /**
142 * @tc.name: IsValidUtdId002
143 * @tc.desc: Abnormal testcase of IsValidUtdId
144 * @tc.type: FUNC
145 */
HWTEST_F(UnifiedMetaTest, IsValidUtdId002, TestSize.Level1)146 HWTEST_F(UnifiedMetaTest, IsValidUtdId002, TestSize.Level1)
147 {
148 std::string utdId = "general.ptp";
149 bool ret = UtdUtils::IsValidUtdId(utdId);
150 EXPECT_FALSE(ret);
151 }
152
153 /**
154 * @tc.name: GetUtdEnumFromUtdId001
155 * @tc.desc: Normal testcase of GetUtdEnumFromUtdId
156 * @tc.type: FUNC
157 */
HWTEST_F(UnifiedMetaTest, GetUtdEnumFromUtdId001, TestSize.Level1)158 HWTEST_F(UnifiedMetaTest, GetUtdEnumFromUtdId001, TestSize.Level1)
159 {
160 std::string utdId = "general.text";
161 int32_t ret = UtdUtils::GetUtdEnumFromUtdId(utdId);
162 EXPECT_EQ(ret, UDType::TEXT);
163 }
164
165 /**
166 * @tc.name: GetUtdEnumFromUtdId002
167 * @tc.desc: Abnormal testcase of GetUtdEnumFromUtdId
168 * @tc.type: FUNC
169 */
HWTEST_F(UnifiedMetaTest, GetUtdEnumFromUtdId002, TestSize.Level1)170 HWTEST_F(UnifiedMetaTest, GetUtdEnumFromUtdId002, TestSize.Level1)
171 {
172 std::string utdId = "general.ptp";
173 int32_t ret = UtdUtils::GetUtdEnumFromUtdId(utdId);
174 EXPECT_EQ(ret, UDType::UD_BUTT);
175 }
176
177 /**
178 * @tc.name: GetUtdIdFromUtdEnum001
179 * @tc.desc: Normal testcase of GetUtdIdFromUtdEnum
180 * @tc.type: FUNC
181 */
HWTEST_F(UnifiedMetaTest, GetUtdIdFromUtdEnum001, TestSize.Level1)182 HWTEST_F(UnifiedMetaTest, GetUtdIdFromUtdEnum001, TestSize.Level1)
183 {
184 std::string ret = UtdUtils::GetUtdIdFromUtdEnum(UDType::TEXT);
185 EXPECT_EQ(ret, "general.text");
186 }
187
188 /**
189 * @tc.name: GetUtdIdFromUtdEnum002
190 * @tc.desc: Abnormal testcase of GetUtdIdFromUtdEnum
191 * @tc.type: FUNC
192 */
HWTEST_F(UnifiedMetaTest, GetUtdIdFromUtdEnum002, TestSize.Level1)193 HWTEST_F(UnifiedMetaTest, GetUtdIdFromUtdEnum002, TestSize.Level1)
194 {
195 std::string ret = UtdUtils::GetUtdIdFromUtdEnum(UDType::UD_BUTT);
196 EXPECT_TRUE(ret.empty());
197
198 std::string ret1 = UtdUtils::GetUtdIdFromUtdEnum(UDType::UD_BUTT + 1);
199 EXPECT_TRUE(ret1.empty());
200 }
201
202 /**
203 * @tc.name: GetUtdTypes001
204 * @tc.desc: Normal testcase of GetUtdTypes
205 * @tc.type: FUNC
206 */
HWTEST_F(UnifiedMetaTest, GetUtdTypes001, TestSize.Level1)207 HWTEST_F(UnifiedMetaTest, GetUtdTypes001, TestSize.Level1)
208 {
209 std::vector<UtdType> ret = UtdUtils::GetUtdTypes();
210 EXPECT_TRUE(ret.size() > 0);
211 }
212
213 /**
214 * @tc.name: UnifiedDataUtilsIsValidType001
215 * @tc.desc: Abnormal testcase of IsValidType
216 * @tc.type: FUNC
217 */
HWTEST_F(UnifiedMetaTest, UnifiedDataUtilsIsValidType001, TestSize.Level1)218 HWTEST_F(UnifiedMetaTest, UnifiedDataUtilsIsValidType001, TestSize.Level1)
219 {
220 bool ret = UnifiedDataUtils::IsValidType(UDType::UD_BUTT);
221 EXPECT_FALSE(ret);
222
223 bool ret1 = UnifiedDataUtils::IsValidType(UDType::ENTITY - 1);
224 EXPECT_FALSE(ret1);
225
226 bool ret2 = UnifiedDataUtils::IsValidType(UDType::UD_BUTT + 1);
227 EXPECT_FALSE(ret2);
228 }
229
230 /**
231 * @tc.name: UnifiedDataUtilsIsValidType002
232 * @tc.desc: Normal testcase of IsValidType
233 * @tc.type: FUNC
234 */
HWTEST_F(UnifiedMetaTest, UnifiedDataUtilsIsValidType002, TestSize.Level1)235 HWTEST_F(UnifiedMetaTest, UnifiedDataUtilsIsValidType002, TestSize.Level1)
236 {
237 bool ret = UnifiedDataUtils::IsValidType(UDType::TEXT);
238 EXPECT_TRUE(ret);
239
240 bool ret1 = UnifiedDataUtils::IsValidType(UDType::ENTITY);
241 EXPECT_TRUE(ret1);
242 }
243
244 /**
245 * @tc.name: IsValidIntention001
246 * @tc.desc: Normal testcase of IsValidIntention
247 * @tc.type: FUNC
248 */
HWTEST_F(UnifiedMetaTest, IsValidIntention001, TestSize.Level1)249 HWTEST_F(UnifiedMetaTest, IsValidIntention001, TestSize.Level1)
250 {
251 bool ret = UnifiedDataUtils::IsValidIntention(Intention::UD_INTENTION_DRAG);
252 EXPECT_TRUE(ret);
253
254 bool ret1 = UnifiedDataUtils::IsValidIntention(Intention::UD_INTENTION_DATA_HUB);
255 EXPECT_TRUE(ret1);
256 }
257
258 /**
259 * @tc.name: IsValidIntention002
260 * @tc.desc: Abnormal testcase of IsValidIntention
261 * @tc.type: FUNC
262 */
HWTEST_F(UnifiedMetaTest, IsValidIntention002, TestSize.Level1)263 HWTEST_F(UnifiedMetaTest, IsValidIntention002, TestSize.Level1)
264 {
265 bool ret = UnifiedDataUtils::IsValidIntention(Intention::UD_INTENTION_BASE);
266 EXPECT_FALSE(ret);
267
268 bool ret1 = UnifiedDataUtils::IsValidIntention(Intention::UD_INTENTION_BUTT);
269 EXPECT_FALSE(ret1);
270
271 bool ret2 = UnifiedDataUtils::IsValidIntention(Intention::UD_INTENTION_BASE - 1);
272 EXPECT_FALSE(ret2);
273
274 bool ret3 = UnifiedDataUtils::IsValidIntention(Intention::UD_INTENTION_BUTT + 1);
275 EXPECT_FALSE(ret3);
276 }
277
278 /**
279 * @tc.name: ShareOptionsUtilIsValid001
280 * @tc.desc: Normal testcase of IsValid
281 * @tc.type: FUNC
282 */
HWTEST_F(UnifiedMetaTest, ShareOptionsUtilIsValid001, TestSize.Level1)283 HWTEST_F(UnifiedMetaTest, ShareOptionsUtilIsValid001, TestSize.Level1)
284 {
285 bool ret = ShareOptionsUtil::IsValid(ShareOptions::IN_APP);
286 EXPECT_TRUE(ret);
287
288 bool ret1 = ShareOptionsUtil::IsValid(ShareOptions::CROSS_APP);
289 EXPECT_TRUE(ret1);
290 }
291
292 /**
293 * @tc.name: ShareOptionsUtilIsValid002
294 * @tc.desc: Abnormal testcase of IsValid
295 * @tc.type: FUNC
296 */
HWTEST_F(UnifiedMetaTest, ShareOptionsUtilIsValid002, TestSize.Level1)297 HWTEST_F(UnifiedMetaTest, ShareOptionsUtilIsValid002, TestSize.Level1)
298 {
299 bool ret = ShareOptionsUtil::IsValid(ShareOptions::IN_APP - 1);
300 EXPECT_FALSE(ret);
301
302 bool ret1 = ShareOptionsUtil::IsValid(ShareOptions::SHARE_OPTIONS_BUTT);
303 EXPECT_FALSE(ret1);
304
305 bool ret2 = ShareOptionsUtil::IsValid(ShareOptions::SHARE_OPTIONS_BUTT + 1);
306 EXPECT_FALSE(ret2);
307 }
308
309 /**
310 * @tc.name: GetVariantSize001
311 * @tc.desc: Normal testcase of GetVariantSize
312 * @tc.type: FUNC
313 */
HWTEST_F(UnifiedMetaTest, GetVariantSize001, TestSize.Level1)314 HWTEST_F(UnifiedMetaTest, GetVariantSize001, TestSize.Level1)
315 {
316 UDVariant variant;
317 // case int32_t
318 variant = (int32_t)100;
319 size_t int32tSize = UnifiedDataUtils::GetVariantSize(variant);
320 EXPECT_EQ(int32tSize, INT32_SIZE);
321
322 variant = (int64_t)100;
323 size_t int64tSize = UnifiedDataUtils::GetVariantSize(variant);
324 EXPECT_EQ(int64tSize, INT64_SIZE);
325
326 variant = true;
327 size_t boolSize = UnifiedDataUtils::GetVariantSize(variant);
328 EXPECT_EQ(boolSize, BOOL_SIZE);
329
330 variant = 100.0001;
331 size_t doubleSize = UnifiedDataUtils::GetVariantSize(variant);
332 EXPECT_EQ(doubleSize, DOUBLE_SIZE);
333
334 std::string str = "string size";
335 variant = str;
336 size_t strSize = UnifiedDataUtils::GetVariantSize(variant);
337 EXPECT_EQ(strSize, str.size());
338
339 std::vector<uint8_t> uVecEmpty;
340 variant = uVecEmpty;
341 size_t vecEmpSize = UnifiedDataUtils::GetVariantSize(variant);
342 EXPECT_EQ(vecEmpSize, uVecEmpty.size());
343
344 std::vector<uint8_t> uVec(100, 100);
345 variant = uVec;
346 size_t uVecSize = UnifiedDataUtils::GetVariantSize(variant);
347 EXPECT_EQ(uVecSize, uVec.size());
348 }
349
350 /**
351 * @tc.name: GetDetailsSize001
352 * @tc.desc: Normal testcase of GetDetailsSize
353 * @tc.type: FUNC
354 */
HWTEST_F(UnifiedMetaTest, GetDetailsSize001, TestSize.Level1)355 HWTEST_F(UnifiedMetaTest, GetDetailsSize001, TestSize.Level1)
356 {
357 std::string int32Key = "int32Key";
358 std::string int64Key = "int64Key";
359 std::string strKey = "strKey";
360 std::string str = "string size";
361 UDDetails details = {
362 {int32Key, (int32_t)100},
363 {int64Key, (int64_t)100},
364 {strKey, str}
365 };
366 size_t ret = UnifiedDataUtils::GetDetailsSize(details);
367 EXPECT_EQ(ret, int32Key.size() + int64Key.size() + strKey.size() + INT32_SIZE + INT64_SIZE + str.size());
368 }
369
370 /**
371 * @tc.name: IsPersistByIntention001
372 * @tc.desc: Normal testcase of IsPersist
373 * @tc.type: FUNC
374 */
HWTEST_F(UnifiedMetaTest, IsPersistByIntention001, TestSize.Level1)375 HWTEST_F(UnifiedMetaTest, IsPersistByIntention001, TestSize.Level1)
376 {
377 bool ret = UnifiedDataUtils::IsPersist(Intention::UD_INTENTION_DATA_HUB);
378 EXPECT_TRUE(ret);
379
380 bool ret1 = UnifiedDataUtils::IsPersist(Intention::UD_INTENTION_BUTT);
381 EXPECT_FALSE(ret1);
382
383 bool ret2 = UnifiedDataUtils::IsPersist(Intention::UD_INTENTION_DRAG);
384 EXPECT_FALSE(ret2);
385
386 bool ret3 = UnifiedDataUtils::IsPersist(Intention::UD_INTENTION_BASE);
387 EXPECT_FALSE(ret3);
388 }
389
390 /**
391 * @tc.name: IsPersistByStr001
392 * @tc.desc: Normal testcase of IsPersist
393 * @tc.type: FUNC
394 */
HWTEST_F(UnifiedMetaTest, IsPersistByStr001, TestSize.Level1)395 HWTEST_F(UnifiedMetaTest, IsPersistByStr001, TestSize.Level1)
396 {
397 bool ret = UnifiedDataUtils::IsPersist("DataHub");
398 EXPECT_TRUE(ret);
399
400 bool ret1 = UnifiedDataUtils::IsPersist("drag");
401 EXPECT_FALSE(ret1);
402
403 bool ret2 = UnifiedDataUtils::IsPersist("invalid param");
404 EXPECT_FALSE(ret2);
405 }
406
407 /**
408 * @tc.name: GetIntentionByString001
409 * @tc.desc: Normal testcase of IsPersist
410 * @tc.type: FUNC
411 */
HWTEST_F(UnifiedMetaTest, GetIntentionByString001, TestSize.Level1)412 HWTEST_F(UnifiedMetaTest, GetIntentionByString001, TestSize.Level1)
413 {
414 Intention ret = UnifiedDataUtils::GetIntentionByString("DataHub");
415 EXPECT_EQ(ret, Intention::UD_INTENTION_DATA_HUB);
416
417 Intention ret1 = UnifiedDataUtils::GetIntentionByString("drag");
418 EXPECT_EQ(ret1, Intention::UD_INTENTION_DRAG);
419
420 Intention ret2 = UnifiedDataUtils::GetIntentionByString("invalid param");
421 EXPECT_EQ(ret2, UD_INTENTION_BUTT);
422 }
423
424 /**
425 * @tc.name: IsValidOptions001
426 * @tc.desc: Normal testcase of IsPersist
427 * @tc.type: FUNC
428 */
HWTEST_F(UnifiedMetaTest, IsValidOptions001, TestSize.Level1)429 HWTEST_F(UnifiedMetaTest, IsValidOptions001, TestSize.Level1)
430 {
431 std::string keyDataHub = "udmf://DataHub/com.hmos.photos/CSl;cdcGFcmdkasaccCSCAAScscdc";
432 std::string keyDrag = "udmf://drag/com.hmos.photos/CSl;cdcGFcmdkasaccCSCAAScscdc";
433 std::string intentionDataHub = "DataHub";
434 std::string intentionDrag = "drag";
435 std::string intentionEmpty = "";
436
437 bool ret = UnifiedDataUtils::IsValidOptions("", intentionDataHub);
438 EXPECT_TRUE(ret);
439
440 bool ret1 = UnifiedDataUtils::IsValidOptions(keyDataHub, intentionEmpty);
441 EXPECT_TRUE(ret1);
442
443 bool ret2 = UnifiedDataUtils::IsValidOptions(keyDataHub, intentionDataHub);
444 EXPECT_TRUE(ret2);
445
446 bool ret3 = UnifiedDataUtils::IsValidOptions(keyDataHub, intentionDrag);
447 EXPECT_FALSE(ret3);
448
449 bool ret4 = UnifiedDataUtils::IsValidOptions(keyDrag, intentionDrag);
450 EXPECT_FALSE(ret4);
451 }
452
453 /**
454 * @tc.name: GetValue001
455 * @tc.desc: Normal testcase of IsPersist
456 * @tc.type: FUNC
457 */
HWTEST_F(UnifiedMetaTest, GetValue001, TestSize.Level1)458 HWTEST_F(UnifiedMetaTest, GetValue001, TestSize.Level1)
459 {
460 Object object;
461 std::string key = "key";
462 std::string content = "content";
463 object.value_ = {
464 {key, content}
465 };
466 std::string value;
467 bool ret = object.GetValue(key, value);
468 EXPECT_TRUE(ret);
469 EXPECT_EQ(value, content);
470
471 std::string valueEmpty;
472 bool ret1 = object.GetValue("invalid key", valueEmpty);
473 EXPECT_FALSE(ret1);
474 EXPECT_TRUE(valueEmpty.empty());
475 }
476
477 /**
478 * @tc.name: GetValue002
479 * @tc.desc: Normal testcase of IsPersist
480 * @tc.type: FUNC
481 */
HWTEST_F(UnifiedMetaTest, GetValue002, TestSize.Level1)482 HWTEST_F(UnifiedMetaTest, GetValue002, TestSize.Level1)
483 {
484 Object object;
485 std::shared_ptr<Object> objectInner = std::make_shared<Object>();
486 std::string key = "key";
487 std::string keyObj = "keyObj";
488 std::string content = "content";
489 objectInner->value_ = {
490 {key, content}
491 };
492 object.value_ = {
493 {key, content},
494 {keyObj, objectInner}
495 };
496 std::shared_ptr<Object> value = std::make_shared<Object>();
497 bool ret = object.GetValue(keyObj, value);
498 EXPECT_TRUE(ret);
499
500 std::string innerValue;
501 bool ret1 = value->GetValue(key, innerValue);
502 EXPECT_TRUE(ret1);
503 EXPECT_EQ(innerValue, content);
504
505 std::shared_ptr<Object> valueEmpty = std::make_shared<Object>();
506 bool ret2 = object.GetValue("invalid key", valueEmpty);
507 EXPECT_FALSE(ret2);
508 }
509 } // OHOS::Test