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