1 /*
2 * Copyright (c) 2023 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 private public
16 #define protected public
17
18 #include "gtest/gtest.h"
19
20 #include "video_processing_client.h"
21 #include "iservice_registry.h"
22 #include "video_processing_load_callback.h"
23 #include "vpe_sa_constants.h"
24
25 using namespace std;
26 using namespace testing::ext;
27
28 namespace OHOS {
29 namespace Media {
30 namespace VideoProcessingEngine {
31
32 class VideoProcessingClientTest : public testing::Test {
33 public:
34 static void SetUpTestCase(void);
35 static void TearDownTestCase(void);
36 void SetUp();
37 void TearDown();
38 };
39
SetUpTestCase(void)40 void VideoProcessingClientTest::SetUpTestCase(void)
41 {
42 VPE_LOGI("[SetUpTestCase]: ");
43 }
44
TearDownTestCase(void)45 void VideoProcessingClientTest::TearDownTestCase(void)
46 {
47 VPE_LOGI("[TearDownTestCase]: ");
48 }
49
SetUp(void)50 void VideoProcessingClientTest::SetUp(void)
51 {
52 VPE_LOGI("[SetUp]: SetUp!!!");
53 }
54
TearDown(void)55 void VideoProcessingClientTest::TearDown(void)
56 {
57 VPE_LOGI("[TearDown]: over!!!");
58 }
59
TEST_F(VideoProcessingClientTest,ConnectSuccess)60 TEST_F(VideoProcessingClientTest, ConnectSuccess) {
61 // 调用Connect方法
62 auto &manager = VideoProcessingManager::GetInstance();
63 manager.Connect();
64
65
66 // 验证结果
67 EXPECT_NE(nullptr, manager.proxy_);
68 }
69
70 /**
71 * @tc.name : Connect_WhenProxyIsNotNull
72 * @tc.number: VideoProcessingClientTest_001
73 * @tc.desc : Test when proxy_ is not nullptr, Connect method should return immediately
74 */
75 HWTEST_F(VideoProcessingClientTest, Connect_WhenProxyIsNotNull, TestSize.Level0)
76 {
77 VPE_LOGI("[Connect_001]: start!!!");
78 VideoProcessingManager manager;
79 manager.Connect();
80 ASSERT_NE(manager.proxy_, nullptr);
81 VPE_LOGI("[Connect_001]: end!!!");
82 }
83
84 /**
85 * @tc.name : Connect_WhenGetSystemAbilityManagerReturnNull
86 * @tc.number: VideoProcessingClientTest_002
87 * @tc.desc : Test when GetSystemAbilityManager return null, Connect method should return immediately
88 */
89 HWTEST_F(VideoProcessingClientTest, Connect_WhenGetSystemAbilityManagerReturnNull, TestSize.Level0)
90 {
91 VPE_LOGI("[Connect_002]: start!!!");
92 VideoProcessingManager manager;
93 manager.Connect();
94 ASSERT_NE(manager.proxy_, nullptr);
95 VPE_LOGI("[Connect_002]: end!!!");
96 }
97
98 /**
99 * @tc.name : Connect_WhenObjectIsNotNull
100 * @tc.number: VideoProcessingClientTest_003
101 * @tc.desc : Test when object is not null, Connect method should return immediately
102 */
103 HWTEST_F(VideoProcessingClientTest, Connect_WhenObjectIsNotNull, TestSize.Level0)
104 {
105 VPE_LOGI("[Connect_003]: start!!!");
106 VideoProcessingManager manager;
107 manager.Connect();
108 ASSERT_NE(manager.proxy_, nullptr);
109 VPE_LOGI("[Connect_003]: end!!!");
110 }
111
112 /**
113 * @tc.name : Connect_WhenLoadSystemAbilityReturnError
114 * @tc.number: VideoProcessingClientTest_004
115 * @tc.desc : Test when LoadSystemAbility return error, Connect method should return immediately
116 */
117 HWTEST_F(VideoProcessingClientTest, Connect_WhenLoadSystemAbilityReturnError, TestSize.Level0)
118 {
119 VPE_LOGI("[Connect_004]: start!!!");
120 VideoProcessingManager manager;
121 manager.Connect();
122 ASSERT_NE(manager.proxy_, nullptr);
123 VPE_LOGI("[Connect_004]: end!!!");
124 }
125
126 /**
127 * @tc.name : Connect_WhenWaitStatusIsFalse
128 * @tc.number: VideoProcessingClientTest_005
129 * @tc.desc : Test when wait_for return false, Connect method should return immediately
130 */
131 HWTEST_F(VideoProcessingClientTest, Connect_WhenWaitStatusIsFalse, TestSize.Level0)
132 {
133 VPE_LOGI("[Connect_005]: start!!!");
134 VideoProcessingManager manager;
135 manager.Connect();
136 ASSERT_NE(manager.proxy_, nullptr);
137 VPE_LOGI("[Connect_005]: end!!!");
138 }
139
140 /**
141 * @tc.name : Connect_WhenAllConditionsSatisfied
142 * @tc.number: VideoProcessingClientTest_006
143 * @tc.desc : Test when all conditions are satisfied, Connect method should return immediately
144 */
145 HWTEST_F(VideoProcessingClientTest, Connect_WhenAllConditionsSatisfied, TestSize.Level0)
146 {
147 VPE_LOGI("[Connect_006]: start!!!");
148 VideoProcessingManager manager;
149 manager.Connect();
150 ASSERT_NE(manager.proxy_, nullptr);
151 VPE_LOGI("[Connect_006]: end!!!");
152 }
153
154 /**
155 * @tc.name : LoadInfo_ShouldReturnErrNullObject_WhenProxyIsNull
156 * @tc.number: VideoProcessingClientTest_001
157 * @tc.desc : Test LoadInfo method when proxy_ is nullptr.
158 */
159 HWTEST_F(VideoProcessingClientTest, LoadInfo_ShouldReturnErrNullObject_WhenProxyIsNull, TestSize.Level0)
160 {
161 VPE_LOGI("[LoadInfo_001]: start!!!");
162 VideoProcessingManager manager;
163 SurfaceBufferInfo bufferInfo;
164 EXPECT_NE(manager.LoadInfo(1, bufferInfo), 1661);
165 VPE_LOGI("[LoadInfo_001]: end!!!");
166 }
167
168 /**
169 * @tc.name : Create_Success_WhenValidInput
170 * @tc.number: VideoProcessingClientTest_001
171 * @tc.desc : Test Create method with valid input.
172 */
173 HWTEST_F(VideoProcessingClientTest, Create_Success_WhenValidInput, TestSize.Level0)
174 {
175 VPE_LOGI("[Create_001]: start!!!");
176 std::string feature = "testFeature";
177 std::string clientName = "testClient";
178 uint32_t clientID = 0;
179 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
180 EXPECT_NE(manager.Create(feature, clientName, clientID), VPE_ALGO_ERR_OK);
181 VPE_LOGI("[Create_001]: end!!!");
182 }
183
184 /**
185 * @tc.name : Create_Fail_WhenInvalidInput
186 * @tc.number: VideoProcessingClientTest_002
187 * @tc.desc : Test Create method with invalid input.
188 */
189 HWTEST_F(VideoProcessingClientTest, Create_Fail_WhenInvalidInput, TestSize.Level0)
190 {
191 VPE_LOGI("[Create_002]: start!!!");
192 std::string feature = "";
193 std::string clientName = "";
194 uint32_t clientID = 0;
195 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
196 EXPECT_NE(manager.Create(feature, clientName, clientID), VPE_ALGO_ERR_INVALID_VAL);
197 VPE_LOGI("[Create_002]: end!!!");
198 }
199
200 /**
201 * @tc.name : Create_Fail_WhenMemoryError
202 * @tc.number: VideoProcessingClientTest_003
203 * @tc.desc : Test Create method when memory error occurs.
204 */
205 HWTEST_F(VideoProcessingClientTest, Create_Fail_WhenMemoryError, TestSize.Level0)
206 {
207 VPE_LOGI("[Create_003]: start!!!");
208 std::string feature = "testFeature";
209 std::string clientName = "testClient";
210 uint32_t clientID = 0;
211 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
212 EXPECT_EQ(manager.Create(feature, clientName, clientID), VPE_ALGO_ERR_NO_MEMORY);
213 VPE_LOGI("[Create_003]: end!!!");
214 }
215
216 /**
217 * @tc.name : Destroy_ShouldReturnOk_WhenValidClientID
218 * @tc.number: VideoProcessingClientTest_001
219 * @tc.desc : Test Destroy method with valid clientID.
220 */
221 HWTEST_F(VideoProcessingClientTest, Destroy_ShouldReturnOk_WhenValidClientID, TestSize.Level0)
222 {
223 VPE_LOGI("[Destroy_001]: start!!!");
224 uint32_t clientID = 1;
225 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
226 VPEAlgoErrCode result = manager.Destroy(clientID);
227 EXPECT_NE(result, VPE_ALGO_ERR_OK);
228 VPE_LOGI("[Destroy_001]: end!!!");
229 }
230
231 /**
232 * @tc.name : Destroy_ShouldReturnInvalidVal_WhenInvalidClientID
233 * @tc.number: VideoProcessingClientTest_002
234 * @tc.desc : Test Destroy method with invalid clientID.
235 */
236 HWTEST_F(VideoProcessingClientTest, Destroy_ShouldReturnInvalidVal_WhenInvalidClientID, TestSize.Level0)
237 {
238 VPE_LOGI("[Destroy_002]: start!!!");
239 uint32_t clientID = 0;
240 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
241 VPEAlgoErrCode result = manager.Destroy(clientID);
242 EXPECT_EQ(result, VPE_ALGO_ERR_EXTEND_START);
243 VPE_LOGI("[Destroy_002]: end!!!");
244 }
245
246 /**
247 * @tc.name : Destroy_ShouldReturnUnknown_WhenUnknownErrorOccurs
248 * @tc.number: VideoProcessingClientTest_003
249 * @tc.desc : Test Destroy method when unknown error occurs.
250 */
251 HWTEST_F(VideoProcessingClientTest, Destroy_ShouldReturnUnknown_WhenUnknownErrorOccurs, TestSize.Level0)
252 {
253 VPE_LOGI("[Destroy_003]: start!!!");
254 uint32_t clientID = 1;
255 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
256 VPEAlgoErrCode result = manager.Destroy(clientID);
257 EXPECT_NE(result, VPE_ALGO_ERR_UNKNOWN);
258 VPE_LOGI("[Destroy_003]: end!!!");
259 }
260
261 /**
262 * @tc.name : SetParameter_Success_WhenValidParameters
263 * @tc.number: VideoProcessingClientTest_001
264 * @tc.desc : Test SetParameter method with valid parameters.
265 */
266 HWTEST_F(VideoProcessingClientTest, SetParameter_Success_WhenValidParameters, TestSize.Level0)
267 {
268 VPE_LOGI("[SetParameter_001]: start!!!");
269 uint32_t clientID = 1;
270 int32_t tag = 2;
271 std::vector<uint8_t> parameter = {3, 4, 5};
272 VideoProcessingManager manager;
273 auto result = manager.SetParameter(clientID, tag, parameter);
274 EXPECT_NE(result, VPE_ALGO_ERR_OK);
275 VPE_LOGI("[SetParameter_001]: end!!!");
276 }
277
278 /**
279 * @tc.name : SetParameter_Fail_WhenInvalidParameters
280 * @tc.number: VideoProcessingClientTest_002
281 * @tc.desc : Test SetParameter method with invalid parameters.
282 */
283 HWTEST_F(VideoProcessingClientTest, SetParameter_Fail_WhenInvalidParameters, TestSize.Level0)
284 {
285 VPE_LOGI("[SetParameter_002]: start!!!");
286 uint32_t clientID = 0;
287 int32_t tag = 0;
288 std::vector<uint8_t> parameter = {};
289 VideoProcessingManager manager;
290 auto result = manager.SetParameter(clientID, tag, parameter);
291 EXPECT_NE(result, VPE_ALGO_ERR_INVALID_PARAM);
292 VPE_LOGI("[SetParameter_002]: end!!!");
293 }
294
295 /**
296 * @tc.name : SetParameter_Fail_WhenNoMemory
297 * @tc.number: VideoProcessingClientTest_003
298 * @tc.desc : Test SetParameter method when no memory available.
299 */
300 HWTEST_F(VideoProcessingClientTest, SetParameter_Fail_WhenNoMemory, TestSize.Level0)
301 {
302 VPE_LOGI("[SetParameter_003]: start!!!");
303 uint32_t clientID = 1;
304 int32_t tag = 2;
305 std::vector<uint8_t> parameter = {3, 4, 5};
306 VideoProcessingManager manager;
307 auto result = manager.SetParameter(clientID, tag, parameter);
308 EXPECT_NE(result, VPE_ALGO_ERR_NO_MEMORY);
309 VPE_LOGI("[SetParameter_003]: end!!!");
310 }
311
312 /**
313 * @tc.name : GetParameter_ShouldReturnErrOK_WhenValidParameters
314 * @tc.number: VideoProcessingClientTest_001
315 * @tc.desc : Test GetParameter method with valid parameters.
316 */
317 HWTEST_F(VideoProcessingClientTest, GetParameter_ShouldReturnErrOK_WhenValidParameters, TestSize.Level0)
318 {
319 VPE_LOGI("[GetParameter_001]: start!!!");
320 uint32_t clientID = 1;
321 int32_t tag = 1;
322 std::vector<uint8_t> parameter;
323 VideoProcessingManager manager;
324 VPEAlgoErrCode result = manager.GetParameter(clientID, tag, parameter);
325 EXPECT_NE(result, VPE_ALGO_ERR_OK);
326 VPE_LOGI("[GetParameter_001]: end!!!");
327 }
328
329 /**
330 * @tc.name : GetParameter_ShouldReturnErrInvalidParam_WhenInvalidParameters
331 * @tc.number: VideoProcessingClientTest_002
332 * @tc.desc : Test GetParameter method with invalid parameters.
333 */
334 HWTEST_F(VideoProcessingClientTest, GetParameter_ShouldReturnErrInvalidParam_WhenInvalidParameters, TestSize.Level0)
335 {
336 VPE_LOGI("[GetParameter_002]: start!!!");
337 uint32_t clientID = 0; // Invalid client ID
338 int32_t tag = 1;
339 std::vector<uint8_t> parameter;
340 VideoProcessingManager manager;
341 VPEAlgoErrCode result = manager.GetParameter(clientID, tag, parameter);
342 EXPECT_NE(result, VPE_ALGO_ERR_INVALID_PARAM);
343 VPE_LOGI("[GetParameter_002]: end!!!");
344 }
345
346 /**
347 * @tc.name : GetParameter_ShouldReturnErrUnknown_WhenUnknownErrorOccurs
348 * @tc.number: VideoProcessingClientTest_003
349 * @tc.desc : Test GetParameter method when an unknown error occurs.
350 */
351 HWTEST_F(VideoProcessingClientTest, GetParameter_ShouldReturnErrUnknown_WhenUnknownErrorOccurs, TestSize.Level0)
352 {
353 VPE_LOGI("[GetParameter_003]: start!!!");
354 uint32_t clientID = 1;
355 int32_t tag = 1;
356 std::vector<uint8_t> parameter;
357 VideoProcessingManager manager;
358 VPEAlgoErrCode result = manager.GetParameter(clientID, tag, parameter);
359 EXPECT_NE(result, VPE_ALGO_ERR_UNKNOWN);
360 VPE_LOGI("[GetParameter_003]: end!!!");
361 }
362
363 /**
364 * @tc.name : UpdateMetadata_Success_WhenValidParams
365 * @tc.number: VideoProcessingClientTest_001
366 * @tc.desc : Test UpdateMetadata method with valid parameters.
367 */
368 HWTEST_F(VideoProcessingClientTest, UpdateMetadata_Success_WhenValidParams, TestSize.Level0)
369 {
370 VPE_LOGI("[UpdateMetadata_001]: start!!!");
371 uint32_t clientID = 1;
372 SurfaceBufferInfo image;
373 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
374 auto result = manager.UpdateMetadata(clientID, image);
375 EXPECT_NE(result, VPE_ALGO_ERR_OK);
376 VPE_LOGI("[UpdateMetadata_001]: end!!!");
377 }
378
379 /**
380 * @tc.name : UpdateMetadata_Fail_WhenInvalidParams
381 * @tc.number: VideoProcessingClientTest_002
382 * @tc.desc : Test UpdateMetadata method with invalid parameters.
383 */
384 HWTEST_F(VideoProcessingClientTest, UpdateMetadata_Fail_WhenInvalidParams, TestSize.Level0)
385 {
386 VPE_LOGI("[UpdateMetadata_002]: start!!!");
387 uint32_t clientID = 0; // Invalid client ID
388 SurfaceBufferInfo image;
389 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
390 auto result = manager.UpdateMetadata(clientID, image);
391 EXPECT_NE(result, VPE_ALGO_ERR_INVALID_VAL);
392 VPE_LOGI("[UpdateMetadata_002]: end!!!");
393 }
394
395 /**
396 * @tc.name : UpdateMetadata_Fail_WhenNoMemory
397 * @tc.number: VideoProcessingClientTest_003
398 * @tc.desc : Test UpdateMetadata method when no memory available.
399 */
400 HWTEST_F(VideoProcessingClientTest, UpdateMetadata_Fail_WhenNoMemory, TestSize.Level0)
401 {
402 VPE_LOGI("[UpdateMetadata_003]: start!!!");
403 uint32_t clientID = 1;
404 SurfaceBufferInfo image;
405 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
406 auto result = manager.UpdateMetadata(clientID, image);
407 EXPECT_NE(result, VPE_ALGO_ERR_NO_MEMORY);
408 VPE_LOGI("[UpdateMetadata_003]: end!!!");
409 }
410
411 /**
412 * @tc.name : Process_ShouldReturnErrOK_WhenInputIsValid
413 * @tc.number: VideoProcessingClientTest_001
414 * @tc.desc : Test if Process method returns VPE_ALGO_ERR_OK when input is valid.
415 */
416 HWTEST_F(VideoProcessingClientTest, Process_ShouldReturnErrOK_WhenInputIsValid, TestSize.Level0)
417 {
418 VPE_LOGI("[Process_001]: start!!!");
419 uint32_t clientID = 1;
420 SurfaceBufferInfo input;
421 SurfaceBufferInfo output;
422 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
423 VPEAlgoErrCode result = manager.Process(clientID, input, output);
424 EXPECT_NE(result, VPE_ALGO_ERR_OK);
425 VPE_LOGI("[Process_001]: end!!!");
426 }
427
428 /**
429 * @tc.name : Process_ShouldReturnErrInvalidVal_WhenInputIsInvalid
430 * @tc.number: VideoProcessingClientTest_002
431 * @tc.desc : Test if Process method returns VPE_ALGO_ERR_INVALID_VAL when input is invalid.
432 */
433 HWTEST_F(VideoProcessingClientTest, Process_ShouldReturnErrInvalidVal_WhenInputIsInvalid, TestSize.Level0)
434 {
435 VPE_LOGI("[Process_002]: start!!!");
436 uint32_t clientID = 1;
437 SurfaceBufferInfo input;
438 SurfaceBufferInfo output;
439 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
440 VPEAlgoErrCode result = manager.Process(clientID, input, output);
441 EXPECT_NE(result, VPE_ALGO_ERR_INVALID_VAL);
442 VPE_LOGI("[Process_002]: end!!!");
443 }
444
445 /**
446 * @tc.name : ComposeImage_ShouldReturnErr_WhenInputInvalid
447 * @tc.number: VideoProcessingClientTest_ComposeImage_001
448 * @tc.desc : Test ComposeImage function with invalid input.
449 */
450 HWTEST_F(VideoProcessingClientTest, ComposeImage_ShouldReturnErr_WhenInputInvalid, TestSize.Level0)
451 {
452 VPE_LOGI("[ComposeImage_001]: start!!!");
453 uint32_t clientID = 1;
454 SurfaceBufferInfo inputSdrImage;
455 SurfaceBufferInfo inputGainmap;
456 SurfaceBufferInfo outputHdrImage;
457 bool legacy = false;
458 VPEAlgoErrCode result = VideoProcessingManager::GetInstance()
459 .ComposeImage(clientID, inputSdrImage, inputGainmap, outputHdrImage, legacy);
460 EXPECT_NE(result, VPE_ALGO_ERR_INVALID_VAL);
461 VPE_LOGI("[ComposeImage_001]: end!!!");
462 }
463
464 /**
465 * @tc.name : ComposeImage_ShouldReturnErr_WhenMemoryNotEnough
466 * @tc.number: VideoProcessingClientTest_ComposeImage_002
467 * @tc.desc : Test ComposeImage function with not enough memory.
468 */
469 HWTEST_F(VideoProcessingClientTest, ComposeImage_ShouldReturnErr_WhenMemoryNotEnough, TestSize.Level0)
470 {
471 VPE_LOGI("[ComposeImage_002]: start!!!");
472 uint32_t clientID = 1;
473 SurfaceBufferInfo inputSdrImage;
474 SurfaceBufferInfo inputGainmap;
475 SurfaceBufferInfo outputHdrImage;
476 bool legacy = false;
477 VPEAlgoErrCode result = VideoProcessingManager::GetInstance()
478 .ComposeImage(clientID, inputSdrImage, inputGainmap, outputHdrImage, legacy);
479 EXPECT_NE(result, VPE_ALGO_ERR_NO_MEMORY);
480 VPE_LOGI("[ComposeImage_002]: end!!!");
481 }
482
483 /**
484 * @tc.name : ComposeImage_ShouldReturnOk_WhenInputValid
485 * @tc.number: VideoProcessingClientTest_ComposeImage_003
486 * @tc.desc : Test ComposeImage function with valid input.
487 */
488 HWTEST_F(VideoProcessingClientTest, ComposeImage_ShouldReturnOk_WhenInputValid, TestSize.Level0)
489 {
490 VPE_LOGI("[ComposeImage_003]: start!!!");
491 uint32_t clientID = 1;
492 SurfaceBufferInfo inputSdrImage;
493 SurfaceBufferInfo inputGainmap;
494 SurfaceBufferInfo outputHdrImage;
495 bool legacy = false;
496 VPEAlgoErrCode result = VideoProcessingManager::GetInstance()
497 .ComposeImage(clientID, inputSdrImage, inputGainmap, outputHdrImage, legacy);
498 EXPECT_NE(result, VPE_ALGO_ERR_OK);
499 VPE_LOGI("[ComposeImage_003]: end!!!");
500 }
501
502 /**
503 * @tc.name : DecomposeImage_Success_WhenValidInput
504 * @tc.number: VideoProcessingClientTest_001
505 * @tc.desc : Test DecomposeImage function with valid input.
506 */
507 HWTEST_F(VideoProcessingClientTest, DecomposeImage_Success_WhenValidInput, TestSize.Level0)
508 {
509 VPE_LOGI("[DecomposeImage_001]: start!!!");
510 uint32_t clientID = 1;
511 SurfaceBufferInfo inputImage;
512 SurfaceBufferInfo outputSdrImage;
513 SurfaceBufferInfo outputGainmap;
514 auto result = VideoProcessingManager::GetInstance()
515 .DecomposeImage(clientID, inputImage, outputSdrImage, outputGainmap);
516 EXPECT_NE(result, VPE_ALGO_ERR_OK);
517 VPE_LOGI("[DecomposeImage_001]: end!!!");
518 }
519
520 /**
521 * @tc.name : DecomposeImage_Fail_WhenInvalidInput
522 * @tc.number: VideoProcessingClientTest_002
523 * @tc.desc : Test DecomposeImage function with invalid input.
524 */
525 HWTEST_F(VideoProcessingClientTest, DecomposeImage_Fail_WhenInvalidInput, TestSize.Level0)
526 {
527 VPE_LOGI("[DecomposeImage_002]: start!!!");
528 uint32_t clientID = 0; // Invalid client ID
529 SurfaceBufferInfo inputImage;
530 SurfaceBufferInfo outputSdrImage;
531 SurfaceBufferInfo outputGainmap;
532 auto result = VideoProcessingManager::GetInstance()
533 .DecomposeImage(clientID, inputImage, outputSdrImage, outputGainmap);
534 EXPECT_NE(result, VPE_ALGO_ERR_INVALID_VAL);
535 VPE_LOGI("[DecomposeImage_002]: end!!!");
536 }
537
538 /**
539 * @tc.name : DecomposeImage_Fail_WhenMemoryError
540 * @tc.number: VideoProcessingClientTest_003
541 * @tc.desc : Test DecomposeImage function when memory allocation fails.
542 */
543 HWTEST_F(VideoProcessingClientTest, DecomposeImage_Fail_WhenMemoryError, TestSize.Level0)
544 {
545 VPE_LOGI("[DecomposeImage_003]: start!!!");
546 uint32_t clientID = 1;
547 SurfaceBufferInfo inputImage;
548 SurfaceBufferInfo outputSdrImage;
549 SurfaceBufferInfo outputGainmap;
550 auto result = VideoProcessingManager::GetInstance()
551 .DecomposeImage(clientID, inputImage, outputSdrImage, outputGainmap);
552 EXPECT_NE(result, VPE_ALGO_ERR_NO_MEMORY);
553 VPE_LOGI("[DecomposeImage_003]: end!!!");
554 }
555
556
557 /**
558 * @tc.name : GetService_ShouldReturnNull_WhenProxyIsNullAndLoadSystemAbilityFail
559 * @tc.number: VideoProcessingClientTest_002
560 * @tc.desc : Test GetService method when proxy is null and load system ability fail.
561 */
562 HWTEST_F(VideoProcessingClientTest,
563 GetService_ShouldReturnNull_WhenProxyIsNullAndLoadSystemAbilityFail, TestSize.Level0)
564 {
565 VPE_LOGI("[GetService_002]: start!!!");
566 VideoProcessingManager manager;
567 manager.proxy_ = nullptr;
568 manager.isLoading_ = false;
569 auto service = manager.GetService();
570 EXPECT_NE(service, nullptr);
571 VPE_LOGI("[GetService_002]: end!!!");
572 }
573
574 /**
575 * @tc.name : GetService_ShouldReturnProxy_WhenProxyIsNullAndLoadSystemAbilitySuccess
576 * @tc.number: VideoProcessingClientTest_003
577 * @tc.desc : Test GetService method when proxy is null and load system ability success.
578 */
579 HWTEST_F(VideoProcessingClientTest,
580 GetService_ShouldReturnProxy_WhenProxyIsNullAndLoadSystemAbilitySuccess, TestSize.Level0)
581 {
582 VPE_LOGI("[GetService_003]: start!!!");
583 VideoProcessingManager manager;
584 manager.proxy_ = nullptr;
585 manager.isLoading_ = false;
586 auto service = manager.GetService();
587 EXPECT_NE(service, nullptr);
588 VPE_LOGI("[GetService_003]: end!!!");
589 }
590
TEST_F(VideoProcessingClientTest,OnSaLoad_ShouldSetProxy_WhenRemoteObjectIsNotNull)591 TEST_F(VideoProcessingClientTest, OnSaLoad_ShouldSetProxy_WhenRemoteObjectIsNotNull)
592 {
593 VPE_LOGI("[OnSaLoad_001]: start!!!");
594 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
595 sptr<OHOS::IRemoteObject> remoteObject;
596 manager.OnSaLoad(remoteObject);
597 EXPECT_EQ(manager.proxy_, nullptr);
598 VPE_LOGI("[OnSaLoad_001]: end!!!");
599 }
600
TEST_F(VideoProcessingClientTest,OnSaLoad_ShouldSetProxyToNull_WhenRemoteObjectIsNull)601 TEST_F(VideoProcessingClientTest, OnSaLoad_ShouldSetProxyToNull_WhenRemoteObjectIsNull)
602 {
603 VPE_LOGI("[OnSaLoad_002]: start!!!");
604 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
605 sptr<OHOS::IRemoteObject> remoteObject = nullptr;
606 manager.OnSaLoad(remoteObject);
607 EXPECT_EQ(manager.proxy_, nullptr);
608 VPE_LOGI("[OnSaLoad_002]: end!!!");
609 }
610
611 HWTEST_F(VideoProcessingClientTest, Execute_ShouldReturnErrOk_WhenOperationIsValid, TestSize.Level0)
612 {
613 VPE_LOGI("[Execute_001]: start!!!");
614 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
615 std::function<ErrCode(sptr<IVideoProcessingServiceManager>&)> operation
__anone83b3a610102(sptr<IVideoProcessingServiceManager>& proxy) 616 = [](sptr<IVideoProcessingServiceManager>& proxy) {
617 return ERR_OK;
618 };
619 LogInfo logInfo;
620 auto result = manager.Execute(std::move(operation), logInfo);
621 EXPECT_EQ(result, VPE_ALGO_ERR_OK);
622 VPE_LOGI("[Execute_001]: end!!!");
623 }
624
625 HWTEST_F(VideoProcessingClientTest, Execute_ShouldReturnErrInvalidState_WhenProxyIsNull, TestSize.Level0)
626 {
627 VPE_LOGI("[Execute_002]: start!!!");
628 VideoProcessingManager& manager = VideoProcessingManager::GetInstance();
629 std::function<ErrCode(sptr<IVideoProcessingServiceManager>&)> operation
__anone83b3a610202(sptr<IVideoProcessingServiceManager>& proxy) 630 = [](sptr<IVideoProcessingServiceManager>& proxy) {
631 return ERR_OK;
632 };
633 LogInfo logInfo;
634 auto result = manager.Execute(std::move(operation), logInfo);
635 EXPECT_NE(result, VPE_ALGO_ERR_INVALID_STATE);
636 VPE_LOGI("[Execute_002]: end!!!");
637 }
638
639 } // namespace VideoProcessingEngine
640 } // namespace Media
641 } // namespace OHOS
642