1 /*
2  * Copyright (c) 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 #include <securec.h>
16 #include <gtest/gtest.h>
17 #include <surface.h>
18 #include <buffer_queue_producer.h>
19 #include <consumer_surface.h>
20 #include "buffer_consumer_listener.h"
21 #include "sync_fence.h"
22 #include "producer_surface_delegator.h"
23 #include "buffer_queue_consumer.h"
24 #include "buffer_queue.h"
25 #include "v1_1/buffer_handle_meta_key_type.h"
26 
27 using namespace testing;
28 using namespace testing::ext;
29 
30 namespace OHOS::Rosen {
31 class ConsumerSurfaceTest : public testing::Test {
32 public:
33     static void SetUpTestCase();
34     static void TearDownTestCase();
35     void SetUp() override;
36     void TearDown() override;
37 
38     static inline BufferRequestConfig requestConfig = {
39         .width = 0x100,
40         .height = 0x100,
41         .strideAlignment = 0x8,
42         .format = GRAPHIC_PIXEL_FMT_RGBA_8888,
43         .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
44         .timeout = 0,
45     };
46     static inline BufferFlushConfig flushConfig = {
47         .damage = {
48             .w = 0x100,
49             .h = 0x100,
50         },
51     };
52     static inline BufferFlushConfigWithDamages flushConfigWithDamages = {
53         .damages = {
54             { .x = 0x100, .y = 0x100, .w = 0x100, .h = 0x100, },
55             { .x = 0x200, .y = 0x200, .w = 0x200, .h = 0x200, },
56         },
57         .timestamp = 0x300,
58     };
59     static inline int64_t timestamp = 0;
60     static inline Rect damage = {};
61     static inline std::vector<Rect> damages = {};
62     static inline sptr<IConsumerSurface> cs = nullptr;
63     static inline sptr<Surface> ps = nullptr;
64     static inline sptr<BufferQueue> bq = nullptr;
65     static inline sptr<ProducerSurfaceDelegator> surfaceDelegator = nullptr;
66     static inline sptr<BufferQueueConsumer> consumer_ = nullptr;
67     static inline uint32_t firstSeqnum = 0;
68     sptr<ConsumerSurface> surface_ = nullptr;
69 };
70 
SetUpTestCase()71 void ConsumerSurfaceTest::SetUpTestCase()
72 {
73     cs = IConsumerSurface::Create();
74     sptr<IBufferConsumerListener> listener = new BufferConsumerListener();
75     cs->RegisterConsumerListener(listener);
76     auto p = cs->GetProducer();
77     bq = new BufferQueue("test");
78     ps = Surface::CreateSurfaceAsProducer(p);
79     surfaceDelegator = ProducerSurfaceDelegator::Create();
80 }
81 
TearDownTestCase()82 void ConsumerSurfaceTest::TearDownTestCase()
83 {
84     cs = nullptr;
85 }
86 
SetUp()87 void ConsumerSurfaceTest::SetUp()
88 {
89     surface_ = new ConsumerSurface("test", false);
90     ASSERT_NE(surface_, nullptr);
91     ASSERT_EQ(surface_->producer_, nullptr);
92     ASSERT_EQ(surface_->consumer_, nullptr);
93 }
94 
TearDown()95 void ConsumerSurfaceTest::TearDown()
96 {
97     surface_ = nullptr;
98 }
99 
100 class TestConsumerListenerClazz : public IBufferConsumerListenerClazz {
101 public:
102     void OnBufferAvailable() override
103     {
104     }
105 };
106 
107 /*
108 * Function: GetProducer
109 * Type: Function
110 * Rank: Important(2)
111 * EnvConditions: N/A
112 * CaseDescription: 1. get ConsumerSurface and GetProducer
113 *                  2. check ret
114  */
HWTEST_F(ConsumerSurfaceTest, ConsumerSurface001, Function | MediumTest | Level2)115 HWTEST_F(ConsumerSurfaceTest, ConsumerSurface001, Function | MediumTest | Level2)
116 {
117     ASSERT_NE(cs, nullptr);
118 
119     sptr<ConsumerSurface> qs = static_cast<ConsumerSurface*>(cs.GetRefPtr());
120     ASSERT_NE(qs, nullptr);
121     ASSERT_NE(qs->GetProducer(), nullptr);
122 }
123 
124 /*
125 * Function: ConsumerSurface dtor
126 * Type: Function
127 * Rank: Important(2)
128 * EnvConditions: N/A
129 * CaseDescription: 1. new ConsumerSurface, only one nullptr for consumer_ and producer_
130 *                  2. dtor and check ret
131  */
HWTEST_F(ConsumerSurfaceTest, ConsumerSurfaceDtor001, Function | MediumTest | Level2)132 HWTEST_F(ConsumerSurfaceTest, ConsumerSurfaceDtor001, Function | MediumTest | Level2)
133 {
134     sptr<BufferQueue> queue = new BufferQueue("test", false);
135     surface_->producer_ = new BufferQueueProducer(queue);
136     ASSERT_NE(surface_->producer_, nullptr);
137     ASSERT_EQ(surface_->consumer_, nullptr);
138 }
139 
140 /*
141 * Function: ConsumerSurface dtor
142 * Type: Function
143 * Rank: Important(2)
144 * EnvConditions: N/A
145 * CaseDescription: 1. new ConsumerSurface, only one nullptr for consumer_ and producer_
146 *                  2. dtor and check ret
147  */
HWTEST_F(ConsumerSurfaceTest, ConsumerSurfaceDtor002, Function | MediumTest | Level2)148 HWTEST_F(ConsumerSurfaceTest, ConsumerSurfaceDtor002, Function | MediumTest | Level2)
149 {
150     sptr<BufferQueue> queue = new BufferQueue("test", false);
151     surface_->consumer_ = new BufferQueueConsumer(queue);
152     ASSERT_NE(surface_->consumer_, nullptr);
153 }
154 
155 /*
156 * Function: SetQueueSize and GetQueueSize
157 * Type: Function
158 * Rank: Important(2)
159 * EnvConditions: N/A
160 * CaseDescription: 1. call GetQueueSize and get default value
161 *                  2. call SetQueueSize
162 *                  3. call SetQueueSize again with abnormal value
163 *                  4. call GetQueueSize for BufferQueueProducer and BufferQueue
164 *                  5. check ret
165  */
HWTEST_F(ConsumerSurfaceTest, QueueSize001, Function | MediumTest | Level2)166 HWTEST_F(ConsumerSurfaceTest, QueueSize001, Function | MediumTest | Level2)
167 {
168     ASSERT_EQ(cs->GetQueueSize(), (uint32_t)SURFACE_DEFAULT_QUEUE_SIZE);
169     GSError ret = cs->SetQueueSize(2);
170     ASSERT_EQ(ret, OHOS::GSERROR_OK);
171 
172     ret = cs->SetQueueSize(SURFACE_MAX_QUEUE_SIZE + 1);
173     ASSERT_NE(ret, OHOS::GSERROR_OK);
174 
175     ASSERT_EQ(cs->GetQueueSize(), 2u);
176 }
177 
178 /*
179 * Function: SetQueueSize and GetQueueSize
180 * Type: Function
181 * Rank: Important(2)
182 * EnvConditions: N/A
183 * CaseDescription: 1. call GetQueueSize
184 *                  2. call SetQueueSize 2 times
185 *                  3. check ret
186  */
HWTEST_F(ConsumerSurfaceTest, QueueSize002, Function | MediumTest | Level2)187 HWTEST_F(ConsumerSurfaceTest, QueueSize002, Function | MediumTest | Level2)
188 {
189     sptr<ConsumerSurface> qs = static_cast<ConsumerSurface*>(cs.GetRefPtr());
190     sptr<BufferQueueProducer> bqp = static_cast<BufferQueueProducer*>(qs->GetProducer().GetRefPtr());
191     ASSERT_EQ(bqp->GetQueueSize(), 2u);
192 
193     GSError ret = cs->SetQueueSize(1);
194     ASSERT_EQ(ret, OHOS::GSERROR_OK);
195 
196     ret = cs->SetQueueSize(2);
197     ASSERT_EQ(ret, OHOS::GSERROR_OK);
198 }
199 
200 /*
201 * Function: SetQueueSize and GetQueueSize
202 * Type: Function
203 * Rank: Important(2)
204 * EnvConditions: N/A
205 * CaseDescription: 1. call GetQueueSize with producer_ is nullptr
206 *                  2. call SetQueueSize with producer_ is nullptr
207 *                  3. check ret
208  */
HWTEST_F(ConsumerSurfaceTest, QueueSize003, Function | MediumTest | Level2)209 HWTEST_F(ConsumerSurfaceTest, QueueSize003, Function | MediumTest | Level2)
210 {
211     uint32_t size = surface_->GetQueueSize();
212     ASSERT_EQ(size, 0);
213     GSError ret = surface_->SetQueueSize(1);
214     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
215 }
216 
217 /*
218 * Function: SetDefaultWidthAndHeight, GetDefaultWidth and GetDefaultHeight
219 * Type: Function
220 * Rank: Important(2)
221 * EnvConditions: N/A
222 * CaseDescription: 1. call SetDefaultWidthAndHeight with consumer_ is nullptr
223 *                  2. call GetDefaultWidth with producer_ is nullptr
224 *                  3. call GetDefaultHeight with producer_ is nullptr
225 *                  4. check ret
226  */
HWTEST_F(ConsumerSurfaceTest, DefaultWidthAndHeight001, Function | MediumTest | Level2)227 HWTEST_F(ConsumerSurfaceTest, DefaultWidthAndHeight001, Function | MediumTest | Level2)
228 {
229     int32_t width = 0;
230     int32_t height = 0;
231     GSError ret = surface_->SetDefaultWidthAndHeight(width, height);
232     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
233     width = surface_->GetDefaultWidth();
234     ASSERT_EQ(width, -1);
235     height = surface_->GetDefaultHeight();
236     ASSERT_EQ(height, -1);
237 }
238 
239 /*
240 * Function: SetDefaultWidthAndHeight, GetDefaultWidth and GetDefaultHeight
241 * Type: Function
242 * Rank: Important(2)
243 * EnvConditions: N/A
244 * CaseDescription: 1. call SetDefaultWidthAndHeight with noraml value
245 *                  2. call GetDefaultWidth
246 *                  3. call GetDefaultHeight
247 *                  4. check ret
248  */
HWTEST_F(ConsumerSurfaceTest, DefaultWidthAndHeight002, Function | MediumTest | Level2)249 HWTEST_F(ConsumerSurfaceTest, DefaultWidthAndHeight002, Function | MediumTest | Level2)
250 {
251     ASSERT_NE(cs, nullptr);
252     int32_t width = 100;  // 100 test value for width
253     int32_t height = 100;  // 100 test value for height
254     GSError ret = cs->SetDefaultWidthAndHeight(width, height);
255     ASSERT_EQ(ret, OHOS::GSERROR_OK);
256     int32_t value = cs->GetDefaultWidth();
257     ASSERT_EQ(value, width);
258     value = cs->GetDefaultHeight();
259     ASSERT_EQ(value, height);
260 }
261 
262 /*
263 * Function: SetDefaultUsage and GetDefaultUsage
264 * Type: Function
265 * Rank: Important(2)
266 * EnvConditions: N/A
267 * CaseDescription: 1. call SetDefaultUsage with consumer_ is nullptr
268 *                  2. call GetDefaultUsage with producer_ is nullptr
269 *                  3. check ret
270  */
HWTEST_F(ConsumerSurfaceTest, DefaultUsage001, Function | MediumTest | Level2)271 HWTEST_F(ConsumerSurfaceTest, DefaultUsage001, Function | MediumTest | Level2)
272 {
273     GSError ret = surface_->SetDefaultUsage(0);
274     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
275     uint64_t value = surface_->GetDefaultUsage();
276     ASSERT_EQ(value, 0);
277 }
278 
279 /*
280 * Function: SetDefaultUsage and GetDefaultUsage
281 * Type: Function
282 * Rank: Important(2)
283 * EnvConditions: N/A
284 * CaseDescription: 1. call GetDefaultUsage with normal
285 *                  2. call SetDefaultUsage with normal
286 *                  3. call GetDefaultUsage agagin
287 *                  4. check ret
288  */
HWTEST_F(ConsumerSurfaceTest, DefaultUsage002, Function | MediumTest | Level2)289 HWTEST_F(ConsumerSurfaceTest, DefaultUsage002, Function | MediumTest | Level2)
290 {
291     ASSERT_NE(cs, nullptr);
292     int32_t usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA;
293     uint32_t value = cs->GetDefaultUsage();
294     ASSERT_EQ(value, 0);
295     GSError ret = cs->SetDefaultUsage(usage);
296     ASSERT_EQ(ret, OHOS::GSERROR_OK);
297     value = cs->GetDefaultUsage();
298     ASSERT_EQ(value, usage);
299 }
300 
301 /*
302 * Function: AcquireBuffer
303 * Type: Function
304 * Rank: Important(2)
305 * EnvConditions: N/A
306 * CaseDescription: 1. call AcquireBuffer with consumer_ is nullptr
307 *                  2. check ret
308  */
HWTEST_F(ConsumerSurfaceTest, AcquireBuffer001, Function | MediumTest | Level2)309 HWTEST_F(ConsumerSurfaceTest, AcquireBuffer001, Function | MediumTest | Level2)
310 {
311     sptr<SurfaceBuffer> buffer = SurfaceBuffer::Create();
312     sptr<OHOS::SyncFence> fence;
313     GSError ret = surface_->AcquireBuffer(buffer, fence, timestamp, damage);
314     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
315 }
316 
317 /*
318 * Function: AcquireBuffer
319 * Type: Function
320 * Rank: Important(2)
321 * EnvConditions: N/A
322 * CaseDescription: 1. call AcquireBuffer with nullptr params
323 *                  2. check ret
324  */
HWTEST_F(ConsumerSurfaceTest, AcquireBuffer002, Function | MediumTest | Level2)325 HWTEST_F(ConsumerSurfaceTest, AcquireBuffer002, Function | MediumTest | Level2)
326 {
327     sptr<SurfaceBuffer> buffer = nullptr;
328     sptr<OHOS::SyncFence> fence;
329     GSError ret = surface_->AcquireBuffer(buffer, fence, timestamp, damage);
330     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
331     buffer = SurfaceBuffer::Create();
332     fence = nullptr;
333     ret = surface_->AcquireBuffer(buffer, fence, timestamp, damage);
334     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
335 }
336 
337 /*
338 * Function: ReleaseBuffer
339 * Type: Function
340 * Rank: Important(2)
341 * EnvConditions: N/A
342 * CaseDescription: 1. call ReleaseBuffer with consumer_ is nullptr
343 *                  2. check ret
344  */
HWTEST_F(ConsumerSurfaceTest, ReleaseBuffer001, Function | MediumTest | Level2)345 HWTEST_F(ConsumerSurfaceTest, ReleaseBuffer001, Function | MediumTest | Level2)
346 {
347     sptr<SurfaceBuffer> buffer = SurfaceBuffer::Create();
348     sptr<OHOS::SyncFence> fence;
349     GSError ret = surface_->ReleaseBuffer(buffer, fence);
350     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
351 }
352 
353 /*
354 * Function: ReleaseBuffer
355 * Type: Function
356 * Rank: Important(2)
357 * EnvConditions: N/A
358 * CaseDescription: 1. call ReleaseBuffer with nullptr params
359 *                  2. check ret
360  */
HWTEST_F(ConsumerSurfaceTest, ReleaseBuffer002, Function | MediumTest | Level2)361 HWTEST_F(ConsumerSurfaceTest, ReleaseBuffer002, Function | MediumTest | Level2)
362 {
363     sptr<SurfaceBuffer> buffer = nullptr;
364     sptr<OHOS::SyncFence> fence;
365     GSError ret = surface_->ReleaseBuffer(buffer, fence);
366     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
367 }
368 
369 /*
370 * Function: DetachBuffer
371 * Type: Function
372 * Rank: Important(2)
373 * EnvConditions: N/A
374 * CaseDescription: 1. call DetachBuffer with consumer_ is nullptr
375 *                  2. check ret
376  */
HWTEST_F(ConsumerSurfaceTest, DetachBuffer001, Function | MediumTest | Level2)377 HWTEST_F(ConsumerSurfaceTest, DetachBuffer001, Function | MediumTest | Level2)
378 {
379     sptr<SurfaceBuffer> buffer;
380     GSError ret = surface_->DetachBuffer(buffer);
381     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
382 }
383 
384 /*
385 * Function: DetachBuffer
386 * Type: Function
387 * Rank: Important(2)
388 * EnvConditions: N/A
389 * CaseDescription: 1. call DetachBuffer with nullptr params
390 *                  2. check ret
391  */
HWTEST_F(ConsumerSurfaceTest, DetachBuffer002, Function | MediumTest | Level2)392 HWTEST_F(ConsumerSurfaceTest, DetachBuffer002, Function | MediumTest | Level2)
393 {
394     sptr<SurfaceBuffer> buffer = nullptr;
395     GSError ret = surface_->DetachBuffer(buffer);
396     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
397 }
398 
399 /*
400 * Function: QueryIfBufferAvailable
401 * Type: Function
402 * Rank: Important(2)
403 * EnvConditions: N/A
404 * CaseDescription: 1. call QueryIfBufferAvailable with consumer_ is nullptr
405 *                  2. check ret
406  */
HWTEST_F(ConsumerSurfaceTest, QueryIfBufferAvailable001, Function | MediumTest | Level2)407 HWTEST_F(ConsumerSurfaceTest, QueryIfBufferAvailable001, Function | MediumTest | Level2)
408 {
409     bool ret = surface_->QueryIfBufferAvailable();
410     ASSERT_EQ(ret, false);
411 }
412 
413 /*
414 * Function: QueryIfBufferAvailable
415 * Type: Function
416 * Rank: Important(2)
417 * EnvConditions: N/A
418 * CaseDescription: 1. call QueryIfBufferAvailable with normal
419 *                  2. check ret
420  */
HWTEST_F(ConsumerSurfaceTest, QueryIfBufferAvailable002, Function | MediumTest | Level2)421 HWTEST_F(ConsumerSurfaceTest, QueryIfBufferAvailable002, Function | MediumTest | Level2)
422 {
423     ASSERT_NE(cs, nullptr);
424     bool ret = cs->QueryIfBufferAvailable();
425     ASSERT_EQ(ret, true);
426 }
427 
428 /*
429 * Function: RequestBuffer and FlushBuffer
430 * Type: Function
431 * Rank: Important(2)
432 * EnvConditions: N/A
433 * CaseDescription: 1. call RequestBuffer by cs and ps
434 *                  2. call FlushBuffer both
435 *                  3. check ret
436  */
HWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel001, Function | MediumTest | Level2)437 HWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel001, Function | MediumTest | Level2)
438 {
439     sptr<SurfaceBuffer> buffer;
440     int releaseFence = -1;
441 
442     GSError ret = ps->RequestBuffer(buffer, releaseFence, requestConfig);
443     ASSERT_EQ(ret, OHOS::GSERROR_OK);
444     ASSERT_NE(buffer, nullptr);
445     firstSeqnum = buffer->GetSeqNum();
446 
447     ret = ps->FlushBuffer(buffer, -1, flushConfig);
448     ASSERT_EQ(ret, OHOS::GSERROR_OK);
449 
450     ret = ps->RequestBuffer(buffer, releaseFence, requestConfig);
451     ASSERT_EQ(ret, OHOS::GSERROR_OK);
452     ret = ps->FlushBuffer(buffer, -1, flushConfig);
453     ASSERT_EQ(ret, OHOS::GSERROR_OK);
454 }
455 
456 /*
457 * Function: AcquireBuffer and ReleaseBuffer
458 * Type: Function
459 * Rank: Important(2)
460 * EnvConditions: N/A
461 * CaseDescription: 1. call AcquireBuffer
462 *                  2. call ReleaseBuffer
463 *                  3. check ret
464  */
HWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel002, Function | MediumTest | Level2)465 HWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel002, Function | MediumTest | Level2)
466 {
467     sptr<SurfaceBuffer> buffer;
468     int32_t flushFence;
469 
470     GSError ret = cs->AcquireBuffer(buffer, flushFence, timestamp, damage);
471     ASSERT_EQ(ret, OHOS::GSERROR_OK);
472     ASSERT_NE(buffer, nullptr);
473 
474     ret = cs->ReleaseBuffer(buffer, -1);
475     ASSERT_EQ(ret, OHOS::GSERROR_OK);
476 }
477 
478 /*
479 * Function: AcquireBuffer and ReleaseBuffer
480 * Type: Function
481 * Rank: Important(2)
482 * EnvConditions: N/A
483 * CaseDescription: 1. call AcquireBuffer
484 *                  2. call ReleaseBuffer 2 times
485 *                  3. check ret
486  */
HWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel003, Function | MediumTest | Level2)487 HWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel003, Function | MediumTest | Level2)
488 {
489     sptr<SurfaceBuffer> buffer;
490     int32_t flushFence;
491 
492     GSError ret = cs->AcquireBuffer(buffer, flushFence, timestamp, damage);
493     ASSERT_EQ(ret, OHOS::GSERROR_OK);
494     ASSERT_NE(buffer, nullptr);
495 
496     ret = cs->ReleaseBuffer(buffer, -1);
497     ASSERT_EQ(ret, OHOS::GSERROR_OK);
498 
499     ret = cs->ReleaseBuffer(buffer, -1);
500     ASSERT_NE(ret, OHOS::GSERROR_OK);
501 }
502 
503 /*
504 * Function: RequestBuffer and CancelBuffer
505 * Type: Function
506 * Rank: Important(2)
507 * EnvConditions: N/A
508 * CaseDescription: 1. call RequestBuffer by cs and ps
509 *                  2. call CancelBuffer both
510 *                  3. check ret
511  */
HWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel004, Function | MediumTest | Level2)512 HWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel004, Function | MediumTest | Level2)
513 {
514     sptr<SurfaceBuffer> buffer;
515     int releaseFence = -1;
516 
517     GSError ret = ps->RequestBuffer(buffer, releaseFence, requestConfig);
518     ASSERT_EQ(ret, OHOS::GSERROR_OK);
519 
520     ret = ps->CancelBuffer(buffer);
521     ASSERT_EQ(ret, OHOS::GSERROR_OK);
522 }
523 
524 /*
525 * Function: SetUserData
526 * Type: Function
527 * Rank: Important(2)
528 * EnvConditions: N/A
529 * CaseDescription: 1. call SetUserData many times
530 *                  2. check ret
531  */
HWTEST_F(ConsumerSurfaceTest, UserData001, Function | MediumTest | Level2)532 HWTEST_F(ConsumerSurfaceTest, UserData001, Function | MediumTest | Level2)
533 {
534     GSError ret;
535 
536     std::string strs[SURFACE_MAX_USER_DATA_COUNT];
537     constexpr int32_t stringLengthMax = 32;
538     char str[stringLengthMax] = {};
539     for (int i = 0; i < SURFACE_MAX_USER_DATA_COUNT; i++) {
540         auto secRet = snprintf_s(str, sizeof(str), sizeof(str) - 1, "%d", i);
541         ASSERT_GT(secRet, 0);
542 
543         strs[i] = str;
544         ret = cs->SetUserData(strs[i], "magic");
545         ASSERT_EQ(ret, OHOS::GSERROR_OK);
546     }
547 
548     ret = cs->SetUserData("-1", "error");
549     ASSERT_NE(ret, OHOS::GSERROR_OK);
550 
551     std::string retStr;
552     for (int i = 0; i < SURFACE_MAX_USER_DATA_COUNT; i++) {
553         retStr = cs->GetUserData(strs[i]);
554         ASSERT_EQ(retStr, "magic");
555     }
556 }
557 
558 /*
559 * Function: UserDataChangeListen
560 * Type: Function
561 * Rank: Important(2)
562 * EnvConditions: N/A
563 * CaseDescription: 1. RegisterUserDataChangeListen
564 *                  2. SetUserData
565 *                  3. check ret
566  */
HWTEST_F(ConsumerSurfaceTest, UserDataChangeListen001, Function | MediumTest | Level2)567 HWTEST_F(ConsumerSurfaceTest, UserDataChangeListen001, Function | MediumTest | Level2)
568 {
569     sptr<IConsumerSurface> csTestUserData = IConsumerSurface::Create();
570     GSError ret1 = OHOS::GSERROR_INVALID_ARGUMENTS;
571     GSError ret2 = OHOS::GSERROR_INVALID_ARGUMENTS;
572     auto func1 = [&ret1](const std::string& key, const std::string& value) {
573         ret1 = OHOS::GSERROR_OK;
574     };
575     auto func2 = [&ret2](const std::string& key, const std::string& value) {
576         ret2 = OHOS::GSERROR_OK;
577     };
578     csTestUserData->RegisterUserDataChangeListener("func1", func1);
579     csTestUserData->RegisterUserDataChangeListener("func2", func2);
580     csTestUserData->RegisterUserDataChangeListener("func3", nullptr);
581     ASSERT_EQ(csTestUserData->RegisterUserDataChangeListener("func2", func2), OHOS::GSERROR_INVALID_ARGUMENTS);
582 
583     if (csTestUserData->SetUserData("Regist", "OK") == OHOS::GSERROR_OK) {
584         ASSERT_EQ(ret1, OHOS::GSERROR_OK);
585         ASSERT_EQ(ret2, OHOS::GSERROR_OK);
586     }
587 
588     ret1 = OHOS::GSERROR_INVALID_ARGUMENTS;
589     ret2 = OHOS::GSERROR_INVALID_ARGUMENTS;
590     csTestUserData->UnRegisterUserDataChangeListener("func1");
591     ASSERT_EQ(csTestUserData->UnRegisterUserDataChangeListener("func1"), OHOS::GSERROR_INVALID_ARGUMENTS);
592 
593     if (csTestUserData->SetUserData("UnRegist", "INVALID") == OHOS::GSERROR_OK) {
594         ASSERT_EQ(ret1, OHOS::GSERROR_INVALID_ARGUMENTS);
595         ASSERT_EQ(ret2, OHOS::GSERROR_OK);
596     }
597 
598     ret1 = OHOS::GSERROR_INVALID_ARGUMENTS;
599     ret2 = OHOS::GSERROR_INVALID_ARGUMENTS;
600     csTestUserData->ClearUserDataChangeListener();
601     csTestUserData->RegisterUserDataChangeListener("func1", func1);
602     if (csTestUserData->SetUserData("Clear", "OK") == OHOS::GSERROR_OK) {
603         ASSERT_EQ(ret1, OHOS::GSERROR_OK);
604         ASSERT_EQ(ret2, OHOS::GSERROR_INVALID_ARGUMENTS);
605     }
606 }
607 
608 /*
609 * Function: UserDataChangeListen
610 * Type: Function
611 * Rank: Important(2)
612 * EnvConditions: N/A
613 * CaseDescription: 1. RegisterUserDataChangeListen
614 *                  2. SetUserData
615 *                  3. check ret
616  */
HWTEST_F(ConsumerSurfaceTest, UserDataChangeListen002, Function | MediumTest | Level2)617 HWTEST_F(ConsumerSurfaceTest, UserDataChangeListen002, Function | MediumTest | Level2)
618 {
619     sptr<IConsumerSurface> csTestUserData = IConsumerSurface::Create();
620 
621     auto func = [&csTestUserData](const std::string& FuncName) {
622         constexpr int32_t RegisterListenerNum = 1000;
623         std::vector<GSError> ret(RegisterListenerNum, OHOS::GSERROR_INVALID_ARGUMENTS);
624         std::string strs[RegisterListenerNum];
625         constexpr int32_t stringLengthMax = 32;
626         char str[stringLengthMax] = {};
627         for (int i = 0; i < RegisterListenerNum; i++) {
628             auto secRet = snprintf_s(str, sizeof(str), sizeof(str) - 1, "%s%d", FuncName.c_str(), i);
629             ASSERT_GT(secRet, 0);
630             strs[i] = str;
631             ASSERT_EQ(csTestUserData->RegisterUserDataChangeListener(strs[i], [i, &ret]
632             (const std::string& key, const std::string& value) {
633                 ret[i] = OHOS::GSERROR_OK;
634             }), OHOS::GSERROR_OK);
635         }
636 
637         if (csTestUserData->SetUserData("Regist", FuncName) == OHOS::GSERROR_OK) {
638             for (int i = 0; i < RegisterListenerNum; i++) {
639                 ASSERT_EQ(ret[i], OHOS::GSERROR_OK);
640             }
641         }
642 
643         for (int i = 0; i < RegisterListenerNum; i++) {
644             csTestUserData->UnRegisterUserDataChangeListener(strs[i]);
645         }
646     };
647 
648     std::thread t1(func, "thread1");
649     std::thread t2(func, "thread2");
650     t1.join();
651     t2.join();
652 }
653 
654 /*
655 * Function: SetUserData
656 * Type: Function
657 * Rank: Important(2)
658 * EnvConditions: N/A
659 * CaseDescription: 1. call SetUserData many times
660 *                  2. check ret
661  */
HWTEST_F(ConsumerSurfaceTest, RegisterConsumerListener001, Function | MediumTest | Level2)662 HWTEST_F(ConsumerSurfaceTest, RegisterConsumerListener001, Function | MediumTest | Level2)
663 {
664     class TestConsumerListener : public IBufferConsumerListener {
665     public:
666         void OnBufferAvailable() override
667         {
668             sptr<SurfaceBuffer> buffer;
669             int32_t flushFence;
670 
671             cs->AcquireBuffer(buffer, flushFence, timestamp, damage);
672             int32_t *p = (int32_t*)buffer->GetVirAddr();
673             if (p != nullptr) {
674                 for (int32_t i = 0; i < 128; i++) {
675                     ASSERT_EQ(p[i], i);
676                 }
677             }
678 
679             cs->ReleaseBuffer(buffer, -1);
680         }
681     };
682 
683     sptr<IBufferConsumerListener> listener = new TestConsumerListener();
684     GSError ret = cs->RegisterConsumerListener(listener);
685     ASSERT_EQ(ret, OHOS::GSERROR_OK);
686 
687     sptr<SurfaceBuffer> buffer;
688     int releaseFence = -1;
689     ret = ps->RequestBuffer(buffer, releaseFence, requestConfig);
690     ASSERT_EQ(ret, OHOS::GSERROR_OK);
691     ASSERT_NE(buffer, nullptr);
692 
693     int32_t *p = (int32_t*)buffer->GetVirAddr();
694     if (p != nullptr) {
695         for (int32_t i = 0; i < 128; i++) {
696             p[i] = i;
697         }
698     }
699 
700     GraphicTransformType tranformType = ps->GetTransform();
701     ret = ps->FlushBuffer(buffer, -1, flushConfig);
702     ASSERT_EQ(ps->SetTransform(GraphicTransformType::GRAPHIC_ROTATE_180), OHOS::GSERROR_OK);
703     GraphicTransformType bufferTranformType = GraphicTransformType::GRAPHIC_ROTATE_NONE;
704     ASSERT_EQ(cs->GetSurfaceBufferTransformType(nullptr, &bufferTranformType), OHOS::SURFACE_ERROR_INVALID_PARAM);
705     ASSERT_EQ(cs->GetSurfaceBufferTransformType(buffer, nullptr), OHOS::SURFACE_ERROR_INVALID_PARAM);
706     ASSERT_EQ(cs->GetSurfaceBufferTransformType(buffer, &bufferTranformType), OHOS::GSERROR_OK);
707     ASSERT_EQ(bufferTranformType, tranformType);
708     ASSERT_EQ(ret, OHOS::GSERROR_OK);
709     listener->OnTunnelHandleChange();
710     listener->OnGoBackground();
711     listener->OnCleanCache();
712     listener->OnTransformChange();
713     TestConsumerListenerClazz* listenerClazz = new TestConsumerListenerClazz();
714     listenerClazz->OnTunnelHandleChange();
715     listenerClazz->OnGoBackground();
716     listenerClazz->OnCleanCache();
717     listenerClazz->OnTransformChange();
718     delete listenerClazz;
719 }
720 
721 /*
722 * Function: RegisterConsumerListener, RequestBuffer and FlushBuffer
723 * Type: Function
724 * Rank: Important(2)
725 * EnvConditions: N/A
726 * CaseDescription: 1. call RegisterConsumerListener
727 *                  2. call RequestBuffer
728 *                  3. call FlushBuffer
729 *                  4. check ret
730  */
HWTEST_F(ConsumerSurfaceTest, RegisterConsumerListener002, Function | MediumTest | Level2)731 HWTEST_F(ConsumerSurfaceTest, RegisterConsumerListener002, Function | MediumTest | Level2)
732 {
733     sptr<IBufferConsumerListener> listener = new BufferConsumerListener();
734     GSError ret = cs->RegisterConsumerListener(listener);
735     ASSERT_EQ(ret, OHOS::GSERROR_OK);
736 
737     sptr<SurfaceBuffer> buffer;
738     int releaseFence = -1;
739     ret = ps->RequestBuffer(buffer, releaseFence, requestConfig);
740     ASSERT_EQ(ret, OHOS::GSERROR_OK);
741     ASSERT_NE(buffer, nullptr);
742 
743     int32_t *p = (int32_t*)buffer->GetVirAddr();
744     if (p != nullptr) {
745         for (int32_t i = 0; i < requestConfig.width * requestConfig.height; i++) {
746             p[i] = i;
747         }
748     }
749     ASSERT_EQ(ps->SetTransform(GraphicTransformType::GRAPHIC_ROTATE_90), OHOS::GSERROR_OK);
750     ret = ps->FlushBuffer(buffer, -1, flushConfig);
751     GraphicTransformType bufferTranformType = GraphicTransformType::GRAPHIC_ROTATE_NONE;
752     ASSERT_EQ(cs->GetSurfaceBufferTransformType(buffer, &bufferTranformType), OHOS::GSERROR_OK);
753     ASSERT_EQ(bufferTranformType, GraphicTransformType::GRAPHIC_ROTATE_90);
754     ASSERT_EQ(ret, OHOS::GSERROR_OK);
755     ASSERT_EQ(ps->SetTransform(GraphicTransformType::GRAPHIC_ROTATE_NONE), OHOS::GSERROR_OK);
756     sptr<OHOS::SyncFence> flushFence;
757     ret = cs->AcquireBuffer(buffer, flushFence, timestamp, damage);
758     ASSERT_EQ(ret, OHOS::GSERROR_OK);
759     ASSERT_NE(buffer, nullptr);
760     bool isInCache = false;
761     ASSERT_EQ(cs->IsSurfaceBufferInCache(buffer->GetSeqNum(), isInCache), OHOS::GSERROR_OK);
762     ASSERT_EQ(isInCache, true);
763     ASSERT_EQ(cs->IsSurfaceBufferInCache(0xFFFFFFFF, isInCache), OHOS::GSERROR_OK);
764     ASSERT_EQ(isInCache, false);
765 }
766 
767 /*
768 * Function: RegisterConsumerListener
769 * Type: Function
770 * Rank: Important(2)
771 * EnvConditions: N/A
772 * CaseDescription: 1. call RegisterConsumerListener with nullptr params
773 *                  2. check ret
774  */
HWTEST_F(ConsumerSurfaceTest, RegisterConsumerListener003, Function | MediumTest | Level2)775 HWTEST_F(ConsumerSurfaceTest, RegisterConsumerListener003, Function | MediumTest | Level2)
776 {
777     GSError ret = surface_->RegisterConsumerListener(nullptr);
778     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
779     sptr<IBufferConsumerListener> listener = new BufferConsumerListener();
780     ret = surface_->RegisterConsumerListener(listener);
781     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
782 }
783 
784 /*
785 * Function: RegisterConsumerListener
786 * Type: Function
787 * Rank: Important(2)
788 * EnvConditions: N/A
789 * CaseDescription: 1. call RegisterConsumerListener with nullptr params
790 *                  2. check ret
791  */
HWTEST_F(ConsumerSurfaceTest, RegisterConsumerListener004, Function | MediumTest | Level2)792 HWTEST_F(ConsumerSurfaceTest, RegisterConsumerListener004, Function | MediumTest | Level2)
793 {
794     GSError ret = surface_->RegisterConsumerListener(nullptr);
795     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
796     TestConsumerListenerClazz* listenerClazz = new TestConsumerListenerClazz();
797     ret = surface_->RegisterConsumerListener(listenerClazz);
798     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
799     delete listenerClazz;
800 }
801 
802 /*
803 * Function: RegisterReleaseListener
804 * Type: Function
805 * Rank: Important(2)
806 * EnvConditions: N/A
807 * CaseDescription: 1. call RegisterReleaseListener with nullptr param
808 *                  2. check ret
809  */
HWTEST_F(ConsumerSurfaceTest, RegisterReleaseListener001, Function | MediumTest | Level2)810 HWTEST_F(ConsumerSurfaceTest, RegisterReleaseListener001, Function | MediumTest | Level2)
811 {
812     OnReleaseFunc onBufferRelease = nullptr;
813     GSError ret = surface_->RegisterReleaseListener(onBufferRelease);
814     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
815 }
816 
817 /*
818 * Function: RegisterReleaseListener
819 * Type: Function
820 * Rank: Important(2)
821 * EnvConditions: N/A
822 * CaseDescription: 1. call RegisterReleaseListener with consumer_ is normal
823 *                  2. check ret
824  */
HWTEST_F(ConsumerSurfaceTest, RegisterReleaseListener002, Function | MediumTest | Level2)825 HWTEST_F(ConsumerSurfaceTest, RegisterReleaseListener002, Function | MediumTest | Level2)
826 {
827     sptr<BufferQueue> queue = new BufferQueue("test", false);
828     surface_->consumer_ = new BufferQueueConsumer(queue);
829     ASSERT_NE(surface_->consumer_, nullptr);
830     OnReleaseFunc onBufferRelease = nullptr;
831     GSError ret = surface_->RegisterReleaseListener(onBufferRelease);
832     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
833 }
834 
835 /*
836 * Function: RegisterReleaseListener
837 * Type: Function
838 * Rank: Important(2)
839 * EnvConditions: N/A
840 * CaseDescription: 1. call RegisterReleaseListener
841 *                  2. check ret
842  */
HWTEST_F(ConsumerSurfaceTest, RegisterReleaseListener003, Function | MediumTest | Level2)843 HWTEST_F(ConsumerSurfaceTest, RegisterReleaseListener003, Function | MediumTest | Level2)
844 {
845     OnReleaseFuncWithFence func = nullptr;
846     GSError ret = surface_->RegisterReleaseListener(func);
847     ASSERT_EQ(ret, OHOS::GSERROR_NOT_SUPPORT);
848 }
849 
850 /*
851 * Function: UnRegisterReleaseListener
852 * Type: Function
853 * Rank: Important(2)
854 * EnvConditions: N/A
855 * CaseDescription: 1. call UnRegisterReleaseListener
856 *                  2. check ret
857  */
HWTEST_F(ConsumerSurfaceTest, UnRegisterReleaseListener001, Function | MediumTest | Level2)858 HWTEST_F(ConsumerSurfaceTest, UnRegisterReleaseListener001, Function | MediumTest | Level2)
859 {
860     GSError ret = surface_->UnRegisterReleaseListener();
861     ASSERT_EQ(ret, OHOS::GSERROR_OK);
862 }
863 
864 /*
865 * Function: RegisterDeleteBufferListener
866 * Type: Function
867 * Rank: Important(2)
868 * EnvConditions: N/A
869 * CaseDescription: 1. call RegisterDeleteBufferListener with consumer_ is nullptr
870 *                  2. check ret
871  */
HWTEST_F(ConsumerSurfaceTest, RegisterDeleteBufferListener001, Function | MediumTest | Level2)872 HWTEST_F(ConsumerSurfaceTest, RegisterDeleteBufferListener001, Function | MediumTest | Level2)
873 {
874     OnDeleteBufferFunc func = nullptr;
875     GSError ret = surface_->RegisterDeleteBufferListener(func, false);
876     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
877 }
878 
879 /*
880 * Function: RegisterDeleteBufferListener
881 * Type: Function
882 * Rank: Important(2)
883 * EnvConditions: N/A
884 * CaseDescription: 1. call RegisterDeleteBufferListener with consumer_ is normal
885 *                  2. check ret
886  */
HWTEST_F(ConsumerSurfaceTest, RegisterDeleteBufferListener002, Function | MediumTest | Level2)887 HWTEST_F(ConsumerSurfaceTest, RegisterDeleteBufferListener002, Function | MediumTest | Level2)
888 {
889     sptr<BufferQueue> queue = new BufferQueue("test", false);
890     surface_->consumer_ = new BufferQueueConsumer(queue);
891     ASSERT_NE(surface_->consumer_, nullptr);
892     OnDeleteBufferFunc func = nullptr;
893     GSError ret = surface_->RegisterDeleteBufferListener(func, false);
894     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
895     ret = surface_->RegisterDeleteBufferListener(func, true);
896     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
897 }
898 
899 /*
900 * Function: UnregisterConsumerListener
901 * Type: Function
902 * Rank: Important(2)
903 * EnvConditions: N/A
904 * CaseDescription: 1. call UnregisterConsumerListener with consumer_ is nullptr
905 *                  2. check ret
906  */
HWTEST_F(ConsumerSurfaceTest, UnregisterConsumerListener001, Function | MediumTest | Level2)907 HWTEST_F(ConsumerSurfaceTest, UnregisterConsumerListener001, Function | MediumTest | Level2)
908 {
909     GSError ret = surface_->UnregisterConsumerListener();
910     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
911 }
912 
913 /*
914 * Function: UnregisterConsumerListener
915 * Type: Function
916 * Rank: Important(2)
917 * EnvConditions: N/A
918 * CaseDescription: 1. call UnregisterConsumerListener with consumer_ is normal
919 *                  2. check ret
920  */
HWTEST_F(ConsumerSurfaceTest, UnregisterConsumerListener002, Function | MediumTest | Level2)921 HWTEST_F(ConsumerSurfaceTest, UnregisterConsumerListener002, Function | MediumTest | Level2)
922 {
923     sptr<BufferQueue> queue = new BufferQueue("test", false);
924     surface_->consumer_ = new BufferQueueConsumer(queue);
925     ASSERT_NE(surface_->consumer_, nullptr);
926     GSError ret = surface_->UnregisterConsumerListener();
927     ASSERT_EQ(ret, OHOS::GSERROR_OK);
928 }
929 
930 /*
931 * Function: RegisterUserDataChangeListener
932 * Type: Function
933 * Rank: Important(2)
934 * EnvConditions: N/A
935 * CaseDescription: 1. call RegisterUserDataChangeListener with nullptr param
936 *                  2. check ret
937  */
HWTEST_F(ConsumerSurfaceTest, RegisterUserDataChangeListener001, Function | MediumTest | Level2)938 HWTEST_F(ConsumerSurfaceTest, RegisterUserDataChangeListener001, Function | MediumTest | Level2)
939 {
940     GSError ret = surface_->RegisterUserDataChangeListener("test", nullptr);
941     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
942 }
943 
944 /*
945 * Function: GoBackground
946 * Type: Function
947 * Rank: Important(2)
948 * EnvConditions: N/A
949 * CaseDescription: 1. call GoBackground with consumer_ is nullptr
950 *                  2. check ret
951  */
HWTEST_F(ConsumerSurfaceTest, GoBackground001, Function | MediumTest | Level2)952 HWTEST_F(ConsumerSurfaceTest, GoBackground001, Function | MediumTest | Level2)
953 {
954     GSError ret = surface_->GoBackground();
955     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
956 }
957 
958 /*
959 * Function: GoBackground
960 * Type: Function
961 * Rank: Important(2)
962 * EnvConditions: N/A
963 * CaseDescription: 1. call GoBackground with consumer_ is normal
964 *                  2. check ret
965  */
HWTEST_F(ConsumerSurfaceTest, GoBackground002, Function | MediumTest | Level2)966 HWTEST_F(ConsumerSurfaceTest, GoBackground002, Function | MediumTest | Level2)
967 {
968     sptr<BufferQueue> queue = new BufferQueue("test", false);
969     surface_->consumer_ = new BufferQueueConsumer(queue);
970     ASSERT_NE(surface_->consumer_, nullptr);
971     GSError ret = surface_->GoBackground();
972     ASSERT_EQ(ret, OHOS::GSERROR_OK);
973     surface_->producer_ = new BufferQueueProducer(queue);
974     ASSERT_NE(surface_->producer_, nullptr);
975     ret = surface_->GoBackground();
976     ASSERT_EQ(ret, OHOS::GSERROR_OK);
977 }
978 
979 /*
980 * Function: GetUniqueId
981 * Type: Function
982 * Rank: Important(2)
983 * EnvConditions: N/A
984 * CaseDescription: 1. call GetUniqueId with producer_ is nullptr
985 *                  2. check ret
986  */
HWTEST_F(ConsumerSurfaceTest, GetUniqueId001, Function | MediumTest | Level2)987 HWTEST_F(ConsumerSurfaceTest, GetUniqueId001, Function | MediumTest | Level2)
988 {
989     uint64_t ret = surface_->GetUniqueId();
990     ASSERT_EQ(ret, 0);
991 }
992 
993 /*
994 * Function: Dump
995 * Type: Function
996 * Rank: Important(2)
997 * EnvConditions: N/A
998 * CaseDescription: 1. call Dump
999 *                  2. check ret
1000  */
HWTEST_F(ConsumerSurfaceTest, Dump001, Function | MediumTest | Level2)1001 HWTEST_F(ConsumerSurfaceTest, Dump001, Function | MediumTest | Level2)
1002 {
1003     std::string result;
1004     surface_->Dump(result);
1005     sptr<BufferQueue> queue = new BufferQueue("test", false);
1006     surface_->consumer_ = new BufferQueueConsumer(queue);
1007     ASSERT_NE(surface_->consumer_, nullptr);
1008     surface_->Dump(result);
1009 }
1010 
1011 /*
1012 * Function: SetTransform and GetTransform
1013 * Type: Function
1014 * Rank: Important(2)
1015 * EnvConditions: N/A
1016 * CaseDescription: 1. call GetTransform by default
1017  */
HWTEST_F(ConsumerSurfaceTest, transform001, Function | MediumTest | Level2)1018 HWTEST_F(ConsumerSurfaceTest, transform001, Function | MediumTest | Level2)
1019 {
1020     ASSERT_EQ(cs->GetTransform(), GraphicTransformType::GRAPHIC_ROTATE_NONE);
1021 }
1022 
1023 /*
1024 * Function: SetTransform and GetTransform
1025 * Type: Function
1026 * Rank: Important(1)
1027 * EnvConditions: N/A
1028 * CaseDescription: 1. call SetTransform with different paramaters and call GetTransform
1029 *                  2. check ret
1030  */
HWTEST_F(ConsumerSurfaceTest, transform002, Function | MediumTest | Level1)1031 HWTEST_F(ConsumerSurfaceTest, transform002, Function | MediumTest | Level1)
1032 {
1033     GraphicTransformType transform = GraphicTransformType::GRAPHIC_ROTATE_90;
1034     GSError ret = ps->SetTransform(transform);
1035     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1036     ASSERT_EQ(cs->GetTransform(), GraphicTransformType::GRAPHIC_ROTATE_90);
1037 }
1038 
1039 /*
1040 * Function: SetTransform and GetTransform
1041 * Type: Function
1042 * Rank: Important(1)
1043 * EnvConditions: N/A
1044 * CaseDescription: 1. call SetTransform with different paramaters and call GetTransform
1045 *                  2. check ret
1046  */
HWTEST_F(ConsumerSurfaceTest, transform003, Function | MediumTest | Level1)1047 HWTEST_F(ConsumerSurfaceTest, transform003, Function | MediumTest | Level1)
1048 {
1049     GraphicTransformType transform = GraphicTransformType::GRAPHIC_ROTATE_180;
1050     GSError ret = ps->SetTransform(transform);
1051     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1052     ASSERT_EQ(cs->GetTransform(), GraphicTransformType::GRAPHIC_ROTATE_180);
1053 }
1054 
1055 /*
1056 * Function: SetTransform and GetTransform
1057 * Type: Function
1058 * Rank: Important(1)
1059 * EnvConditions: N/A
1060 * CaseDescription: 1. call SetTransform with different paramaters and call GetTransform
1061 *                  2. check ret
1062  */
HWTEST_F(ConsumerSurfaceTest, transform004, Function | MediumTest | Level1)1063 HWTEST_F(ConsumerSurfaceTest, transform004, Function | MediumTest | Level1)
1064 {
1065     GraphicTransformType transform = GraphicTransformType::GRAPHIC_ROTATE_270;
1066     GSError ret = ps->SetTransform(transform);
1067     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1068     ASSERT_EQ(cs->GetTransform(), GraphicTransformType::GRAPHIC_ROTATE_270);
1069 }
1070 
1071 /*
1072 * Function: SetTransform and GetTransform
1073 * Type: Function
1074 * Rank: Important(1)
1075 * EnvConditions: N/A
1076 * CaseDescription: 1. call SetTransform with different paramaters and call GetTransform
1077 *                  2. check ret
1078  */
HWTEST_F(ConsumerSurfaceTest, transform005, Function | MediumTest | Level1)1079 HWTEST_F(ConsumerSurfaceTest, transform005, Function | MediumTest | Level1)
1080 {
1081     GraphicTransformType transform = GraphicTransformType::GRAPHIC_ROTATE_NONE;
1082     GSError ret = ps->SetTransform(transform);
1083     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1084     ASSERT_EQ(cs->GetTransform(), GraphicTransformType::GRAPHIC_ROTATE_NONE);
1085 }
1086 
1087 /*
1088 * Function: SetTransform and GetTransform
1089 * Type: Function
1090 * Rank: Important(1)
1091 * EnvConditions: N/A
1092 * CaseDescription: 1. call SetTransform GetTransform with nullptr
1093 *                  2. check ret
1094  */
HWTEST_F(ConsumerSurfaceTest, transform006, Function | MediumTest | Level1)1095 HWTEST_F(ConsumerSurfaceTest, transform006, Function | MediumTest | Level1)
1096 {
1097     GraphicTransformType transform = GraphicTransformType::GRAPHIC_ROTATE_NONE;
1098     GSError ret = surface_->SetTransform(transform);
1099     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1100     ASSERT_EQ(surface_->GetTransform(), GraphicTransformType::GRAPHIC_ROTATE_BUTT);
1101 }
1102 
1103 /*
1104 * Function: SetScalingMode and GetScalingMode
1105 * Type: Function
1106 * Rank: Important(2)
1107 * EnvConditions: N/A
1108 * CaseDescription: 1. call SetScalingMode with abnormal parameters and check ret
1109  */
HWTEST_F(ConsumerSurfaceTest, scalingMode001, Function | MediumTest | Level2)1110 HWTEST_F(ConsumerSurfaceTest, scalingMode001, Function | MediumTest | Level2)
1111 {
1112     ScalingMode scalingMode = ScalingMode::SCALING_MODE_SCALE_TO_WINDOW;
1113     GSError ret = cs->SetScalingMode(-1, scalingMode);
1114     ASSERT_EQ(ret, OHOS::GSERROR_NO_ENTRY);
1115     ret = cs->GetScalingMode(-1, scalingMode);
1116     ASSERT_EQ(ret, OHOS::GSERROR_NO_ENTRY);
1117 }
1118 
1119 /*
1120 * Function: SetScalingMode and GetScalingMode
1121 * Type: Function
1122 * Rank: Important(1)
1123 * EnvConditions: N/A
1124 * CaseDescription: 1. call SetScalingMode with normal parameters and check ret
1125 *                  2. call GetScalingMode and check ret
1126  */
HWTEST_F(ConsumerSurfaceTest, scalingMode002, Function | MediumTest | Level1)1127 HWTEST_F(ConsumerSurfaceTest, scalingMode002, Function | MediumTest | Level1)
1128 {
1129     ScalingMode scalingMode = ScalingMode::SCALING_MODE_SCALE_TO_WINDOW;
1130     sptr<SurfaceBuffer> buffer;
1131     int releaseFence = -1;
1132     GSError ret = ps->RequestBuffer(buffer, releaseFence, requestConfig);
1133     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1134     ASSERT_NE(buffer, nullptr);
1135 
1136     uint32_t sequence = buffer->GetSeqNum();
1137     ret = cs->SetScalingMode(sequence, scalingMode);
1138     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1139 
1140     ScalingMode scalingModeGet = ScalingMode::SCALING_MODE_FREEZE;
1141     ret = cs->GetScalingMode(sequence, scalingModeGet);
1142     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1143     ASSERT_EQ(scalingMode, scalingModeGet);
1144 
1145     ret = ps->CancelBuffer(buffer);
1146     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1147 }
1148 
1149 /*
1150 * Function: SetScalingMode003
1151 * Type: Function
1152 * Rank: Important(2)
1153 * EnvConditions: N/A
1154 * CaseDescription: 1. call SetScalingMode with abnormal parameters and check ret
1155  */
HWTEST_F(ConsumerSurfaceTest, scalingMode003, Function | MediumTest | Level2)1156 HWTEST_F(ConsumerSurfaceTest, scalingMode003, Function | MediumTest | Level2)
1157 {
1158     ScalingMode scalingMode = ScalingMode::SCALING_MODE_SCALE_TO_WINDOW;
1159     GSError ret = cs->SetScalingMode(scalingMode);
1160     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1161 }
1162 
1163 /*
1164 * Function: SetScalingMode and GetScalingMode
1165 * Type: Function
1166 * Rank: Important(1)
1167 * EnvConditions: N/A
1168 * CaseDescription: 1. call SetScalingMode with nullptr and check ret
1169 *                  2. call GetScalingMode with nullptr and check ret
1170  */
HWTEST_F(ConsumerSurfaceTest, scalingMode004, Function | MediumTest | Level1)1171 HWTEST_F(ConsumerSurfaceTest, scalingMode004, Function | MediumTest | Level1)
1172 {
1173     ScalingMode scalingMode = ScalingMode::SCALING_MODE_SCALE_TO_WINDOW;
1174     GSError ret = surface_->SetScalingMode(firstSeqnum, scalingMode);
1175     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1176     ret = surface_->SetScalingMode(scalingMode);
1177     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1178     ret = surface_->GetScalingMode(firstSeqnum, scalingMode);
1179     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1180 }
1181 
1182 /*
1183 * Function: QueryMetaDataType
1184 * Type: Function
1185 * Rank: Important(1)
1186 * EnvConditions: N/A
1187 * CaseDescription: 1. call QueryMetaDataType and check ret
1188  */
HWTEST_F(ConsumerSurfaceTest, QueryMetaDataType001, Function | MediumTest | Level1)1189 HWTEST_F(ConsumerSurfaceTest, QueryMetaDataType001, Function | MediumTest | Level1)
1190 {
1191     HDRMetaDataType type = HDRMetaDataType::HDR_META_DATA;
1192     GSError ret = cs->QueryMetaDataType(firstSeqnum, type);
1193     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1194     ASSERT_EQ(type, HDRMetaDataType::HDR_NOT_USED);
1195 }
1196 
1197 /*
1198 * Function: QueryMetaDataType
1199 * Type: Function
1200 * Rank: Important(1)
1201 * EnvConditions: N/A
1202 * CaseDescription: 1. call SetMetaData with normal parameters and check ret
1203 *                  2. call QueryMetaDataType and check ret
1204  */
HWTEST_F(ConsumerSurfaceTest, QueryMetaDataType002, Function | MediumTest | Level1)1205 HWTEST_F(ConsumerSurfaceTest, QueryMetaDataType002, Function | MediumTest | Level1)
1206 {
1207     std::vector<GraphicHDRMetaData> metaData;
1208     GraphicHDRMetaData data = {
1209         .key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_RED_PRIMARY_X,
1210         .value = 1,
1211     };
1212     metaData.push_back(data);
1213     GSError ret = cs->SetMetaData(firstSeqnum, metaData);
1214     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1215 
1216     HDRMetaDataType type = HDRMetaDataType::HDR_NOT_USED;
1217     ret = cs->QueryMetaDataType(firstSeqnum, type);
1218     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1219     ASSERT_EQ(type, HDRMetaDataType::HDR_META_DATA);
1220 }
1221 
1222 /*
1223 * Function: QueryMetaDataType
1224 * Type: Function
1225 * Rank: Important(1)
1226 * EnvConditions: N/A
1227 * CaseDescription: 1. call SetMetaDataSet with normal parameters and check ret
1228 *                  2. call QueryMetaDataType and check ret
1229  */
HWTEST_F(ConsumerSurfaceTest, QueryMetaDataType003, Function | MediumTest | Level1)1230 HWTEST_F(ConsumerSurfaceTest, QueryMetaDataType003, Function | MediumTest | Level1)
1231 {
1232     GraphicHDRMetadataKey key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_HDR10_PLUS;
1233     std::vector<uint8_t> metaData;
1234     uint8_t data = 1;
1235     metaData.push_back(data);
1236     GSError ret = cs->SetMetaDataSet(firstSeqnum, key, metaData);
1237     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1238 
1239     HDRMetaDataType type = HDRMetaDataType::HDR_NOT_USED;
1240     ret = cs->QueryMetaDataType(firstSeqnum, type);
1241     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1242     ASSERT_EQ(type, HDRMetaDataType::HDR_META_DATA_SET);
1243 }
1244 
1245 /*
1246 * Function: QueryMetaDataType
1247 * Type: Function
1248 * Rank: Important(1)
1249 * EnvConditions: N/A
1250 * CaseDescription: 1. call QueryMetaDataType with nullptr and check ret
1251  */
HWTEST_F(ConsumerSurfaceTest, QueryMetaDataType004, Function | MediumTest | Level1)1252 HWTEST_F(ConsumerSurfaceTest, QueryMetaDataType004, Function | MediumTest | Level1)
1253 {
1254     HDRMetaDataType type = HDRMetaDataType::HDR_META_DATA;
1255     GSError ret = surface_->QueryMetaDataType(firstSeqnum, type);
1256     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1257 }
1258 
1259 /*
1260 * Function: SetMetaData and GetMetaData
1261 * Type: Function
1262 * Rank: Important(2)
1263 * EnvConditions: N/A
1264 * CaseDescription: 1. call SetMetaData with abnormal parameters and check ret
1265  */
HWTEST_F(ConsumerSurfaceTest, metaData001, Function | MediumTest | Level2)1266 HWTEST_F(ConsumerSurfaceTest, metaData001, Function | MediumTest | Level2)
1267 {
1268     std::vector<GraphicHDRMetaData> metaData;
1269     GSError ret = cs->SetMetaData(firstSeqnum, metaData);
1270     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1271 }
1272 
1273 /*
1274 * Function: SetMetaData and GetMetaData
1275 * Type: Function
1276 * Rank: Important(1)
1277 * EnvConditions: N/A
1278 * CaseDescription: 1. call SetMetaData with normal parameters and check ret
1279  */
HWTEST_F(ConsumerSurfaceTest, metaData002, Function | MediumTest | Level1)1280 HWTEST_F(ConsumerSurfaceTest, metaData002, Function | MediumTest | Level1)
1281 {
1282     std::vector<GraphicHDRMetaData> metaData;
1283     GraphicHDRMetaData data = {
1284         .key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_RED_PRIMARY_X,
1285         .value = 100,  // for test
1286     };
1287     metaData.push_back(data);
1288     GSError ret = cs->SetMetaData(firstSeqnum, metaData);
1289     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1290 }
1291 
1292 /*
1293 * Function: SetMetaData and GetMetaData
1294 * Type: Function
1295 * Rank: Important(1)
1296 * EnvConditions: N/A
1297 * CaseDescription: 1. call SetMetaData with normal parameters and check ret
1298 *                  2. call GetMetaData and check ret
1299  */
HWTEST_F(ConsumerSurfaceTest, metaData003, Function | MediumTest | Level1)1300 HWTEST_F(ConsumerSurfaceTest, metaData003, Function | MediumTest | Level1)
1301 {
1302     std::vector<GraphicHDRMetaData> metaData;
1303     GraphicHDRMetaData data = {
1304         .key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_RED_PRIMARY_X,
1305         .value = 100,  // for test
1306     };
1307     metaData.push_back(data);
1308 
1309     sptr<SurfaceBuffer> buffer;
1310     int releaseFence = -1;
1311     GSError ret = ps->RequestBuffer(buffer, releaseFence, requestConfig);
1312     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1313     ASSERT_NE(buffer, nullptr);
1314 
1315     uint32_t sequence = buffer->GetSeqNum();
1316     ret = cs->SetMetaData(sequence, metaData);
1317     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1318 
1319     std::vector<GraphicHDRMetaData> metaDataGet;
1320     ret = cs->GetMetaData(sequence, metaDataGet);
1321     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1322     ASSERT_EQ(metaData[0].key, metaDataGet[0].key);
1323     ASSERT_EQ(metaData[0].value, metaDataGet[0].value);
1324 
1325     ret = cs->GetMetaData(sequence + 1, metaDataGet);
1326     ASSERT_EQ(ret, OHOS::GSERROR_NO_ENTRY);
1327 
1328     ret = ps->CancelBuffer(buffer);
1329     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1330 }
1331 
1332 /*
1333 * Function: SetMetaData and GetMetaData
1334 * Type: Function
1335 * Rank: Important(2)
1336 * EnvConditions: N/A
1337 * CaseDescription: 1. call SetMetaData and GetMetaData with nullptr and check ret
1338  */
HWTEST_F(ConsumerSurfaceTest, metaData004, Function | MediumTest | Level2)1339 HWTEST_F(ConsumerSurfaceTest, metaData004, Function | MediumTest | Level2)
1340 {
1341     std::vector<GraphicHDRMetaData> metaData;
1342     GSError ret = surface_->SetMetaData(firstSeqnum, metaData);
1343     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1344     ret = surface_->GetMetaData(firstSeqnum, metaData);
1345     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1346 }
1347 
1348 /*
1349 * Function: SetMetaDataSet and GetMetaDataSet
1350 * Type: Function
1351 * Rank: Important(2)
1352 * EnvConditions: N/A
1353 * CaseDescription: 1. call SetMetaDataSet with abnormal parameters and check ret
1354  */
HWTEST_F(ConsumerSurfaceTest, metaDataSet001, Function | MediumTest | Level2)1355 HWTEST_F(ConsumerSurfaceTest, metaDataSet001, Function | MediumTest | Level2)
1356 {
1357     GraphicHDRMetadataKey key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_HDR10_PLUS;
1358     std::vector<uint8_t> metaData;
1359     GSError ret = cs->SetMetaDataSet(firstSeqnum, key, metaData);
1360     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1361 }
1362 
1363 /*
1364 * Function: SetMetaDataSet and GetMetaDataSet
1365 * Type: Function
1366 * Rank: Important(1)
1367 * EnvConditions: N/A
1368 * CaseDescription: 1. call SetMetaDataSet with normal parameters and check ret
1369  */
HWTEST_F(ConsumerSurfaceTest, metaDataSet002, Function | MediumTest | Level1)1370 HWTEST_F(ConsumerSurfaceTest, metaDataSet002, Function | MediumTest | Level1)
1371 {
1372     GraphicHDRMetadataKey key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_HDR10_PLUS;
1373     std::vector<uint8_t> metaData;
1374     uint8_t data = 10;  // for test
1375     metaData.push_back(data);
1376     GSError ret = cs->SetMetaDataSet(firstSeqnum, key, metaData);
1377     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1378 }
1379 
1380 /*
1381 * Function: SetMetaDataSet and GetMetaDataSet
1382 * Type: Function
1383 * Rank: Important(1)
1384 * EnvConditions: N/A
1385 * CaseDescription: 1. call SetMetaDataSet with normal parameters and check ret
1386 *                  2. call GetMetaDataSet and check ret
1387  */
HWTEST_F(ConsumerSurfaceTest, metaDataSet003, Function | MediumTest | Level1)1388 HWTEST_F(ConsumerSurfaceTest, metaDataSet003, Function | MediumTest | Level1)
1389 {
1390     GraphicHDRMetadataKey key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_HDR10_PLUS;
1391     std::vector<uint8_t> metaData;
1392     uint8_t data = 10;  // for test
1393     metaData.push_back(data);
1394 
1395     sptr<SurfaceBuffer> buffer;
1396     int releaseFence = -1;
1397     GSError ret = ps->RequestBuffer(buffer, releaseFence, requestConfig);
1398     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1399     ASSERT_NE(buffer, nullptr);
1400 
1401     uint32_t sequence = buffer->GetSeqNum();
1402     ret = cs->SetMetaDataSet(sequence, key, metaData);
1403     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1404 
1405     GraphicHDRMetadataKey keyGet = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_RED_PRIMARY_X;
1406     std::vector<uint8_t> metaDataGet;
1407     ret = cs->GetMetaDataSet(sequence, keyGet, metaDataGet);
1408     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1409     ASSERT_EQ(key, keyGet);
1410     ASSERT_EQ(metaData[0], metaDataGet[0]);
1411 
1412     ret = cs->GetMetaDataSet(sequence + 1, keyGet, metaDataGet);
1413     ASSERT_EQ(ret, OHOS::GSERROR_NO_ENTRY);
1414 
1415     ret = ps->CancelBuffer(buffer);
1416     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1417 }
1418 
1419 /*
1420 * Function: SetMetaDataSet and GetMetaDataSet
1421 * Type: Function
1422 * Rank: Important(2)
1423 * EnvConditions: N/A
1424 * CaseDescription: 1. call SetMetaDataSet and GetMetaDataSet with nullptr and check ret
1425  */
HWTEST_F(ConsumerSurfaceTest, metaDataSet004, Function | MediumTest | Level2)1426 HWTEST_F(ConsumerSurfaceTest, metaDataSet004, Function | MediumTest | Level2)
1427 {
1428     GraphicHDRMetadataKey key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_HDR10_PLUS;
1429     std::vector<uint8_t> metaData;
1430     GSError ret = surface_->SetMetaDataSet(firstSeqnum, key, metaData);
1431     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1432     ret = surface_->GetMetaDataSet(firstSeqnum, key, metaData);
1433     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1434 }
1435 
1436 /*
1437 * Function: SetTunnelHandle and GetTunnelHandle
1438 * Type: Function
1439 * Rank: Important(2)
1440 * EnvConditions: N/A
1441 * CaseDescription: 1. call SetTunnelHandle with abnormal parameters and check ret
1442  */
HWTEST_F(ConsumerSurfaceTest, TunnelHandle001, Function | MediumTest | Level2)1443 HWTEST_F(ConsumerSurfaceTest, TunnelHandle001, Function | MediumTest | Level2)
1444 {
1445     GraphicExtDataHandle *handle = nullptr;
1446     GSError ret = cs->SetTunnelHandle(handle);
1447     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1448 }
1449 
1450 /*
1451 * Function: SetTunnelHandle and GetTunnelHandle
1452 * Type: Function
1453 * Rank: Important(2)
1454 * EnvConditions: N/A
1455 * CaseDescription: 1. call SetTunnelHandle with abnormal parameters and check ret
1456  */
HWTEST_F(ConsumerSurfaceTest, TunnelHandle002, Function | MediumTest | Level2)1457 HWTEST_F(ConsumerSurfaceTest, TunnelHandle002, Function | MediumTest | Level2)
1458 {
1459     GraphicExtDataHandle *handle = nullptr;
1460     handle = new GraphicExtDataHandle();
1461     handle->fd = -1;
1462     handle->reserveInts = 0;
1463     GSError ret = cs->SetTunnelHandle(handle);
1464     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1465 }
1466 
1467 /*
1468 * Function: SetTunnelHandle and GetTunnelHandle
1469 * Type: Function
1470 * Rank: Important(1)
1471 * EnvConditions: N/A
1472 * CaseDescription: 1. call SetTunnelHandle with normal parameters and check ret
1473 *                  2. call GetTunnelHandle and check ret
1474 * @tc.require: issueI5GMZN issueI5IWHW
1475  */
HWTEST_F(ConsumerSurfaceTest, TunnelHandle003, Function | MediumTest | Level1)1476 HWTEST_F(ConsumerSurfaceTest, TunnelHandle003, Function | MediumTest | Level1)
1477 {
1478     GraphicExtDataHandle *handle = static_cast<GraphicExtDataHandle *>(
1479         malloc(sizeof(GraphicExtDataHandle) + sizeof(int32_t)));
1480     handle->fd = -1;
1481     handle->reserveInts = 1;
1482     handle->reserve[0] = 0;
1483     GSError ret = cs->SetTunnelHandle(handle);
1484     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1485 
1486     ret = cs->SetTunnelHandle(handle);
1487     ASSERT_EQ(ret, OHOS::GSERROR_NO_ENTRY);
1488 
1489     sptr<SurfaceTunnelHandle> handleGet = nullptr;
1490     handleGet = cs->GetTunnelHandle();
1491     ASSERT_NE(handleGet, nullptr);
1492     ASSERT_EQ(handle->fd, handleGet->GetHandle()->fd);
1493     ASSERT_EQ(handle->reserveInts, handleGet->GetHandle()->reserveInts);
1494     ASSERT_EQ(handle->reserve[0], handleGet->GetHandle()->reserve[0]);
1495     free(handle);
1496 }
1497 
1498 /*
1499 * Function: SetTunnelHandle and GetTunnelHandle
1500 * Type: Function
1501 * Rank: Important(2)
1502 * EnvConditions: N/A
1503 * CaseDescription: 1. call SetTunnelHandle and GetTunnelHandle with nullptr and check ret
1504  */
HWTEST_F(ConsumerSurfaceTest, TunnelHandle004, Function | MediumTest | Level2)1505 HWTEST_F(ConsumerSurfaceTest, TunnelHandle004, Function | MediumTest | Level2)
1506 {
1507     GraphicExtDataHandle *handle = nullptr;
1508     GSError ret = surface_->SetTunnelHandle(handle);
1509     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1510     sptr<SurfaceTunnelHandle> tunnelHandle = surface_->GetTunnelHandle();
1511     ASSERT_EQ(tunnelHandle, nullptr);
1512 }
1513 
1514 /*
1515 * Function: SetPresentTimestamp and GetPresentTimestamp
1516 * Type: Function
1517 * Rank: Important(2)
1518 * EnvConditions: N/A
1519 * CaseDescription: 1. call SetPresentTimestamp with abnormal parameters and check ret
1520 * @tc.require: issueI5I57K
1521  */
HWTEST_F(ConsumerSurfaceTest, presentTimestamp002, Function | MediumTest | Level2)1522 HWTEST_F(ConsumerSurfaceTest, presentTimestamp002, Function | MediumTest | Level2)
1523 {
1524     GraphicPresentTimestamp timestamp = {GRAPHIC_DISPLAY_PTS_UNSUPPORTED, 0};
1525     GSError ret = cs->SetPresentTimestamp(-1, timestamp);
1526     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1527 }
1528 
1529 /*
1530 * Function: SetPresentTimestamp and GetPresentTimestamp
1531 * Type: Function
1532 * Rank: Important(2)
1533 * EnvConditions: N/A
1534 * CaseDescription: 1. call SetPresentTimestamp with abnormal parameters and check ret
1535 * @tc.require: issueI5I57K
1536  */
HWTEST_F(ConsumerSurfaceTest, presentTimestamp003, Function | MediumTest | Level2)1537 HWTEST_F(ConsumerSurfaceTest, presentTimestamp003, Function | MediumTest | Level2)
1538 {
1539     GraphicPresentTimestamp timestamp = {GRAPHIC_DISPLAY_PTS_DELAY, 0};
1540     GSError ret = cs->SetPresentTimestamp(-1, timestamp);
1541     ASSERT_EQ(ret, OHOS::GSERROR_NO_ENTRY);
1542 }
1543 
1544 /*
1545 * Function: SetPresentTimestamp and GetPresentTimestamp
1546 * Type: Function
1547 * Rank: Important(1)
1548 * EnvConditions: N/A
1549 * CaseDescription: 1. call SetPresentTimestamp with normal parameters and check ret
1550 * @tc.require: issueI5I57K
1551  */
HWTEST_F(ConsumerSurfaceTest, presentTimestamp004, Function | MediumTest | Level1)1552 HWTEST_F(ConsumerSurfaceTest, presentTimestamp004, Function | MediumTest | Level1)
1553 {
1554     GraphicPresentTimestamp timestamp = {GRAPHIC_DISPLAY_PTS_DELAY, 0};
1555     GSError ret = cs->SetPresentTimestamp(firstSeqnum, timestamp);
1556     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1557 }
1558 
1559 /*
1560 * Function: SetPresentTimestamp and GetPresentTimestamp
1561 * Type: Function
1562 * Rank: Important(1)
1563 * EnvConditions: N/A
1564 * CaseDescription: 1. call SetPresentTimestamp with normal parameters and check ret
1565 * @tc.require: issueI5I57K
1566  */
HWTEST_F(ConsumerSurfaceTest, presentTimestamp005, Function | MediumTest | Level1)1567 HWTEST_F(ConsumerSurfaceTest, presentTimestamp005, Function | MediumTest | Level1)
1568 {
1569     GraphicPresentTimestamp timestamp = {GRAPHIC_DISPLAY_PTS_TIMESTAMP, 0};
1570     GSError ret = cs->SetPresentTimestamp(firstSeqnum, timestamp);
1571     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1572 }
1573 
1574 /*
1575 * Function: SetPresentTimestamp and GetPresentTimestamp
1576 * Type: Function
1577 * Rank: Important(1)
1578 * EnvConditions: N/A
1579 * CaseDescription: 1. call SetPresentTimestamp with nullptr and check ret
1580  */
HWTEST_F(ConsumerSurfaceTest, presentTimestamp006, Function | MediumTest | Level1)1581 HWTEST_F(ConsumerSurfaceTest, presentTimestamp006, Function | MediumTest | Level1)
1582 {
1583     GraphicPresentTimestamp timestamp = {GRAPHIC_DISPLAY_PTS_TIMESTAMP, 0};
1584     GSError ret = surface_->SetPresentTimestamp(firstSeqnum, timestamp);
1585     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1586     int64_t time = 0;
1587     ret = surface_->GetPresentTimestamp(firstSeqnum, GraphicPresentTimestampType::GRAPHIC_DISPLAY_PTS_TIMESTAMP, time);
1588     ASSERT_EQ(ret, OHOS::GSERROR_NOT_SUPPORT);
1589 }
1590 
1591 /*
1592 * Function: AcquireBuffer and ReleaseBuffer
1593 * Type: Function
1594 * Rank: Important(2)
1595 * EnvConditions: N/A
1596 * CaseDescription: 1. call RequestBuffer and FlushBuffer
1597 *                  2. call AcquireBuffer and ReleaseBuffer
1598 *                  3. check ret
1599  */
HWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel005, Function | MediumTest | Level2)1600 HWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel005, Function | MediumTest | Level2)
1601 {
1602     sptr<SurfaceBuffer> buffer;
1603     int releaseFence = -1;
1604 
1605     GSError ret = ps->RequestBuffer(buffer, releaseFence, requestConfig);
1606     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1607     ASSERT_NE(buffer, nullptr);
1608 
1609     ret = ps->FlushBuffer(buffer, SyncFence::INVALID_FENCE, flushConfigWithDamages);
1610     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1611 
1612     sptr<OHOS::SyncFence> flushFence;
1613     ret = cs->AcquireBuffer(buffer, flushFence, timestamp, damages);
1614     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1615     ASSERT_NE(buffer, nullptr);
1616     ASSERT_EQ(damages.size(), flushConfigWithDamages.damages.size());
1617     for (decltype(damages.size()) i = 0; i < damages.size(); i++) {
1618         ASSERT_EQ(damages[i].x, flushConfigWithDamages.damages[i].x);
1619         ASSERT_EQ(damages[i].y, flushConfigWithDamages.damages[i].y);
1620         ASSERT_EQ(damages[i].w, flushConfigWithDamages.damages[i].w);
1621         ASSERT_EQ(damages[i].h, flushConfigWithDamages.damages[i].h);
1622     }
1623 
1624     ASSERT_EQ(timestamp, flushConfigWithDamages.timestamp);
1625     ret = cs->ReleaseBuffer(buffer, -1);
1626     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1627 }
1628 
1629 /*
1630 * Function: AttachBuffer001
1631 * Type: Function
1632 * Rank: Important(2)
1633 * EnvConditions: N/A
1634 * CaseDescription: 1. call AttachBuffer
1635 *                  2. check ret
1636  */
HWTEST_F(ConsumerSurfaceTest, AttachBuffer001, Function | MediumTest | Level2)1637 HWTEST_F(ConsumerSurfaceTest, AttachBuffer001, Function | MediumTest | Level2)
1638 {
1639     sptr<SurfaceBuffer> buffer = SurfaceBuffer::Create();
1640     ASSERT_NE(buffer, nullptr);
1641     GSError ret = cs->AttachBuffer(buffer);
1642     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1643 }
1644 
1645 /*
1646 * Function: AttachBuffer002
1647 * Type: Function
1648 * Rank: Important(2)
1649 * EnvConditions: N/A
1650 * CaseDescription: 1. call AttachBuffer
1651 *                  2. check ret
1652  */
HWTEST_F(ConsumerSurfaceTest, AttachBuffer002, Function | MediumTest | Level2)1653 HWTEST_F(ConsumerSurfaceTest, AttachBuffer002, Function | MediumTest | Level2)
1654 {
1655     sptr<SurfaceBuffer> buffer = SurfaceBuffer::Create();
1656     ASSERT_NE(buffer, nullptr);
1657     int32_t timeOut = 1;
1658     GSError ret = cs->AttachBuffer(buffer, timeOut);
1659     ASSERT_NE(ret, OHOS::GSERROR_OK);
1660 }
1661 
1662 /*
1663 * Function: AttachBuffer003
1664 * Type: Function
1665 * Rank: Important(2)
1666 * EnvConditions: N/A
1667 * CaseDescription: 1. call AttachBuffer
1668 *                  2. check ret
1669  */
HWTEST_F(ConsumerSurfaceTest, AttachBuffer003, Function | MediumTest | Level2)1670 HWTEST_F(ConsumerSurfaceTest, AttachBuffer003, Function | MediumTest | Level2)
1671 {
1672     sptr<SurfaceBuffer> buffer = SurfaceBuffer::Create();
1673     ASSERT_NE(buffer, nullptr);
1674     int32_t timeOut = 1;
1675     GSError ret = cs->AttachBuffer(buffer, timeOut);
1676     ASSERT_NE(ret, GSERROR_OK);
1677 }
1678 
1679 /*
1680 * Function: AttachBuffer
1681 * Type: Function
1682 * Rank: Important(2)
1683 * EnvConditions: N/A
1684 * CaseDescription: 1. call AttachBuffer with nullptr params
1685 *                  2. check ret
1686  */
HWTEST_F(ConsumerSurfaceTest, AttachBuffer004, Function | MediumTest | Level2)1687 HWTEST_F(ConsumerSurfaceTest, AttachBuffer004, Function | MediumTest | Level2)
1688 {
1689     sptr<SurfaceBuffer> buffer = nullptr;
1690     GSError ret = surface_->AttachBuffer(buffer);
1691     ASSERT_EQ(ret, GSERROR_INVALID_ARGUMENTS);
1692 }
1693 
1694 /*
1695 * Function: AttachBuffer
1696 * Type: Function
1697 * Rank: Important(2)
1698 * EnvConditions: N/A
1699 * CaseDescription: 1. call AttachBuffer with nullptr params
1700 *                  2. check ret
1701  */
HWTEST_F(ConsumerSurfaceTest, AttachBuffer005, Function | MediumTest | Level2)1702 HWTEST_F(ConsumerSurfaceTest, AttachBuffer005, Function | MediumTest | Level2)
1703 {
1704     sptr<SurfaceBuffer> buffer = nullptr;
1705     int32_t timeOut = 1;
1706     GSError ret = surface_->AttachBuffer(buffer, timeOut);
1707     ASSERT_EQ(ret, GSERROR_INVALID_ARGUMENTS);
1708 }
1709 
1710 /*
1711 * Function: RegisterSurfaceDelegator
1712 * Type: Function
1713 * Rank: Important(2)
1714 * EnvConditions: N/A
1715 * CaseDescription: 1. call RegisterSurfaceDelegator
1716 *                  2. check ret
1717  */
HWTEST_F(ConsumerSurfaceTest, RegisterSurfaceDelegator001, Function | MediumTest | Level2)1718 HWTEST_F(ConsumerSurfaceTest, RegisterSurfaceDelegator001, Function | MediumTest | Level2)
1719 {
1720     GSError ret = cs->RegisterSurfaceDelegator(surfaceDelegator->AsObject());
1721     ASSERT_EQ(ret, GSERROR_OK);
1722 }
1723 
1724 /*
1725 * Function: RegisterSurfaceDelegator
1726 * Type: Function
1727 * Rank: Important(2)
1728 * EnvConditions: N/A
1729 * CaseDescription: 1. call RegisterSurfaceDelegator with nullptr params
1730 *                  2. check ret
1731  */
HWTEST_F(ConsumerSurfaceTest, RegisterSurfaceDelegator002, Function | MediumTest | Level2)1732 HWTEST_F(ConsumerSurfaceTest, RegisterSurfaceDelegator002, Function | MediumTest | Level2)
1733 {
1734     GSError ret = surface_->RegisterSurfaceDelegator(nullptr);
1735     ASSERT_EQ(ret, GSERROR_INVALID_ARGUMENTS);
1736     ASSERT_NE(surfaceDelegator, nullptr);
1737     sptr<IRemoteObject> client = surfaceDelegator->AsObject();
1738     ASSERT_NE(client, nullptr);
1739     ret = surface_->RegisterSurfaceDelegator(client);
1740     ASSERT_EQ(ret, GSERROR_INVALID_ARGUMENTS);
1741 }
1742 
1743 /*
1744 * Function: ConsumerRequestCpuAccess
1745 * Type: Function
1746 * Rank: Important(2)
1747 * EnvConditions: N/A
1748 * CaseDescription: 1. usage does not contain BUFFER_USAGE_CPU_HW_BOTH
1749 *                  2. call ConsumerRequestCpuAccess(fasle/true)
1750 *                  3. check ret
1751  */
HWTEST_F(ConsumerSurfaceTest, ConsumerRequestCpuAccess001, Function | MediumTest | Level2)1752 HWTEST_F(ConsumerSurfaceTest, ConsumerRequestCpuAccess001, Function | MediumTest | Level2)
1753 {
1754     using namespace HDI::Display::Graphic::Common;
1755     BufferRequestConfig config = {
1756         .width = 0x100,
1757         .height = 0x100,
1758         .strideAlignment = 0x8,
1759         .format = GRAPHIC_PIXEL_FMT_RGBA_8888,
1760         .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA,
1761         .timeout = 0,
1762     };
1763     auto cSurface = IConsumerSurface::Create();
1764     sptr<IBufferConsumerListener> cListener = new BufferConsumerListener();
1765     cSurface->RegisterConsumerListener(cListener);
1766     auto p = cSurface->GetProducer();
1767     auto pSurface = Surface::CreateSurfaceAsProducer(p);
1768 
1769     // test default
1770     sptr<SurfaceBuffer> buffer;
1771     int releaseFence = -1;
1772     GSError ret = pSurface->RequestBuffer(buffer, releaseFence, config);
1773     ASSERT_EQ(ret, GSERROR_OK);
1774     ASSERT_NE(buffer, nullptr);
1775 
1776     std::vector<uint8_t> values;
1777     buffer->GetMetadata(V1_1::BufferHandleAttrKey::ATTRKEY_REQUEST_ACCESS_TYPE, values);
1778     ASSERT_EQ(values.size(), 0);
1779 
1780     ret = pSurface->CancelBuffer(buffer);
1781     ASSERT_EQ(ret, GSERROR_OK);
1782 
1783     // test true
1784     cSurface->ConsumerRequestCpuAccess(true);
1785     ret = pSurface->RequestBuffer(buffer, releaseFence, config);
1786     ASSERT_EQ(ret, GSERROR_OK);
1787     ASSERT_NE(buffer, nullptr);
1788 
1789     values.clear();
1790     buffer->GetMetadata(V1_1::BufferHandleAttrKey::ATTRKEY_REQUEST_ACCESS_TYPE, values);
1791     ASSERT_EQ(values.size(), 0);
1792 
1793     ret = pSurface->CancelBuffer(buffer);
1794     ASSERT_EQ(ret, GSERROR_OK);
1795 
1796     // test false
1797     cSurface->ConsumerRequestCpuAccess(false);
1798     ret = pSurface->RequestBuffer(buffer, releaseFence, config);
1799     ASSERT_EQ(ret, GSERROR_OK);
1800     ASSERT_NE(buffer, nullptr);
1801 
1802     values.clear();
1803     buffer->GetMetadata(V1_1::BufferHandleAttrKey::ATTRKEY_REQUEST_ACCESS_TYPE, values);
1804     ASSERT_EQ(values.size(), 0);
1805 
1806     ret = pSurface->CancelBuffer(buffer);
1807     ASSERT_EQ(ret, GSERROR_OK);
1808 }
1809 
1810 /*
1811 * Function: ConsumerRequestCpuAccess
1812 * Type: Function
1813 * Rank: Important(2)
1814 * EnvConditions: N/A
1815 * CaseDescription: 1. usage contain BUFFER_USAGE_CPU_HW_BOTH
1816 *                  2. call ConsumerRequestCpuAccess(true)
1817 *                  3. check ret
1818  */
HWTEST_F(ConsumerSurfaceTest, ConsumerRequestCpuAccess002, Function | MediumTest | Level2)1819 HWTEST_F(ConsumerSurfaceTest, ConsumerRequestCpuAccess002, Function | MediumTest | Level2)
1820 {
1821     using namespace HDI::Display::Graphic::Common;
1822     BufferRequestConfig config = {
1823         .width = 0x100,
1824         .height = 0x100,
1825         .strideAlignment = 0x8,
1826         .format = GRAPHIC_PIXEL_FMT_RGBA_8888,
1827         .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA | BUFFER_USAGE_CPU_HW_BOTH,
1828         .timeout = 0,
1829     };
1830     auto cSurface = IConsumerSurface::Create();
1831     sptr<IBufferConsumerListener> cListener = new BufferConsumerListener();
1832     cSurface->RegisterConsumerListener(cListener);
1833     auto p = cSurface->GetProducer();
1834     auto pSurface = Surface::CreateSurfaceAsProducer(p);
1835 
1836     // test default
1837     sptr<SurfaceBuffer> buffer;
1838     int releaseFence = -1;
1839     GSError ret = pSurface->RequestBuffer(buffer, releaseFence, config);
1840     ASSERT_EQ(ret, GSERROR_OK);
1841     ASSERT_NE(buffer, nullptr);
1842 
1843     std::vector<uint8_t> values;
1844     buffer->GetMetadata(V1_1::BufferHandleAttrKey::ATTRKEY_REQUEST_ACCESS_TYPE, values);
1845     if (values.size() == 1) {
1846         ASSERT_EQ(values[0], V1_1::HebcAccessType::HEBC_ACCESS_HW_ONLY);
1847     }
1848 
1849     ret = pSurface->CancelBuffer(buffer);
1850     ASSERT_EQ(ret, GSERROR_OK);
1851 
1852     // test true
1853     cSurface->ConsumerRequestCpuAccess(true);
1854     ret = pSurface->RequestBuffer(buffer, releaseFence, config);
1855     ASSERT_EQ(ret, GSERROR_OK);
1856     ASSERT_NE(buffer, nullptr);
1857 
1858     values.clear();
1859     buffer->GetMetadata(V1_1::BufferHandleAttrKey::ATTRKEY_REQUEST_ACCESS_TYPE, values);
1860     if (values.size() == 1) {
1861         ASSERT_EQ(values[0], V1_1::HebcAccessType::HEBC_ACCESS_CPU_ACCESS);
1862     }
1863 
1864     ret = pSurface->CancelBuffer(buffer);
1865     ASSERT_EQ(ret, GSERROR_OK);
1866 
1867     // test false
1868     cSurface->ConsumerRequestCpuAccess(false);
1869     ret = pSurface->RequestBuffer(buffer, releaseFence, config);
1870     ASSERT_EQ(ret, GSERROR_OK);
1871     ASSERT_NE(buffer, nullptr);
1872 
1873     values.clear();
1874     buffer->GetMetadata(V1_1::BufferHandleAttrKey::ATTRKEY_REQUEST_ACCESS_TYPE, values);
1875     if (values.size() == 1) {
1876         ASSERT_EQ(values[0], V1_1::HebcAccessType::HEBC_ACCESS_HW_ONLY);
1877     }
1878 
1879     ret = pSurface->CancelBuffer(buffer);
1880     ASSERT_EQ(ret, GSERROR_OK);
1881 }
1882 
1883 /*
1884 * Function: ConsumerRequestCpuAccess
1885 * Type: Function
1886 * Rank: Important(2)
1887 * EnvConditions: N/A
1888 * CaseDescription: 1. call ConsumerRequestCpuAccess with nullptr
1889 *                  2. check ret
1890  */
HWTEST_F(ConsumerSurfaceTest, ConsumerRequestCpuAccess003, Function | MediumTest | Level2)1891 HWTEST_F(ConsumerSurfaceTest, ConsumerRequestCpuAccess003, Function | MediumTest | Level2)
1892 {
1893     ASSERT_NE(surface_, nullptr);
1894     surface_->ConsumerRequestCpuAccess(true);
1895 }
1896 
1897 /*
1898 * Function: SetTransformHint and GetTransformHint
1899 * Type: Function
1900 * Rank: Important(1)
1901 * EnvConditions: N/A
1902 * CaseDescription: 1. call SetTransformHint with nullptr and check ret
1903 *                  2. call GetTransformHint with nullptr and check ret
1904  */
HWTEST_F(ConsumerSurfaceTest, transformHint001, Function | MediumTest | Level1)1905 HWTEST_F(ConsumerSurfaceTest, transformHint001, Function | MediumTest | Level1)
1906 {
1907     GraphicTransformType typeSet = GraphicTransformType::GRAPHIC_ROTATE_BUTT;
1908     GSError ret = surface_->SetTransformHint(typeSet);
1909     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1910     GraphicTransformType typeGet = surface_->GetTransformHint();
1911     ASSERT_EQ(typeGet, GraphicTransformType::GRAPHIC_ROTATE_BUTT);
1912 }
1913 
1914 /*
1915 * Function: SetSurfaceSourceType and GetSurfaceSourceType
1916 * Type: Function
1917 * Rank: Important(2)
1918 * EnvConditions: N/A
1919 * CaseDescription: 1. call SetSurfaceSourceType and check ret
1920 *                  2. call GetSurfaceSourceType and check ret
1921 */
HWTEST_F(ConsumerSurfaceTest, SurfaceSourceType001, Function | MediumTest | Level2)1922 HWTEST_F(ConsumerSurfaceTest, SurfaceSourceType001, Function | MediumTest | Level2)
1923 {
1924     OHSurfaceSource sourceType = OHSurfaceSource::OH_SURFACE_SOURCE_VIDEO;
1925     GSError ret = cs->SetSurfaceSourceType(sourceType);
1926     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1927     ASSERT_EQ(cs->GetSurfaceSourceType(), OH_SURFACE_SOURCE_VIDEO);
1928 }
1929 
1930 /*
1931 * Function: SetSurfaceSourceType and GetSurfaceSourceType
1932 * Type: Function
1933 * Rank: Important(2)
1934 * EnvConditions: N/A
1935 * CaseDescription: 1. call SetSurfaceSourceType with nullptr and check ret
1936 *                  2. call GetSurfaceSourceType with nullptr and check ret
1937 */
HWTEST_F(ConsumerSurfaceTest, SurfaceSourceType002, Function | MediumTest | Level2)1938 HWTEST_F(ConsumerSurfaceTest, SurfaceSourceType002, Function | MediumTest | Level2)
1939 {
1940     OHSurfaceSource sourceTypeSet = OHSurfaceSource::OH_SURFACE_SOURCE_VIDEO;
1941     GSError ret = surface_->SetSurfaceSourceType(sourceTypeSet);
1942     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1943     OHSurfaceSource sourceTypeGet = surface_->GetSurfaceSourceType();
1944     ASSERT_EQ(sourceTypeGet, OHSurfaceSource::OH_SURFACE_SOURCE_DEFAULT);
1945 }
1946 
1947 /*
1948 * Function: SetSurfaceAppFrameworkType and GetSurfaceAppFrameworkType
1949 * Type: Function
1950 * Rank: Important(2)
1951 * EnvConditions: N/A
1952 * CaseDescription: 1. call SetSurfaceAppFrameworkType and check ret
1953 *                  2. call GetSurfaceAppFrameworkType and check ret
1954 */
HWTEST_F(ConsumerSurfaceTest, SurfaceAppFrameworkType001, Function | MediumTest | Level2)1955 HWTEST_F(ConsumerSurfaceTest, SurfaceAppFrameworkType001, Function | MediumTest | Level2)
1956 {
1957     std::string type = "test";
1958     GSError ret = cs->SetSurfaceAppFrameworkType(type);
1959     ASSERT_EQ(ret, OHOS::GSERROR_OK);
1960     ASSERT_EQ(cs->GetSurfaceAppFrameworkType(), "test");
1961 }
1962 
1963 /*
1964 * Function: SetSurfaceAppFrameworkType and GetSurfaceAppFrameworkType
1965 * Type: Function
1966 * Rank: Important(2)
1967 * EnvConditions: N/A
1968 * CaseDescription: 1. call SetSurfaceAppFrameworkType with nullptr and check ret
1969 *                  2. call GetSurfaceAppFrameworkType with nullptr and check ret
1970 */
HWTEST_F(ConsumerSurfaceTest, SurfaceAppFrameworkType002, Function | MediumTest | Level2)1971 HWTEST_F(ConsumerSurfaceTest, SurfaceAppFrameworkType002, Function | MediumTest | Level2)
1972 {
1973     std::string type = "test";
1974     GSError ret = surface_->SetSurfaceAppFrameworkType(type);
1975     ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS);
1976     ASSERT_EQ(surface_->GetSurfaceAppFrameworkType(), "");
1977 }
1978 
1979 /*
1980 * Function: GetHdrWhitePointBrightness and GetSdrWhitePointBrightness
1981 * Type: Function
1982 * Rank: Important(2)
1983 * EnvConditions: N/A
1984 * CaseDescription: 1. call GetHdrWhitePointBrightness with nullptr and check ret
1985 *                  2. call GetSdrWhitePointBrightness with nullptr and check ret
1986 */
HWTEST_F(ConsumerSurfaceTest, WhitePointBrightness001, Function | MediumTest | Level2)1987 HWTEST_F(ConsumerSurfaceTest, WhitePointBrightness001, Function | MediumTest | Level2)
1988 {
1989     float ret = surface_->GetHdrWhitePointBrightness();
1990     ASSERT_EQ(static_cast<int32_t>(ret), 0);
1991     ret = surface_->GetSdrWhitePointBrightness();
1992     ASSERT_EQ(static_cast<int32_t>(ret), 0);
1993 }
1994 
1995 /*
1996 * Function: InvalidParameter
1997 * Type: Function
1998 * Rank: Important(2)
1999 * EnvConditions: N/A
2000 * CaseDescription: 1. call interface with invaild input nullptr and check ret
2001 */
HWTEST_F(ConsumerSurfaceTest, InvalidParameter001, Function | MediumTest | Level2)2002 HWTEST_F(ConsumerSurfaceTest, InvalidParameter001, Function | MediumTest | Level2)
2003 {
2004     sptr<OHOS::SurfaceBuffer> sBuffer = nullptr;
2005     sptr<OHOS::SyncFence> fence = nullptr;
2006     ASSERT_EQ(surface_->AcquireLastFlushedBuffer(sBuffer, fence, nullptr, 0, false), GSERROR_NOT_SUPPORT);
2007     ASSERT_EQ(surface_->ReleaseLastFlushedBuffer(sBuffer), GSERROR_NOT_SUPPORT);
2008 }
2009 
2010 /*
2011 * Function: GetGlobalAlpha
2012 * Type: Function
2013 * Rank: Important(2)
2014 * EnvConditions: N/A
2015 * CaseDescription: 1. call GetGlobalAlpha and check ret
2016 */
HWTEST_F(ConsumerSurfaceTest, GetGlobalAlpha001, Function | MediumTest | Level2)2017 HWTEST_F(ConsumerSurfaceTest, GetGlobalAlpha001, Function | MediumTest | Level2)
2018 {
2019     int32_t alpha = -1;
2020     ASSERT_EQ(cs->SetGlobalAlpha(alpha), GSERROR_NOT_SUPPORT);
2021     ASSERT_EQ(cs->GetGlobalAlpha(alpha), GSERROR_OK);
2022 }
2023 }
2024