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 "cmsis_os.h"
17 #include "hctest.h"
18 #include "samgr_lite.h"
19
20 #define PRESSURE_BASE (1024 * 10)
21
22 typedef struct DemoApi {
23 INHERIT_IUNKNOWN;
24 } DemoApi;
25
26 typedef struct DemoFeature {
27 INHERIT_FEATURE;
28 INHERIT_IUNKNOWNENTRY(DemoApi);
29 Identity identity;
30 } DemoFeature;
31
GetName(Service * service)32 static const char *GetName(Service *service)
33 {
34 (void)service;
35 return "serviceName401";
36 }
37
38 typedef struct ExampleService {
39 INHERIT_SERVICE;
40 Identity identity;
41 } ExampleService;
42
Initialize(Service * service,Identity identity)43 static BOOL Initialize(Service *service, Identity identity)
44 {
45 ExampleService *example = (ExampleService *)service;
46 example->identity = identity;
47 return TRUE;
48 }
49
MessageHandle(Service * service,Request * msg)50 static BOOL MessageHandle(Service *service, Request *msg)
51 {
52 (void)service;
53 (void)msg;
54 return FALSE;
55 }
56
GetTaskConfig(Service * service)57 static TaskConfig GetTaskConfig(Service *service)
58 {
59 (void)service;
60 TaskConfig config = {
61 LEVEL_HIGH,
62 PRI_ABOVE_NORMAL,
63 0x800,
64 20,
65 SHARED_TASK
66 };
67 return config;
68 }
69
70 static ExampleService g_service = {
71 .GetName = GetName,
72 .Initialize = Initialize,
73 .MessageHandle = MessageHandle,
74 .GetTaskConfig = GetTaskConfig,
75 .identity = {-1, -1, NULL},
76 };
77
FEATURE_GetName(Feature * feature)78 static const char *FEATURE_GetName(Feature *feature)
79 {
80 (void)feature;
81 return "featureName401";
82 }
FEATURE_OnInitialize(Feature * feature,Service * parent,Identity identity)83 static void FEATURE_OnInitialize(Feature *feature, Service *parent, Identity identity)
84 {
85 (void)parent;
86 DemoFeature *demoFeature = (DemoFeature *)feature;
87 demoFeature->identity = identity;
88 }
FEATURE_OnStop(Feature * feature,Identity identity)89 static void FEATURE_OnStop(Feature *feature, Identity identity)
90 {
91 (void)feature;
92 (void)identity;
93 }
94
FEATURE_OnMessage(Feature * feature,Request * request)95 static BOOL FEATURE_OnMessage(Feature *feature, Request *request)
96 {
97 (void)feature;
98 (void)request;
99 return TRUE;
100 }
101
102 static DemoFeature g_feature = {
103 .GetName = FEATURE_GetName,
104 .OnInitialize = FEATURE_OnInitialize,
105 .OnStop = FEATURE_OnStop,
106 .OnMessage = FEATURE_OnMessage,
107 .ref = 1,
108 .iUnknown = {
109 DEFAULT_IUNKNOWN_IMPL,
110 },
111 .identity = {-1, -1, NULL},
112 };
113
114 LITE_TEST_SUIT(test, samgr, FeatureApiTestSuite);
115
FeatureApiTestSuiteSetUp(void)116 static BOOL FeatureApiTestSuiteSetUp(void)
117 {
118 return TRUE;
119 }
120
FeatureApiTestSuiteTearDown(void)121 static BOOL FeatureApiTestSuiteTearDown(void)
122 {
123 return TRUE;
124 }
125
126 /**
127 * @tc.number : DMSLite_SAMGR_RegisterFeatureApi_0010
128 * @tc.name : Api can be registered under a feature
129 * @tc.desc : [C- SOFTWARE -0200]
130 */
131 LITE_TEST_CASE(FeatureApiTestSuite, testRegisterFeatureApi0010, Function | MediumTest | Level2)
132 {
133 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
134 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
135
136 BOOL result = SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401",
137 GET_IUNKNOWN(g_feature));
138 TEST_ASSERT_EQUAL_INT(result, TRUE);
139
140 SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "featureName401");
141 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
142 SAMGR_GetInstance()->UnregisterService("serviceName401");
143 }
144
145 /**
146 * @tc.number : DMSLite_SAMGR_RegisterFeatureApi_0020
147 * @tc.name : API failed to register if the specified service name is null or space
148 * @tc.desc : [C- SOFTWARE -0200]
149 */
150 LITE_TEST_CASE(FeatureApiTestSuite, testRegisterFeatureApi0020, Function | MediumTest | Level2)
151 {
152 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
153 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
154
155 BOOL result = SAMGR_GetInstance()->RegisterFeatureApi(NULL, "featureName401", GET_IUNKNOWN(g_feature));
156 TEST_ASSERT_EQUAL_INT(result, FALSE);
157
158 result = SAMGR_GetInstance()->RegisterFeatureApi("", "featureName401", GET_IUNKNOWN(g_feature));
159 TEST_ASSERT_EQUAL_INT(result, FALSE);
160
161 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
162 SAMGR_GetInstance()->UnregisterService("serviceName401");
163 }
164
165 /**
166 * @tc.number : DMSLite_SAMGR_RegisterFeatureApi_0030
167 * @tc.name : API failed to register if the specified feature is space
168 * @tc.desc : [C- SOFTWARE -0200]
169 */
170 LITE_TEST_CASE(FeatureApiTestSuite, testRegisterFeatureApi0030, Function | MediumTest | Level2)
171 {
172 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
173 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
174
175 BOOL result = SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "", GET_IUNKNOWN(g_feature));
176 TEST_ASSERT_EQUAL_INT(result, FALSE);
177
178 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
179 SAMGR_GetInstance()->UnregisterService("serviceName401");
180 }
181
182 /**
183 * @tc.number : DMSLite_SAMGR_RegisterFeatureApi_0040
184 * @tc.name : API failed to register if the api is null
185 * @tc.desc : [C- SOFTWARE -0200]
186 */
187 LITE_TEST_CASE(FeatureApiTestSuite, testRegisterFeatureApi0040, Function | MediumTest | Level2)
188 {
189 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
190 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
191
192 BOOL result = SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401", NULL);
193 TEST_ASSERT_EQUAL_INT(result, FALSE);
194
195 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
196 SAMGR_GetInstance()->UnregisterService("serviceName401");
197 }
198
199 /**
200 * @tc.number : DMSLite_SAMGR_RegisterFeatureApi_0050
201 * @tc.name : If the specified feature is null api will be registered as default feature api
202 * @tc.desc : [C- SOFTWARE -0200]
203 */
204 LITE_TEST_CASE(FeatureApiTestSuite, testRegisterFeatureApi0050, Function | MediumTest | Level2)
205 {
206 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
207 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
208
209 // feature is null, handle as default feature api
210 BOOL result = SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", NULL, GET_IUNKNOWN(g_feature));
211 TEST_ASSERT_EQUAL_INT(result, TRUE);
212
213 IUnknown *resultIUnknown = SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", NULL);
214 TEST_ASSERT_EQUAL_INT(resultIUnknown != NULL, TRUE);
215
216 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
217 SAMGR_GetInstance()->UnregisterService("serviceName401");
218 }
219
220 /**
221 * @tc.number : DMSLite_SAMGR_RegisterFeatureApi_0060
222 * @tc.name : API failed to register if the specified service name does not exist
223 * @tc.desc : [C- SOFTWARE -0200]
224 */
225 LITE_TEST_CASE(FeatureApiTestSuite, testRegisterFeatureApi0060, Function | MediumTest | Level2)
226 {
227 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
228 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
229
230 BOOL result = SAMGR_GetInstance()->RegisterFeatureApi("noExistService", "featureName401", GET_IUNKNOWN(g_feature));
231 TEST_ASSERT_EQUAL_INT(result, FALSE);
232
233 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
234 SAMGR_GetInstance()->UnregisterService("serviceName401");
235 }
236
237 /**
238 * @tc.number : DMSLite_SAMGR_RegisterFeatureApi_0070
239 * @tc.name : API failed to register if the specified feature name does not exist
240 * @tc.desc : [C- SOFTWARE -0200]
241 */
242 LITE_TEST_CASE(FeatureApiTestSuite, testRegisterFeatureApi0070, Function | MediumTest | Level2)
243 {
244 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
245 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
246
247 BOOL result = SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "noExistFeature", GET_IUNKNOWN(g_feature));
248 TEST_ASSERT_EQUAL_INT(result, FALSE);
249
250 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
251 SAMGR_GetInstance()->UnregisterService("serviceName401");
252 }
253
254 /**
255 * @tc.number : DMSLite_SAMGR_RegisterFeatureApi_0080
256 * @tc.name : feature api can not be registered twice
257 * @tc.desc : [C- SOFTWARE -0200]
258 */
259 LITE_TEST_CASE(FeatureApiTestSuite, testRegisterFeatureApi0080, Function | MediumTest | Level2)
260 {
261 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
262 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
263 SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401", GET_IUNKNOWN(g_feature));
264
265 BOOL result = SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401",
266 GET_IUNKNOWN(g_feature));
267 TEST_ASSERT_EQUAL_INT(FALSE, result);
268
269 SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "featureName401");
270 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
271 SAMGR_GetInstance()->UnregisterService("serviceName401");
272 }
273
274 /**
275 * @tc.number : DMSLite_SAMGR_GetFeatureApi_0010
276 * @tc.name : Service can query API by serverName-featureName
277 * @tc.desc : [C- SOFTWARE -0200]
278 */
279 LITE_TEST_CASE(FeatureApiTestSuite, testGetFeatureApi0010, Function | MediumTest | Level2)
280 {
281 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
282 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
283 SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401", GET_IUNKNOWN(g_feature));
284
285 IUnknown *resultIUnknown = SAMGR_GetInstance()->GetFeatureApi("serviceName401", "featureName401");
286 TEST_ASSERT_EQUAL_INT(resultIUnknown != NULL, TRUE);
287
288 SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "featureName401");
289 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
290 SAMGR_GetInstance()->UnregisterService("serviceName401");
291 }
292
293 /**
294 * @tc.number : DMSLite_SAMGR_GetFeatureApi_0020
295 * @tc.name : If the specified serviceName is NULL or space GetFeatureApi return NULL
296 * @tc.desc : [C- SOFTWARE -0200]
297 */
298 LITE_TEST_CASE(FeatureApiTestSuite, testGetFeatureApi0020, Function | MediumTest | Level2)
299 {
300 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
301 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
302 SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401", GET_IUNKNOWN(g_feature));
303
304 IUnknown *resultIUnknown = SAMGR_GetInstance()->GetFeatureApi(NULL, "featureName401");
305 TEST_ASSERT_EQUAL_INT(resultIUnknown == NULL, TRUE);
306 resultIUnknown = SAMGR_GetInstance()->GetFeatureApi("", "featureName401");
307 TEST_ASSERT_EQUAL_INT(resultIUnknown == NULL, TRUE);
308
309 SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "featureName401");
310 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
311 SAMGR_GetInstance()->UnregisterService("serviceName401");
312 }
313
314 /**
315 * @tc.number : DMSLite_SAMGR_GetFeatureApi_0030
316 * @tc.name : If the specified featureName is NULL or space GetFeatureApi return NULL
317 * @tc.desc : [C- SOFTWARE -0200]
318 */
319 LITE_TEST_CASE(FeatureApiTestSuite, testGetFeatureApi0030, Function | MediumTest | Level2)
320 {
321 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
322 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
323 SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401", GET_IUNKNOWN(g_feature));
324
325 IUnknown *resultIUnknown = SAMGR_GetInstance()->GetFeatureApi("serviceName401", NULL);
326 TEST_ASSERT_EQUAL_INT(resultIUnknown == NULL, TRUE);
327 resultIUnknown = SAMGR_GetInstance()->GetFeatureApi("serviceName401", "");
328 TEST_ASSERT_EQUAL_INT(resultIUnknown == NULL, TRUE);
329
330 SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "featureName401");
331 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
332 SAMGR_GetInstance()->UnregisterService("serviceName401");
333 }
334
335 /**
336 * @tc.number : DMSLite_SAMGR_GetFeatureApi_0040
337 * @tc.name : If the specified featureName does not exist GetFeatureApi return NULL
338 * @tc.desc : [C- SOFTWARE -0200]
339 */
340 LITE_TEST_CASE(FeatureApiTestSuite, testGetFeatureApi0040, Function | MediumTest | Level2)
341 {
342 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
343 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
344
345 IUnknown *resultIUnknown = SAMGR_GetInstance()->GetFeatureApi("noExistService", "featureName401");
346 TEST_ASSERT_EQUAL_INT(resultIUnknown == NULL, TRUE);
347 resultIUnknown = SAMGR_GetInstance()->GetFeatureApi("serviceName401", "noExistFeature");
348 TEST_ASSERT_EQUAL_INT(resultIUnknown == NULL, TRUE);
349
350 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
351 SAMGR_GetInstance()->UnregisterService("serviceName401");
352 }
353
354 /**
355 * @tc.number : DMSLite_SAMGR_GetFeatureApi_0050
356 * @tc.name : If no API under the specified feature GetFeatureApi return NULL
357 * @tc.desc : [C- SOFTWARE -0200]
358 */
359 LITE_TEST_CASE(FeatureApiTestSuite, testGetFeatureApi0050, Function | MediumTest | Level2)
360 {
361 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
362 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
363
364 IUnknown *resultIUnknown = SAMGR_GetInstance()->GetFeatureApi("serviceName401", "featureName401");
365 TEST_ASSERT_EQUAL_INT(resultIUnknown == NULL, TRUE);
366
367 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
368 SAMGR_GetInstance()->UnregisterService("serviceName401");
369 }
370
371 /**
372 * @tc.number : DMSLite_SAMGR_GetFeatureApi_0060
373 * @tc.name : The results of multiple queries are the same for GetFeatureApi
374 * @tc.desc : [C- SOFTWARE -0200]
375 */
376 LITE_TEST_CASE(FeatureApiTestSuite, testGetFeatureApi0060, Function | MediumTest | Level2)
377 {
378 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
379 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
380 SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401", GET_IUNKNOWN(g_feature));
381
382 IUnknown *resultIUnknown1 = SAMGR_GetInstance()->GetFeatureApi("serviceName401", "featureName401");
383 IUnknown *resultIUnknown2 = SAMGR_GetInstance()->GetFeatureApi("serviceName401", "featureName401");
384 TEST_ASSERT_EQUAL_INT(resultIUnknown1 == resultIUnknown2, TRUE);
385
386 SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "featureName401");
387 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
388 SAMGR_GetInstance()->UnregisterService("serviceName401");
389 }
390
391 /**
392 * @tc.number : DMSLite_SAMGR_UnregisterFeatureApi_0010
393 * @tc.name : FeatureApi can be unregistered
394 * @tc.desc : [C- SOFTWARE -0200]
395 */
396 LITE_TEST_CASE(FeatureApiTestSuite, testUnregisterFeatureApi0010, Function | MediumTest | Level2)
397 {
398 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
399 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
400 SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401", GET_IUNKNOWN(g_feature));
401
402 IUnknown *resultIUnknown = SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "featureName401");
403 TEST_ASSERT_EQUAL_INT(resultIUnknown != NULL, TRUE);
404
405 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
406 SAMGR_GetInstance()->UnregisterService("serviceName401");
407 }
408
409 /**
410 * @tc.number : DMSLite_SAMGR_UnregisterFeatureApi_0020
411 * @tc.name : FeatureApi failed to unregister if the specified serviceName is NULL or space
412 * @tc.desc : [C- SOFTWARE -0200]
413 */
414 LITE_TEST_CASE(FeatureApiTestSuite, testUnregisterFeatureApi0020, Function | MediumTest | Level2)
415 {
416 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
417 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
418 SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401", GET_IUNKNOWN(g_feature));
419
420 IUnknown *resultIUnknown = SAMGR_GetInstance()->UnregisterFeatureApi(NULL, "featureName401");
421 TEST_ASSERT_EQUAL_INT(resultIUnknown == NULL, TRUE);
422 resultIUnknown = SAMGR_GetInstance()->UnregisterFeatureApi("", "featureName401");
423 TEST_ASSERT_EQUAL_INT(resultIUnknown == NULL, TRUE);
424
425 SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "featureName401");
426 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
427 SAMGR_GetInstance()->UnregisterService("serviceName401");
428 }
429
430 /**
431 * @tc.number : DMSLite_SAMGR_UnregisterFeatureApi_0030
432 * @tc.name : FeatureApi failed to unregister if the specified featureName is space
433 * @tc.desc : [C- SOFTWARE -0200]
434 */
435 LITE_TEST_CASE(FeatureApiTestSuite, testUnregisterFeatureApi0030, Function | MediumTest | Level2)
436 {
437 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
438 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
439 SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401", GET_IUNKNOWN(g_feature));
440
441 IUnknown *resultIUnknown = SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "");
442 TEST_ASSERT_EQUAL_INT(resultIUnknown == NULL, TRUE);
443
444 SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "featureName401");
445 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
446 SAMGR_GetInstance()->UnregisterService("serviceName401");
447 }
448
449 /**
450 * @tc.number : DMSLite_SAMGR_UnregisterFeatureApi_0040
451 * @tc.name : FeatureApi failed to unregister if the specified serviceName does not exist
452 * @tc.desc : [C- SOFTWARE -0200]
453 */
454 LITE_TEST_CASE(FeatureApiTestSuite, testUnregisterFeatureApi0040, Function | MediumTest | Level2)
455 {
456 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
457 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
458 SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401", GET_IUNKNOWN(g_feature));
459
460 IUnknown *resultIUnknown = SAMGR_GetInstance()->UnregisterFeatureApi("noExistService", "featureName401");
461 TEST_ASSERT_EQUAL_INT(resultIUnknown == NULL, TRUE);
462
463 SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "featureName401");
464 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
465 SAMGR_GetInstance()->UnregisterService("serviceName401");
466 }
467
468 /**
469 * @tc.number : DMSLite_SAMGR_UnregisterFeatureApi_0050
470 * @tc.name : FeatureApi failed to unregister if the specified featureName does not exist
471 * @tc.desc : [C- SOFTWARE -0200]
472 */
473 LITE_TEST_CASE(FeatureApiTestSuite, testUnregisterFeatureApi0050, Function | MediumTest | Level2)
474 {
475 SAMGR_GetInstance()->RegisterService((Service *)&g_service);
476 SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
477 SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401", GET_IUNKNOWN(g_feature));
478
479 IUnknown *resultIUnknown = SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "noExistFeature");
480 TEST_ASSERT_EQUAL_INT(resultIUnknown == NULL, TRUE);
481
482 SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "featureName401");
483 SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
484 SAMGR_GetInstance()->UnregisterService("serviceName401");
485 }
486
487 /**
488 * @tc.number : DMSLite_SAMGR_UnregisterFeatureApi_0060
489 * @tc.name : Register and unregister feature api repeatedly, no memory leak
490 * @tc.desc : [C- SOFTWARE -0200]
491 */
492 LITE_TEST_CASE(FeatureApiTestSuite, testUnregisterFeatureApi0060, Function | MediumTest | Level2)
493 {
494 // RegisterService and unregister feature api over and over again, if there is memory leak samgr will crash
495 for (int i = 0; i < PRESSURE_BASE; i++) {
496 BOOL result = SAMGR_GetInstance()->RegisterService((Service *)&g_service);
497 TEST_ASSERT_EQUAL_INT(result, TRUE);
498 result = SAMGR_GetInstance()->RegisterFeature("serviceName401", (Feature *)&g_feature);
499 TEST_ASSERT_EQUAL_INT(result, TRUE);
500 result = SAMGR_GetInstance()->RegisterFeatureApi("serviceName401", "featureName401", GET_IUNKNOWN(g_feature));
501 TEST_ASSERT_EQUAL_INT(result, TRUE);
502
503 IUnknown *resultIUnknown = SAMGR_GetInstance()->UnregisterFeatureApi("serviceName401", "featureName401");
504 TEST_ASSERT_EQUAL_INT(resultIUnknown != NULL, TRUE);
505 Feature *resultFeature = SAMGR_GetInstance()->UnregisterFeature("serviceName401", "featureName401");
506 TEST_ASSERT_EQUAL_INT(resultFeature != NULL, TRUE);
507 Service *resultService = SAMGR_GetInstance()->UnregisterService("serviceName401");
508 TEST_ASSERT_EQUAL_INT(resultService != NULL, TRUE);
509 }
510 }
511
512 RUN_TEST_SUITE(FeatureApiTestSuite);