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 "cJSON.h"
19
20 #include "constants.h"
21 #include "dh_utils_tool.h"
22 #include "distributed_hardware_errno.h"
23 #include "meta_capability_info.h"
24 #include "meta_info_manager.h"
25
26 using namespace testing::ext;
27 using namespace std;
28
29 namespace OHOS {
30 namespace DistributedHardware {
31 namespace {
32 constexpr uint16_t DEV_TYPE_TEST = 14;
33 constexpr uint32_t DH_TYPE_TEST = 0x01;
34 const std::string DHID_TEST = "123456789";
35 const std::string DEVID_TEST = "111222333";
36 const std::string DEVNAME_TEST = "camera";
37 const std::string DHATTRS_TEST = "attrs";
38 const std::string DHSUBTYPE_TEST = "subtype";
39 const std::string UDIDHASH_TEST = "987654321";
40 const std::string SINKVER_TEST = "1.0";
41
42 }
43
44 class MetaCapInfoTest : public testing::Test {
45 public:
46 static void SetUpTestCase(void);
47 static void TearDownTestCase(void);
48 void SetUp();
49 void TearDown();
50 };
51
SetUp()52 void MetaCapInfoTest::SetUp() {}
53
TearDown()54 void MetaCapInfoTest::TearDown() {}
55
SetUpTestCase()56 void MetaCapInfoTest::SetUpTestCase() {}
57
TearDownTestCase()58 void MetaCapInfoTest::TearDownTestCase() {}
59
60 HWTEST_F(MetaCapInfoTest, FromJsonString_001, TestSize.Level0)
61 {
62 uint16_t devType = 1;
63 std::shared_ptr<MetaCapabilityInfo> metaCapInfo =
64 std::make_shared<MetaCapabilityInfo>("", "", "", devType, DHType::CAMERA, "", "", "",
65 CompVersion{ .sinkVersion = "" });
66 std::string jsonStr = "";
67 auto ret = metaCapInfo->FromJsonString(jsonStr);
68 EXPECT_EQ(ERR_DH_FWK_PARA_INVALID, ret);
69 }
70
71 HWTEST_F(MetaCapInfoTest, FromJsonString_002, TestSize.Level0)
72 {
73 uint16_t devType = 1;
74 std::shared_ptr<MetaCapabilityInfo> metaCapInfo =
75 std::make_shared<MetaCapabilityInfo>("", "", "", devType, DHType::CAMERA, "", "", "",
76 CompVersion{ .sinkVersion = "" });
77 cJSON *jsonObj = cJSON_CreateObject();
78 ASSERT_TRUE(jsonObj != nullptr);
79 cJSON_AddStringToObject(jsonObj, DH_ID.c_str(), DHID_TEST.c_str());
80 char* cjson = cJSON_PrintUnformatted(jsonObj);
81 if (cjson == nullptr) {
82 cJSON_Delete(jsonObj);
83 return;
84 }
85 std::string jsonStr(cjson);
86 auto ret = metaCapInfo->FromJsonString(jsonStr);
87 cJSON_free(cjson);
88 cJSON_Delete(jsonObj);
89 EXPECT_EQ(DH_FWK_SUCCESS, ret);
90 }
91
92 HWTEST_F(MetaCapInfoTest, ToJson_001, TestSize.Level0)
93 {
94 cJSON *jsonObject = nullptr;
95 MetaCapabilityInfo metaCapInfo;
96 EXPECT_NO_FATAL_FAILURE(ToJson(jsonObject, metaCapInfo));
97 }
98
99 HWTEST_F(MetaCapInfoTest, FromJson_001, TestSize.Level0)
100 {
101 MetaCapabilityInfo metaCapInfo;
102 cJSON *jsonObj = cJSON_CreateObject();
103 ASSERT_TRUE(jsonObj != nullptr);
104 cJSON_AddNumberToObject(jsonObj, DH_ID.c_str(), 1);
105 EXPECT_NO_FATAL_FAILURE(FromJson(jsonObj, metaCapInfo));
106 cJSON_Delete(jsonObj);
107 }
108
109 HWTEST_F(MetaCapInfoTest, FromJson_002, TestSize.Level0)
110 {
111 MetaCapabilityInfo metaCapInfo;
112 cJSON *jsonObj = cJSON_CreateObject();
113 ASSERT_TRUE(jsonObj != nullptr);
114 cJSON_AddStringToObject(jsonObj, DH_ID.c_str(), DHID_TEST.c_str());
115 cJSON_AddNumberToObject(jsonObj, DEV_ID.c_str(), 1);
116 EXPECT_NO_FATAL_FAILURE(FromJson(jsonObj, metaCapInfo));
117 cJSON_Delete(jsonObj);
118 }
119
120 HWTEST_F(MetaCapInfoTest, FromJson_003, TestSize.Level0)
121 {
122 MetaCapabilityInfo metaCapInfo;
123 cJSON *jsonObj = cJSON_CreateObject();
124 ASSERT_TRUE(jsonObj != nullptr);
125 cJSON_AddStringToObject(jsonObj, DH_ID.c_str(), DHID_TEST.c_str());
126 cJSON_AddStringToObject(jsonObj, DEV_ID.c_str(), DEVID_TEST.c_str());
127 cJSON_AddNumberToObject(jsonObj, DEV_NAME.c_str(), 1);
128 EXPECT_NO_FATAL_FAILURE(FromJson(jsonObj, metaCapInfo));
129 cJSON_Delete(jsonObj);
130 }
131
132 HWTEST_F(MetaCapInfoTest, FromJson_004, TestSize.Level0)
133 {
134 MetaCapabilityInfo metaCapInfo;
135 cJSON *jsonObj = cJSON_CreateObject();
136 ASSERT_TRUE(jsonObj != nullptr);
137 std::string devTypeTest = "devTypeTest";
138 cJSON_AddStringToObject(jsonObj, DH_ID.c_str(), DHID_TEST.c_str());
139 cJSON_AddStringToObject(jsonObj, DEV_ID.c_str(), DEVID_TEST.c_str());
140 cJSON_AddStringToObject(jsonObj, DEV_NAME.c_str(), DEVNAME_TEST.c_str());
141 cJSON_AddStringToObject(jsonObj, DEV_TYPE.c_str(), devTypeTest.c_str());
142 EXPECT_NO_FATAL_FAILURE(FromJson(jsonObj, metaCapInfo));
143 cJSON_Delete(jsonObj);
144 }
145
146 HWTEST_F(MetaCapInfoTest, FromJson_005, TestSize.Level0)
147 {
148 MetaCapabilityInfo metaCapInfo;
149 cJSON *jsonObj = cJSON_CreateObject();
150 ASSERT_TRUE(jsonObj != nullptr);
151 std::string dhTypeTest = "dhTypeTest";
152 cJSON_AddStringToObject(jsonObj, DH_ID.c_str(), DHID_TEST.c_str());
153 cJSON_AddStringToObject(jsonObj, DEV_ID.c_str(), DEVID_TEST.c_str());
154 cJSON_AddStringToObject(jsonObj, DEV_NAME.c_str(), DEVNAME_TEST.c_str());
155 cJSON_AddNumberToObject(jsonObj, DEV_TYPE.c_str(), DEV_TYPE_TEST);
156 cJSON_AddStringToObject(jsonObj, DH_TYPE.c_str(), dhTypeTest.c_str());
157 EXPECT_NO_FATAL_FAILURE(FromJson(jsonObj, metaCapInfo));
158 cJSON_Delete(jsonObj);
159 }
160
161 HWTEST_F(MetaCapInfoTest, FromJson_006, TestSize.Level0)
162 {
163 MetaCapabilityInfo metaCapInfo;
164 cJSON *jsonObj = cJSON_CreateObject();
165 ASSERT_TRUE(jsonObj != nullptr);
166 std::string dhTypeTest = "dhTypeTest";
167 cJSON_AddStringToObject(jsonObj, DH_ID.c_str(), DHID_TEST.c_str());
168 cJSON_AddStringToObject(jsonObj, DEV_ID.c_str(), DEVID_TEST.c_str());
169 cJSON_AddStringToObject(jsonObj, DEV_NAME.c_str(), DEVNAME_TEST.c_str());
170 cJSON_AddNumberToObject(jsonObj, DEV_TYPE.c_str(), DEV_TYPE_TEST);
171 cJSON_AddNumberToObject(jsonObj, DH_TYPE.c_str(), DH_TYPE_TEST);
172 cJSON_AddNumberToObject(jsonObj, DH_ATTRS.c_str(), 1);
173 EXPECT_NO_FATAL_FAILURE(FromJson(jsonObj, metaCapInfo));
174 cJSON_Delete(jsonObj);
175 }
176
177 HWTEST_F(MetaCapInfoTest, FromJson_007, TestSize.Level0)
178 {
179 MetaCapabilityInfo metaCapInfo;
180 cJSON *jsonObj = cJSON_CreateObject();
181 ASSERT_TRUE(jsonObj != nullptr);
182 std::string dhTypeTest = "dhTypeTest";
183 cJSON_AddStringToObject(jsonObj, DH_ID.c_str(), DHID_TEST.c_str());
184 cJSON_AddStringToObject(jsonObj, DEV_ID.c_str(), DEVID_TEST.c_str());
185 cJSON_AddStringToObject(jsonObj, DEV_NAME.c_str(), DEVNAME_TEST.c_str());
186 cJSON_AddNumberToObject(jsonObj, DEV_TYPE.c_str(), DEV_TYPE_TEST);
187 cJSON_AddNumberToObject(jsonObj, DH_TYPE.c_str(), DH_TYPE_TEST);
188 cJSON_AddStringToObject(jsonObj, DH_ATTRS.c_str(), DHATTRS_TEST.c_str());
189 cJSON_AddNumberToObject(jsonObj, DH_SUBTYPE.c_str(), 1);
190 EXPECT_NO_FATAL_FAILURE(FromJson(jsonObj, metaCapInfo));
191 cJSON_Delete(jsonObj);
192 }
193
194 HWTEST_F(MetaCapInfoTest, FromJson_008, TestSize.Level0)
195 {
196 MetaCapabilityInfo metaCapInfo;
197 cJSON *jsonObj = cJSON_CreateObject();
198 ASSERT_TRUE(jsonObj != nullptr);
199 std::string dhTypeTest = "dhTypeTest";
200 cJSON_AddStringToObject(jsonObj, DH_ID.c_str(), DHID_TEST.c_str());
201 cJSON_AddStringToObject(jsonObj, DEV_ID.c_str(), DEVID_TEST.c_str());
202 cJSON_AddStringToObject(jsonObj, DEV_NAME.c_str(), DEVNAME_TEST.c_str());
203 cJSON_AddNumberToObject(jsonObj, DEV_TYPE.c_str(), DEV_TYPE_TEST);
204 cJSON_AddNumberToObject(jsonObj, DH_TYPE.c_str(), DH_TYPE_TEST);
205 cJSON_AddStringToObject(jsonObj, DH_ATTRS.c_str(), DHATTRS_TEST.c_str());
206 cJSON_AddStringToObject(jsonObj, DH_SUBTYPE.c_str(), DHSUBTYPE_TEST.c_str());
207 cJSON_AddNumberToObject(jsonObj, DEV_UDID_HASH.c_str(), 1);
208 EXPECT_NO_FATAL_FAILURE(FromJson(jsonObj, metaCapInfo));
209 cJSON_Delete(jsonObj);
210 }
211
212 HWTEST_F(MetaCapInfoTest, FromJson_009, TestSize.Level0)
213 {
214 MetaCapabilityInfo metaCapInfo;
215 cJSON *jsonObj = cJSON_CreateObject();
216 ASSERT_TRUE(jsonObj != nullptr);
217 std::string dhTypeTest = "dhTypeTest";
218 cJSON_AddStringToObject(jsonObj, DH_ID.c_str(), DHID_TEST.c_str());
219 cJSON_AddStringToObject(jsonObj, DEV_ID.c_str(), DEVID_TEST.c_str());
220 cJSON_AddStringToObject(jsonObj, DEV_NAME.c_str(), DEVNAME_TEST.c_str());
221 cJSON_AddNumberToObject(jsonObj, DEV_TYPE.c_str(), DEV_TYPE_TEST);
222 cJSON_AddNumberToObject(jsonObj, DH_TYPE.c_str(), DH_TYPE_TEST);
223 cJSON_AddStringToObject(jsonObj, DH_ATTRS.c_str(), DHATTRS_TEST.c_str());
224 cJSON_AddStringToObject(jsonObj, DH_SUBTYPE.c_str(), DHSUBTYPE_TEST.c_str());
225 cJSON_AddStringToObject(jsonObj, DEV_UDID_HASH.c_str(), UDIDHASH_TEST.c_str());
226 cJSON_AddNumberToObject(jsonObj, SINK_VER.c_str(), 1);
227 EXPECT_NO_FATAL_FAILURE(FromJson(jsonObj, metaCapInfo));
228 cJSON_Delete(jsonObj);
229 }
230
231 HWTEST_F(MetaCapInfoTest, FromJson_010, TestSize.Level0)
232 {
233 MetaCapabilityInfo metaCapInfo;
234 cJSON *jsonObj = cJSON_CreateObject();
235 ASSERT_TRUE(jsonObj != nullptr);
236 cJSON_AddStringToObject(jsonObj, DH_ID.c_str(), DHID_TEST.c_str());
237 cJSON_AddStringToObject(jsonObj, DEV_ID.c_str(), DEVID_TEST.c_str());
238 cJSON_AddStringToObject(jsonObj, DEV_NAME.c_str(), DEVNAME_TEST.c_str());
239 cJSON_AddNumberToObject(jsonObj, DEV_TYPE.c_str(), DEV_TYPE_TEST);
240 cJSON_AddNumberToObject(jsonObj, DH_TYPE.c_str(), DH_TYPE_TEST);
241 cJSON_AddStringToObject(jsonObj, DH_ATTRS.c_str(), DHATTRS_TEST.c_str());
242 cJSON_AddStringToObject(jsonObj, DH_SUBTYPE.c_str(), DHSUBTYPE_TEST.c_str());
243 cJSON_AddStringToObject(jsonObj, DEV_UDID_HASH.c_str(), UDIDHASH_TEST.c_str());
244 cJSON_AddStringToObject(jsonObj, SINK_VER.c_str(), SINKVER_TEST.c_str());
245 EXPECT_NO_FATAL_FAILURE(FromJson(jsonObj, metaCapInfo));
246 cJSON_Delete(jsonObj);
247 }
248
249 HWTEST_F(MetaCapInfoTest, Compare_001, TestSize.Level0)
250 {
251 uint16_t devType = 1;
252 MetaCapabilityInfo metaCapInfo("", "", "", devType, DHType::CAMERA, "", "", "", CompVersion{ .sinkVersion = "" });
253 std::shared_ptr<MetaCapabilityInfo> metaCapInfoPtr =
254 std::make_shared<MetaCapabilityInfo>("devid_123", "", "", devType, DHType::CAMERA, "", "", "",
255 CompVersion{ .sinkVersion = "" });
256 auto ret = metaCapInfoPtr->Compare(metaCapInfo);
257 EXPECT_EQ(false, ret);
258 }
259
260 HWTEST_F(MetaCapInfoTest, Compare_002, TestSize.Level0)
261 {
262 uint16_t devType = 1;
263 MetaCapabilityInfo metaCapInfo("devid_123", "", "", devType, DHType::CAMERA, "", "", "",
264 CompVersion{ .sinkVersion = "" });
265 std::shared_ptr<MetaCapabilityInfo> metaCapInfoPtr =
266 std::make_shared<MetaCapabilityInfo>("devid_123", "dhid_123", "", devType, DHType::CAMERA, "", "", "",
267 CompVersion{ .sinkVersion = "" });
268 auto ret = metaCapInfoPtr->Compare(metaCapInfo);
269 EXPECT_EQ(false, ret);
270 }
271
272 HWTEST_F(MetaCapInfoTest, Compare_003, TestSize.Level0)
273 {
274 uint16_t devType = 1;
275 MetaCapabilityInfo metaCapInfo("devid_123", "dhid_123", "", devType, DHType::CAMERA, "", "", "",
276 CompVersion{ .sinkVersion = "" });
277 std::shared_ptr<MetaCapabilityInfo> metaCapInfoPtr = std::make_shared<MetaCapabilityInfo>(
278 "devid_123", "dhid_123", "devname", devType, DHType::CAMERA, "", "", "", CompVersion{ .sinkVersion = "" });
279 auto ret = metaCapInfoPtr->Compare(metaCapInfo);
280 EXPECT_EQ(false, ret);
281 }
282
283 HWTEST_F(MetaCapInfoTest, Compare_004, TestSize.Level0)
284 {
285 uint16_t devType = 1;
286 MetaCapabilityInfo metaCapInfo("devid_123", "dhid_123", "devname", devType, DHType::CAMERA, "", "", "",
287 CompVersion{ .sinkVersion = "" });
288 std::shared_ptr<MetaCapabilityInfo> metaCapInfoPtr =
289 std::make_shared<MetaCapabilityInfo>("devid_123", "dhid_123", "devname", 2, DHType::CAMERA, "", "", "",
290 CompVersion{ .sinkVersion = "" });
291 auto ret = metaCapInfoPtr->Compare(metaCapInfo);
292 EXPECT_EQ(false, ret);
293 }
294
295 HWTEST_F(MetaCapInfoTest, Compare_005, TestSize.Level0)
296 {
297 uint16_t devType = 1;
298 MetaCapabilityInfo metaCapInfo("devid_123", "dhid_123", "devname", devType, DHType::CAMERA, "", "", "",
299 CompVersion{ .sinkVersion = "" });
300 std::shared_ptr<MetaCapabilityInfo> metaCapInfoPtr = std::make_shared<MetaCapabilityInfo>(
301 "devid_123", "dhid_123", "devname", devType, DHType::AUDIO, "", "", "", CompVersion{ .sinkVersion = "" });
302 auto ret = metaCapInfoPtr->Compare(metaCapInfo);
303 EXPECT_EQ(false, ret);
304 }
305
306 HWTEST_F(MetaCapInfoTest, Compare_006, TestSize.Level0)
307 {
308 uint16_t devType = 1;
309 MetaCapabilityInfo metaCapInfo("devid_123", "dhid_123", "devname", devType, DHType::CAMERA, "", "", "",
310 CompVersion{ .sinkVersion = "" });
311 std::shared_ptr<MetaCapabilityInfo> metaCapInfoPtr = std::make_shared<MetaCapabilityInfo>(
312 "devid_123", "dhid_123", "devname", devType, DHType::CAMERA, "attrs", "", "",
313 CompVersion{ .sinkVersion = "" });
314 auto ret = metaCapInfoPtr->Compare(metaCapInfo);
315 EXPECT_EQ(false, ret);
316 }
317
318 HWTEST_F(MetaCapInfoTest, Compare_007, TestSize.Level0)
319 {
320 uint16_t devType = 1;
321 MetaCapabilityInfo metaCapInfo("devid_123", "dhid_123", "devname", devType, DHType::CAMERA, "attrs", "", "",
322 CompVersion{ .sinkVersion = "" });
323 std::shared_ptr<MetaCapabilityInfo> metaCapInfoPtr = std::make_shared<MetaCapabilityInfo>(
324 "devid_123", "dhid_123", "devname", devType, DHType::CAMERA, "attrs", "subtype", "",
325 CompVersion{ .sinkVersion = "" });
326 auto ret = metaCapInfoPtr->Compare(metaCapInfo);
327 EXPECT_EQ(false, ret);
328 }
329
330 HWTEST_F(MetaCapInfoTest, Compare_008, TestSize.Level0)
331 {
332 uint16_t devType = 1;
333 MetaCapabilityInfo metaCapInfo("devid_123", "dhid_123", "devname",
334 devType, DHType::CAMERA, "attrs", "subtype", "", CompVersion{ .sinkVersion = "" });
335 std::shared_ptr<MetaCapabilityInfo> metaCapInfoPtr = std::make_shared<MetaCapabilityInfo>(
336 "devid_123", "dhid_123", "devname", devType, DHType::CAMERA, "attrs", "subtype", "udidhash_123",
337 CompVersion{ .sinkVersion = "" });
338 auto ret = metaCapInfoPtr->Compare(metaCapInfo);
339 EXPECT_EQ(false, ret);
340 }
341
342 HWTEST_F(MetaCapInfoTest, Compare_009, TestSize.Level0)
343 {
344 uint16_t devType = 1;
345 MetaCapabilityInfo metaCapInfo("devid_123", "dhid_123", "devname",
346 devType, DHType::CAMERA, "attrs", "subtype", "udidhash_123", CompVersion{ .sinkVersion = "" });
347 std::shared_ptr<MetaCapabilityInfo> metaCapInfoPtr = std::make_shared<MetaCapabilityInfo>(
348 "devid_123", "dhid_123", "devname", devType, DHType::CAMERA, "attrs", "subtype", "udidhash_123",
349 CompVersion{ .sinkVersion = "1.0" });
350 auto ret = metaCapInfoPtr->Compare(metaCapInfo);
351 EXPECT_EQ(false, ret);
352 }
353
354 HWTEST_F(MetaCapInfoTest, Compare_010, TestSize.Level0)
355 {
356 uint16_t devType = 1;
357 MetaCapabilityInfo metaCapInfo("devid_123", "dhid_123", "devname",
358 devType, DHType::CAMERA, "attrs", "subtype", "udidhash_123", CompVersion{ .sinkVersion = "1.0" });
359 std::shared_ptr<MetaCapabilityInfo> metaCapInfoPtr = std::make_shared<MetaCapabilityInfo>(
360 "devid_123", "dhid_123", "devname", devType, DHType::CAMERA, "attrs", "subtype", "udidhash_123",
361 CompVersion{ .sinkVersion = "1.0" });
362 auto ret = metaCapInfoPtr->Compare(metaCapInfo);
363 EXPECT_EQ(true, ret);
364 }
365 }
366 }