132a6e48fSopenharmony_ci/* 232a6e48fSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 332a6e48fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 432a6e48fSopenharmony_ci * you may not use this file except in compliance with the License. 532a6e48fSopenharmony_ci * You may obtain a copy of the License at 632a6e48fSopenharmony_ci * 732a6e48fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 832a6e48fSopenharmony_ci * 932a6e48fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1032a6e48fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1132a6e48fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1232a6e48fSopenharmony_ci * See the License for the specific language governing permissions and 1332a6e48fSopenharmony_ci * limitations under the License. 1432a6e48fSopenharmony_ci */ 1532a6e48fSopenharmony_ci#include <securec.h> 1632a6e48fSopenharmony_ci#include <gtest/gtest.h> 1732a6e48fSopenharmony_ci#include <surface.h> 1832a6e48fSopenharmony_ci#include <buffer_queue_producer.h> 1932a6e48fSopenharmony_ci#include <consumer_surface.h> 2032a6e48fSopenharmony_ci#include "buffer_consumer_listener.h" 2132a6e48fSopenharmony_ci#include "sync_fence.h" 2232a6e48fSopenharmony_ci#include "producer_surface_delegator.h" 2332a6e48fSopenharmony_ci#include "buffer_queue_consumer.h" 2432a6e48fSopenharmony_ci#include "buffer_queue.h" 2532a6e48fSopenharmony_ci#include "v1_1/buffer_handle_meta_key_type.h" 2632a6e48fSopenharmony_ci 2732a6e48fSopenharmony_ciusing namespace testing; 2832a6e48fSopenharmony_ciusing namespace testing::ext; 2932a6e48fSopenharmony_ci 3032a6e48fSopenharmony_cinamespace OHOS::Rosen { 3132a6e48fSopenharmony_ciclass ConsumerSurfaceTest : public testing::Test { 3232a6e48fSopenharmony_cipublic: 3332a6e48fSopenharmony_ci static void SetUpTestCase(); 3432a6e48fSopenharmony_ci static void TearDownTestCase(); 3532a6e48fSopenharmony_ci void SetUp() override; 3632a6e48fSopenharmony_ci void TearDown() override; 3732a6e48fSopenharmony_ci 3832a6e48fSopenharmony_ci static inline BufferRequestConfig requestConfig = { 3932a6e48fSopenharmony_ci .width = 0x100, 4032a6e48fSopenharmony_ci .height = 0x100, 4132a6e48fSopenharmony_ci .strideAlignment = 0x8, 4232a6e48fSopenharmony_ci .format = GRAPHIC_PIXEL_FMT_RGBA_8888, 4332a6e48fSopenharmony_ci .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA, 4432a6e48fSopenharmony_ci .timeout = 0, 4532a6e48fSopenharmony_ci }; 4632a6e48fSopenharmony_ci static inline BufferFlushConfig flushConfig = { 4732a6e48fSopenharmony_ci .damage = { 4832a6e48fSopenharmony_ci .w = 0x100, 4932a6e48fSopenharmony_ci .h = 0x100, 5032a6e48fSopenharmony_ci }, 5132a6e48fSopenharmony_ci }; 5232a6e48fSopenharmony_ci static inline BufferFlushConfigWithDamages flushConfigWithDamages = { 5332a6e48fSopenharmony_ci .damages = { 5432a6e48fSopenharmony_ci { .x = 0x100, .y = 0x100, .w = 0x100, .h = 0x100, }, 5532a6e48fSopenharmony_ci { .x = 0x200, .y = 0x200, .w = 0x200, .h = 0x200, }, 5632a6e48fSopenharmony_ci }, 5732a6e48fSopenharmony_ci .timestamp = 0x300, 5832a6e48fSopenharmony_ci }; 5932a6e48fSopenharmony_ci static inline int64_t timestamp = 0; 6032a6e48fSopenharmony_ci static inline Rect damage = {}; 6132a6e48fSopenharmony_ci static inline std::vector<Rect> damages = {}; 6232a6e48fSopenharmony_ci static inline sptr<IConsumerSurface> cs = nullptr; 6332a6e48fSopenharmony_ci static inline sptr<Surface> ps = nullptr; 6432a6e48fSopenharmony_ci static inline sptr<BufferQueue> bq = nullptr; 6532a6e48fSopenharmony_ci static inline sptr<ProducerSurfaceDelegator> surfaceDelegator = nullptr; 6632a6e48fSopenharmony_ci static inline sptr<BufferQueueConsumer> consumer_ = nullptr; 6732a6e48fSopenharmony_ci static inline uint32_t firstSeqnum = 0; 6832a6e48fSopenharmony_ci sptr<ConsumerSurface> surface_ = nullptr; 6932a6e48fSopenharmony_ci}; 7032a6e48fSopenharmony_ci 7132a6e48fSopenharmony_civoid ConsumerSurfaceTest::SetUpTestCase() 7232a6e48fSopenharmony_ci{ 7332a6e48fSopenharmony_ci cs = IConsumerSurface::Create(); 7432a6e48fSopenharmony_ci sptr<IBufferConsumerListener> listener = new BufferConsumerListener(); 7532a6e48fSopenharmony_ci cs->RegisterConsumerListener(listener); 7632a6e48fSopenharmony_ci auto p = cs->GetProducer(); 7732a6e48fSopenharmony_ci bq = new BufferQueue("test"); 7832a6e48fSopenharmony_ci ps = Surface::CreateSurfaceAsProducer(p); 7932a6e48fSopenharmony_ci surfaceDelegator = ProducerSurfaceDelegator::Create(); 8032a6e48fSopenharmony_ci} 8132a6e48fSopenharmony_ci 8232a6e48fSopenharmony_civoid ConsumerSurfaceTest::TearDownTestCase() 8332a6e48fSopenharmony_ci{ 8432a6e48fSopenharmony_ci cs = nullptr; 8532a6e48fSopenharmony_ci} 8632a6e48fSopenharmony_ci 8732a6e48fSopenharmony_civoid ConsumerSurfaceTest::SetUp() 8832a6e48fSopenharmony_ci{ 8932a6e48fSopenharmony_ci surface_ = new ConsumerSurface("test", false); 9032a6e48fSopenharmony_ci ASSERT_NE(surface_, nullptr); 9132a6e48fSopenharmony_ci ASSERT_EQ(surface_->producer_, nullptr); 9232a6e48fSopenharmony_ci ASSERT_EQ(surface_->consumer_, nullptr); 9332a6e48fSopenharmony_ci} 9432a6e48fSopenharmony_ci 9532a6e48fSopenharmony_civoid ConsumerSurfaceTest::TearDown() 9632a6e48fSopenharmony_ci{ 9732a6e48fSopenharmony_ci surface_ = nullptr; 9832a6e48fSopenharmony_ci} 9932a6e48fSopenharmony_ci 10032a6e48fSopenharmony_ciclass TestConsumerListenerClazz : public IBufferConsumerListenerClazz { 10132a6e48fSopenharmony_cipublic: 10232a6e48fSopenharmony_ci void OnBufferAvailable() override 10332a6e48fSopenharmony_ci { 10432a6e48fSopenharmony_ci } 10532a6e48fSopenharmony_ci}; 10632a6e48fSopenharmony_ci 10732a6e48fSopenharmony_ci/* 10832a6e48fSopenharmony_ci* Function: GetProducer 10932a6e48fSopenharmony_ci* Type: Function 11032a6e48fSopenharmony_ci* Rank: Important(2) 11132a6e48fSopenharmony_ci* EnvConditions: N/A 11232a6e48fSopenharmony_ci* CaseDescription: 1. get ConsumerSurface and GetProducer 11332a6e48fSopenharmony_ci* 2. check ret 11432a6e48fSopenharmony_ci */ 11532a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ConsumerSurface001, Function | MediumTest | Level2) 11632a6e48fSopenharmony_ci{ 11732a6e48fSopenharmony_ci ASSERT_NE(cs, nullptr); 11832a6e48fSopenharmony_ci 11932a6e48fSopenharmony_ci sptr<ConsumerSurface> qs = static_cast<ConsumerSurface*>(cs.GetRefPtr()); 12032a6e48fSopenharmony_ci ASSERT_NE(qs, nullptr); 12132a6e48fSopenharmony_ci ASSERT_NE(qs->GetProducer(), nullptr); 12232a6e48fSopenharmony_ci} 12332a6e48fSopenharmony_ci 12432a6e48fSopenharmony_ci/* 12532a6e48fSopenharmony_ci* Function: ConsumerSurface dtor 12632a6e48fSopenharmony_ci* Type: Function 12732a6e48fSopenharmony_ci* Rank: Important(2) 12832a6e48fSopenharmony_ci* EnvConditions: N/A 12932a6e48fSopenharmony_ci* CaseDescription: 1. new ConsumerSurface, only one nullptr for consumer_ and producer_ 13032a6e48fSopenharmony_ci* 2. dtor and check ret 13132a6e48fSopenharmony_ci */ 13232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ConsumerSurfaceDtor001, Function | MediumTest | Level2) 13332a6e48fSopenharmony_ci{ 13432a6e48fSopenharmony_ci sptr<BufferQueue> queue = new BufferQueue("test", false); 13532a6e48fSopenharmony_ci surface_->producer_ = new BufferQueueProducer(queue); 13632a6e48fSopenharmony_ci ASSERT_NE(surface_->producer_, nullptr); 13732a6e48fSopenharmony_ci ASSERT_EQ(surface_->consumer_, nullptr); 13832a6e48fSopenharmony_ci} 13932a6e48fSopenharmony_ci 14032a6e48fSopenharmony_ci/* 14132a6e48fSopenharmony_ci* Function: ConsumerSurface dtor 14232a6e48fSopenharmony_ci* Type: Function 14332a6e48fSopenharmony_ci* Rank: Important(2) 14432a6e48fSopenharmony_ci* EnvConditions: N/A 14532a6e48fSopenharmony_ci* CaseDescription: 1. new ConsumerSurface, only one nullptr for consumer_ and producer_ 14632a6e48fSopenharmony_ci* 2. dtor and check ret 14732a6e48fSopenharmony_ci */ 14832a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ConsumerSurfaceDtor002, Function | MediumTest | Level2) 14932a6e48fSopenharmony_ci{ 15032a6e48fSopenharmony_ci sptr<BufferQueue> queue = new BufferQueue("test", false); 15132a6e48fSopenharmony_ci surface_->consumer_ = new BufferQueueConsumer(queue); 15232a6e48fSopenharmony_ci ASSERT_NE(surface_->consumer_, nullptr); 15332a6e48fSopenharmony_ci} 15432a6e48fSopenharmony_ci 15532a6e48fSopenharmony_ci/* 15632a6e48fSopenharmony_ci* Function: SetQueueSize and GetQueueSize 15732a6e48fSopenharmony_ci* Type: Function 15832a6e48fSopenharmony_ci* Rank: Important(2) 15932a6e48fSopenharmony_ci* EnvConditions: N/A 16032a6e48fSopenharmony_ci* CaseDescription: 1. call GetQueueSize and get default value 16132a6e48fSopenharmony_ci* 2. call SetQueueSize 16232a6e48fSopenharmony_ci* 3. call SetQueueSize again with abnormal value 16332a6e48fSopenharmony_ci* 4. call GetQueueSize for BufferQueueProducer and BufferQueue 16432a6e48fSopenharmony_ci* 5. check ret 16532a6e48fSopenharmony_ci */ 16632a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, QueueSize001, Function | MediumTest | Level2) 16732a6e48fSopenharmony_ci{ 16832a6e48fSopenharmony_ci ASSERT_EQ(cs->GetQueueSize(), (uint32_t)SURFACE_DEFAULT_QUEUE_SIZE); 16932a6e48fSopenharmony_ci GSError ret = cs->SetQueueSize(2); 17032a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 17132a6e48fSopenharmony_ci 17232a6e48fSopenharmony_ci ret = cs->SetQueueSize(SURFACE_MAX_QUEUE_SIZE + 1); 17332a6e48fSopenharmony_ci ASSERT_NE(ret, OHOS::GSERROR_OK); 17432a6e48fSopenharmony_ci 17532a6e48fSopenharmony_ci ASSERT_EQ(cs->GetQueueSize(), 2u); 17632a6e48fSopenharmony_ci} 17732a6e48fSopenharmony_ci 17832a6e48fSopenharmony_ci/* 17932a6e48fSopenharmony_ci* Function: SetQueueSize and GetQueueSize 18032a6e48fSopenharmony_ci* Type: Function 18132a6e48fSopenharmony_ci* Rank: Important(2) 18232a6e48fSopenharmony_ci* EnvConditions: N/A 18332a6e48fSopenharmony_ci* CaseDescription: 1. call GetQueueSize 18432a6e48fSopenharmony_ci* 2. call SetQueueSize 2 times 18532a6e48fSopenharmony_ci* 3. check ret 18632a6e48fSopenharmony_ci */ 18732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, QueueSize002, Function | MediumTest | Level2) 18832a6e48fSopenharmony_ci{ 18932a6e48fSopenharmony_ci sptr<ConsumerSurface> qs = static_cast<ConsumerSurface*>(cs.GetRefPtr()); 19032a6e48fSopenharmony_ci sptr<BufferQueueProducer> bqp = static_cast<BufferQueueProducer*>(qs->GetProducer().GetRefPtr()); 19132a6e48fSopenharmony_ci ASSERT_EQ(bqp->GetQueueSize(), 2u); 19232a6e48fSopenharmony_ci 19332a6e48fSopenharmony_ci GSError ret = cs->SetQueueSize(1); 19432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 19532a6e48fSopenharmony_ci 19632a6e48fSopenharmony_ci ret = cs->SetQueueSize(2); 19732a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 19832a6e48fSopenharmony_ci} 19932a6e48fSopenharmony_ci 20032a6e48fSopenharmony_ci/* 20132a6e48fSopenharmony_ci* Function: SetQueueSize and GetQueueSize 20232a6e48fSopenharmony_ci* Type: Function 20332a6e48fSopenharmony_ci* Rank: Important(2) 20432a6e48fSopenharmony_ci* EnvConditions: N/A 20532a6e48fSopenharmony_ci* CaseDescription: 1. call GetQueueSize with producer_ is nullptr 20632a6e48fSopenharmony_ci* 2. call SetQueueSize with producer_ is nullptr 20732a6e48fSopenharmony_ci* 3. check ret 20832a6e48fSopenharmony_ci */ 20932a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, QueueSize003, Function | MediumTest | Level2) 21032a6e48fSopenharmony_ci{ 21132a6e48fSopenharmony_ci uint32_t size = surface_->GetQueueSize(); 21232a6e48fSopenharmony_ci ASSERT_EQ(size, 0); 21332a6e48fSopenharmony_ci GSError ret = surface_->SetQueueSize(1); 21432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 21532a6e48fSopenharmony_ci} 21632a6e48fSopenharmony_ci 21732a6e48fSopenharmony_ci/* 21832a6e48fSopenharmony_ci* Function: SetDefaultWidthAndHeight, GetDefaultWidth and GetDefaultHeight 21932a6e48fSopenharmony_ci* Type: Function 22032a6e48fSopenharmony_ci* Rank: Important(2) 22132a6e48fSopenharmony_ci* EnvConditions: N/A 22232a6e48fSopenharmony_ci* CaseDescription: 1. call SetDefaultWidthAndHeight with consumer_ is nullptr 22332a6e48fSopenharmony_ci* 2. call GetDefaultWidth with producer_ is nullptr 22432a6e48fSopenharmony_ci* 3. call GetDefaultHeight with producer_ is nullptr 22532a6e48fSopenharmony_ci* 4. check ret 22632a6e48fSopenharmony_ci */ 22732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, DefaultWidthAndHeight001, Function | MediumTest | Level2) 22832a6e48fSopenharmony_ci{ 22932a6e48fSopenharmony_ci int32_t width = 0; 23032a6e48fSopenharmony_ci int32_t height = 0; 23132a6e48fSopenharmony_ci GSError ret = surface_->SetDefaultWidthAndHeight(width, height); 23232a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 23332a6e48fSopenharmony_ci width = surface_->GetDefaultWidth(); 23432a6e48fSopenharmony_ci ASSERT_EQ(width, -1); 23532a6e48fSopenharmony_ci height = surface_->GetDefaultHeight(); 23632a6e48fSopenharmony_ci ASSERT_EQ(height, -1); 23732a6e48fSopenharmony_ci} 23832a6e48fSopenharmony_ci 23932a6e48fSopenharmony_ci/* 24032a6e48fSopenharmony_ci* Function: SetDefaultWidthAndHeight, GetDefaultWidth and GetDefaultHeight 24132a6e48fSopenharmony_ci* Type: Function 24232a6e48fSopenharmony_ci* Rank: Important(2) 24332a6e48fSopenharmony_ci* EnvConditions: N/A 24432a6e48fSopenharmony_ci* CaseDescription: 1. call SetDefaultWidthAndHeight with noraml value 24532a6e48fSopenharmony_ci* 2. call GetDefaultWidth 24632a6e48fSopenharmony_ci* 3. call GetDefaultHeight 24732a6e48fSopenharmony_ci* 4. check ret 24832a6e48fSopenharmony_ci */ 24932a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, DefaultWidthAndHeight002, Function | MediumTest | Level2) 25032a6e48fSopenharmony_ci{ 25132a6e48fSopenharmony_ci ASSERT_NE(cs, nullptr); 25232a6e48fSopenharmony_ci int32_t width = 100; // 100 test value for width 25332a6e48fSopenharmony_ci int32_t height = 100; // 100 test value for height 25432a6e48fSopenharmony_ci GSError ret = cs->SetDefaultWidthAndHeight(width, height); 25532a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 25632a6e48fSopenharmony_ci int32_t value = cs->GetDefaultWidth(); 25732a6e48fSopenharmony_ci ASSERT_EQ(value, width); 25832a6e48fSopenharmony_ci value = cs->GetDefaultHeight(); 25932a6e48fSopenharmony_ci ASSERT_EQ(value, height); 26032a6e48fSopenharmony_ci} 26132a6e48fSopenharmony_ci 26232a6e48fSopenharmony_ci/* 26332a6e48fSopenharmony_ci* Function: SetDefaultUsage and GetDefaultUsage 26432a6e48fSopenharmony_ci* Type: Function 26532a6e48fSopenharmony_ci* Rank: Important(2) 26632a6e48fSopenharmony_ci* EnvConditions: N/A 26732a6e48fSopenharmony_ci* CaseDescription: 1. call SetDefaultUsage with consumer_ is nullptr 26832a6e48fSopenharmony_ci* 2. call GetDefaultUsage with producer_ is nullptr 26932a6e48fSopenharmony_ci* 3. check ret 27032a6e48fSopenharmony_ci */ 27132a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, DefaultUsage001, Function | MediumTest | Level2) 27232a6e48fSopenharmony_ci{ 27332a6e48fSopenharmony_ci GSError ret = surface_->SetDefaultUsage(0); 27432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 27532a6e48fSopenharmony_ci uint64_t value = surface_->GetDefaultUsage(); 27632a6e48fSopenharmony_ci ASSERT_EQ(value, 0); 27732a6e48fSopenharmony_ci} 27832a6e48fSopenharmony_ci 27932a6e48fSopenharmony_ci/* 28032a6e48fSopenharmony_ci* Function: SetDefaultUsage and GetDefaultUsage 28132a6e48fSopenharmony_ci* Type: Function 28232a6e48fSopenharmony_ci* Rank: Important(2) 28332a6e48fSopenharmony_ci* EnvConditions: N/A 28432a6e48fSopenharmony_ci* CaseDescription: 1. call GetDefaultUsage with normal 28532a6e48fSopenharmony_ci* 2. call SetDefaultUsage with normal 28632a6e48fSopenharmony_ci* 3. call GetDefaultUsage agagin 28732a6e48fSopenharmony_ci* 4. check ret 28832a6e48fSopenharmony_ci */ 28932a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, DefaultUsage002, Function | MediumTest | Level2) 29032a6e48fSopenharmony_ci{ 29132a6e48fSopenharmony_ci ASSERT_NE(cs, nullptr); 29232a6e48fSopenharmony_ci int32_t usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA; 29332a6e48fSopenharmony_ci uint32_t value = cs->GetDefaultUsage(); 29432a6e48fSopenharmony_ci ASSERT_EQ(value, 0); 29532a6e48fSopenharmony_ci GSError ret = cs->SetDefaultUsage(usage); 29632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 29732a6e48fSopenharmony_ci value = cs->GetDefaultUsage(); 29832a6e48fSopenharmony_ci ASSERT_EQ(value, usage); 29932a6e48fSopenharmony_ci} 30032a6e48fSopenharmony_ci 30132a6e48fSopenharmony_ci/* 30232a6e48fSopenharmony_ci* Function: AcquireBuffer 30332a6e48fSopenharmony_ci* Type: Function 30432a6e48fSopenharmony_ci* Rank: Important(2) 30532a6e48fSopenharmony_ci* EnvConditions: N/A 30632a6e48fSopenharmony_ci* CaseDescription: 1. call AcquireBuffer with consumer_ is nullptr 30732a6e48fSopenharmony_ci* 2. check ret 30832a6e48fSopenharmony_ci */ 30932a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, AcquireBuffer001, Function | MediumTest | Level2) 31032a6e48fSopenharmony_ci{ 31132a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer = SurfaceBuffer::Create(); 31232a6e48fSopenharmony_ci sptr<OHOS::SyncFence> fence; 31332a6e48fSopenharmony_ci GSError ret = surface_->AcquireBuffer(buffer, fence, timestamp, damage); 31432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 31532a6e48fSopenharmony_ci} 31632a6e48fSopenharmony_ci 31732a6e48fSopenharmony_ci/* 31832a6e48fSopenharmony_ci* Function: AcquireBuffer 31932a6e48fSopenharmony_ci* Type: Function 32032a6e48fSopenharmony_ci* Rank: Important(2) 32132a6e48fSopenharmony_ci* EnvConditions: N/A 32232a6e48fSopenharmony_ci* CaseDescription: 1. call AcquireBuffer with nullptr params 32332a6e48fSopenharmony_ci* 2. check ret 32432a6e48fSopenharmony_ci */ 32532a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, AcquireBuffer002, Function | MediumTest | Level2) 32632a6e48fSopenharmony_ci{ 32732a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer = nullptr; 32832a6e48fSopenharmony_ci sptr<OHOS::SyncFence> fence; 32932a6e48fSopenharmony_ci GSError ret = surface_->AcquireBuffer(buffer, fence, timestamp, damage); 33032a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 33132a6e48fSopenharmony_ci buffer = SurfaceBuffer::Create(); 33232a6e48fSopenharmony_ci fence = nullptr; 33332a6e48fSopenharmony_ci ret = surface_->AcquireBuffer(buffer, fence, timestamp, damage); 33432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 33532a6e48fSopenharmony_ci} 33632a6e48fSopenharmony_ci 33732a6e48fSopenharmony_ci/* 33832a6e48fSopenharmony_ci* Function: ReleaseBuffer 33932a6e48fSopenharmony_ci* Type: Function 34032a6e48fSopenharmony_ci* Rank: Important(2) 34132a6e48fSopenharmony_ci* EnvConditions: N/A 34232a6e48fSopenharmony_ci* CaseDescription: 1. call ReleaseBuffer with consumer_ is nullptr 34332a6e48fSopenharmony_ci* 2. check ret 34432a6e48fSopenharmony_ci */ 34532a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ReleaseBuffer001, Function | MediumTest | Level2) 34632a6e48fSopenharmony_ci{ 34732a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer = SurfaceBuffer::Create(); 34832a6e48fSopenharmony_ci sptr<OHOS::SyncFence> fence; 34932a6e48fSopenharmony_ci GSError ret = surface_->ReleaseBuffer(buffer, fence); 35032a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 35132a6e48fSopenharmony_ci} 35232a6e48fSopenharmony_ci 35332a6e48fSopenharmony_ci/* 35432a6e48fSopenharmony_ci* Function: ReleaseBuffer 35532a6e48fSopenharmony_ci* Type: Function 35632a6e48fSopenharmony_ci* Rank: Important(2) 35732a6e48fSopenharmony_ci* EnvConditions: N/A 35832a6e48fSopenharmony_ci* CaseDescription: 1. call ReleaseBuffer with nullptr params 35932a6e48fSopenharmony_ci* 2. check ret 36032a6e48fSopenharmony_ci */ 36132a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ReleaseBuffer002, Function | MediumTest | Level2) 36232a6e48fSopenharmony_ci{ 36332a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer = nullptr; 36432a6e48fSopenharmony_ci sptr<OHOS::SyncFence> fence; 36532a6e48fSopenharmony_ci GSError ret = surface_->ReleaseBuffer(buffer, fence); 36632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 36732a6e48fSopenharmony_ci} 36832a6e48fSopenharmony_ci 36932a6e48fSopenharmony_ci/* 37032a6e48fSopenharmony_ci* Function: DetachBuffer 37132a6e48fSopenharmony_ci* Type: Function 37232a6e48fSopenharmony_ci* Rank: Important(2) 37332a6e48fSopenharmony_ci* EnvConditions: N/A 37432a6e48fSopenharmony_ci* CaseDescription: 1. call DetachBuffer with consumer_ is nullptr 37532a6e48fSopenharmony_ci* 2. check ret 37632a6e48fSopenharmony_ci */ 37732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, DetachBuffer001, Function | MediumTest | Level2) 37832a6e48fSopenharmony_ci{ 37932a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 38032a6e48fSopenharmony_ci GSError ret = surface_->DetachBuffer(buffer); 38132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 38232a6e48fSopenharmony_ci} 38332a6e48fSopenharmony_ci 38432a6e48fSopenharmony_ci/* 38532a6e48fSopenharmony_ci* Function: DetachBuffer 38632a6e48fSopenharmony_ci* Type: Function 38732a6e48fSopenharmony_ci* Rank: Important(2) 38832a6e48fSopenharmony_ci* EnvConditions: N/A 38932a6e48fSopenharmony_ci* CaseDescription: 1. call DetachBuffer with nullptr params 39032a6e48fSopenharmony_ci* 2. check ret 39132a6e48fSopenharmony_ci */ 39232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, DetachBuffer002, Function | MediumTest | Level2) 39332a6e48fSopenharmony_ci{ 39432a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer = nullptr; 39532a6e48fSopenharmony_ci GSError ret = surface_->DetachBuffer(buffer); 39632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 39732a6e48fSopenharmony_ci} 39832a6e48fSopenharmony_ci 39932a6e48fSopenharmony_ci/* 40032a6e48fSopenharmony_ci* Function: QueryIfBufferAvailable 40132a6e48fSopenharmony_ci* Type: Function 40232a6e48fSopenharmony_ci* Rank: Important(2) 40332a6e48fSopenharmony_ci* EnvConditions: N/A 40432a6e48fSopenharmony_ci* CaseDescription: 1. call QueryIfBufferAvailable with consumer_ is nullptr 40532a6e48fSopenharmony_ci* 2. check ret 40632a6e48fSopenharmony_ci */ 40732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, QueryIfBufferAvailable001, Function | MediumTest | Level2) 40832a6e48fSopenharmony_ci{ 40932a6e48fSopenharmony_ci bool ret = surface_->QueryIfBufferAvailable(); 41032a6e48fSopenharmony_ci ASSERT_EQ(ret, false); 41132a6e48fSopenharmony_ci} 41232a6e48fSopenharmony_ci 41332a6e48fSopenharmony_ci/* 41432a6e48fSopenharmony_ci* Function: QueryIfBufferAvailable 41532a6e48fSopenharmony_ci* Type: Function 41632a6e48fSopenharmony_ci* Rank: Important(2) 41732a6e48fSopenharmony_ci* EnvConditions: N/A 41832a6e48fSopenharmony_ci* CaseDescription: 1. call QueryIfBufferAvailable with normal 41932a6e48fSopenharmony_ci* 2. check ret 42032a6e48fSopenharmony_ci */ 42132a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, QueryIfBufferAvailable002, Function | MediumTest | Level2) 42232a6e48fSopenharmony_ci{ 42332a6e48fSopenharmony_ci ASSERT_NE(cs, nullptr); 42432a6e48fSopenharmony_ci bool ret = cs->QueryIfBufferAvailable(); 42532a6e48fSopenharmony_ci ASSERT_EQ(ret, true); 42632a6e48fSopenharmony_ci} 42732a6e48fSopenharmony_ci 42832a6e48fSopenharmony_ci/* 42932a6e48fSopenharmony_ci* Function: RequestBuffer and FlushBuffer 43032a6e48fSopenharmony_ci* Type: Function 43132a6e48fSopenharmony_ci* Rank: Important(2) 43232a6e48fSopenharmony_ci* EnvConditions: N/A 43332a6e48fSopenharmony_ci* CaseDescription: 1. call RequestBuffer by cs and ps 43432a6e48fSopenharmony_ci* 2. call FlushBuffer both 43532a6e48fSopenharmony_ci* 3. check ret 43632a6e48fSopenharmony_ci */ 43732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel001, Function | MediumTest | Level2) 43832a6e48fSopenharmony_ci{ 43932a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 44032a6e48fSopenharmony_ci int releaseFence = -1; 44132a6e48fSopenharmony_ci 44232a6e48fSopenharmony_ci GSError ret = ps->RequestBuffer(buffer, releaseFence, requestConfig); 44332a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 44432a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 44532a6e48fSopenharmony_ci firstSeqnum = buffer->GetSeqNum(); 44632a6e48fSopenharmony_ci 44732a6e48fSopenharmony_ci ret = ps->FlushBuffer(buffer, -1, flushConfig); 44832a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 44932a6e48fSopenharmony_ci 45032a6e48fSopenharmony_ci ret = ps->RequestBuffer(buffer, releaseFence, requestConfig); 45132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 45232a6e48fSopenharmony_ci ret = ps->FlushBuffer(buffer, -1, flushConfig); 45332a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 45432a6e48fSopenharmony_ci} 45532a6e48fSopenharmony_ci 45632a6e48fSopenharmony_ci/* 45732a6e48fSopenharmony_ci* Function: AcquireBuffer and ReleaseBuffer 45832a6e48fSopenharmony_ci* Type: Function 45932a6e48fSopenharmony_ci* Rank: Important(2) 46032a6e48fSopenharmony_ci* EnvConditions: N/A 46132a6e48fSopenharmony_ci* CaseDescription: 1. call AcquireBuffer 46232a6e48fSopenharmony_ci* 2. call ReleaseBuffer 46332a6e48fSopenharmony_ci* 3. check ret 46432a6e48fSopenharmony_ci */ 46532a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel002, Function | MediumTest | Level2) 46632a6e48fSopenharmony_ci{ 46732a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 46832a6e48fSopenharmony_ci int32_t flushFence; 46932a6e48fSopenharmony_ci 47032a6e48fSopenharmony_ci GSError ret = cs->AcquireBuffer(buffer, flushFence, timestamp, damage); 47132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 47232a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 47332a6e48fSopenharmony_ci 47432a6e48fSopenharmony_ci ret = cs->ReleaseBuffer(buffer, -1); 47532a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 47632a6e48fSopenharmony_ci} 47732a6e48fSopenharmony_ci 47832a6e48fSopenharmony_ci/* 47932a6e48fSopenharmony_ci* Function: AcquireBuffer and ReleaseBuffer 48032a6e48fSopenharmony_ci* Type: Function 48132a6e48fSopenharmony_ci* Rank: Important(2) 48232a6e48fSopenharmony_ci* EnvConditions: N/A 48332a6e48fSopenharmony_ci* CaseDescription: 1. call AcquireBuffer 48432a6e48fSopenharmony_ci* 2. call ReleaseBuffer 2 times 48532a6e48fSopenharmony_ci* 3. check ret 48632a6e48fSopenharmony_ci */ 48732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel003, Function | MediumTest | Level2) 48832a6e48fSopenharmony_ci{ 48932a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 49032a6e48fSopenharmony_ci int32_t flushFence; 49132a6e48fSopenharmony_ci 49232a6e48fSopenharmony_ci GSError ret = cs->AcquireBuffer(buffer, flushFence, timestamp, damage); 49332a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 49432a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 49532a6e48fSopenharmony_ci 49632a6e48fSopenharmony_ci ret = cs->ReleaseBuffer(buffer, -1); 49732a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 49832a6e48fSopenharmony_ci 49932a6e48fSopenharmony_ci ret = cs->ReleaseBuffer(buffer, -1); 50032a6e48fSopenharmony_ci ASSERT_NE(ret, OHOS::GSERROR_OK); 50132a6e48fSopenharmony_ci} 50232a6e48fSopenharmony_ci 50332a6e48fSopenharmony_ci/* 50432a6e48fSopenharmony_ci* Function: RequestBuffer and CancelBuffer 50532a6e48fSopenharmony_ci* Type: Function 50632a6e48fSopenharmony_ci* Rank: Important(2) 50732a6e48fSopenharmony_ci* EnvConditions: N/A 50832a6e48fSopenharmony_ci* CaseDescription: 1. call RequestBuffer by cs and ps 50932a6e48fSopenharmony_ci* 2. call CancelBuffer both 51032a6e48fSopenharmony_ci* 3. check ret 51132a6e48fSopenharmony_ci */ 51232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel004, Function | MediumTest | Level2) 51332a6e48fSopenharmony_ci{ 51432a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 51532a6e48fSopenharmony_ci int releaseFence = -1; 51632a6e48fSopenharmony_ci 51732a6e48fSopenharmony_ci GSError ret = ps->RequestBuffer(buffer, releaseFence, requestConfig); 51832a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 51932a6e48fSopenharmony_ci 52032a6e48fSopenharmony_ci ret = ps->CancelBuffer(buffer); 52132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 52232a6e48fSopenharmony_ci} 52332a6e48fSopenharmony_ci 52432a6e48fSopenharmony_ci/* 52532a6e48fSopenharmony_ci* Function: SetUserData 52632a6e48fSopenharmony_ci* Type: Function 52732a6e48fSopenharmony_ci* Rank: Important(2) 52832a6e48fSopenharmony_ci* EnvConditions: N/A 52932a6e48fSopenharmony_ci* CaseDescription: 1. call SetUserData many times 53032a6e48fSopenharmony_ci* 2. check ret 53132a6e48fSopenharmony_ci */ 53232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, UserData001, Function | MediumTest | Level2) 53332a6e48fSopenharmony_ci{ 53432a6e48fSopenharmony_ci GSError ret; 53532a6e48fSopenharmony_ci 53632a6e48fSopenharmony_ci std::string strs[SURFACE_MAX_USER_DATA_COUNT]; 53732a6e48fSopenharmony_ci constexpr int32_t stringLengthMax = 32; 53832a6e48fSopenharmony_ci char str[stringLengthMax] = {}; 53932a6e48fSopenharmony_ci for (int i = 0; i < SURFACE_MAX_USER_DATA_COUNT; i++) { 54032a6e48fSopenharmony_ci auto secRet = snprintf_s(str, sizeof(str), sizeof(str) - 1, "%d", i); 54132a6e48fSopenharmony_ci ASSERT_GT(secRet, 0); 54232a6e48fSopenharmony_ci 54332a6e48fSopenharmony_ci strs[i] = str; 54432a6e48fSopenharmony_ci ret = cs->SetUserData(strs[i], "magic"); 54532a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 54632a6e48fSopenharmony_ci } 54732a6e48fSopenharmony_ci 54832a6e48fSopenharmony_ci ret = cs->SetUserData("-1", "error"); 54932a6e48fSopenharmony_ci ASSERT_NE(ret, OHOS::GSERROR_OK); 55032a6e48fSopenharmony_ci 55132a6e48fSopenharmony_ci std::string retStr; 55232a6e48fSopenharmony_ci for (int i = 0; i < SURFACE_MAX_USER_DATA_COUNT; i++) { 55332a6e48fSopenharmony_ci retStr = cs->GetUserData(strs[i]); 55432a6e48fSopenharmony_ci ASSERT_EQ(retStr, "magic"); 55532a6e48fSopenharmony_ci } 55632a6e48fSopenharmony_ci} 55732a6e48fSopenharmony_ci 55832a6e48fSopenharmony_ci/* 55932a6e48fSopenharmony_ci* Function: UserDataChangeListen 56032a6e48fSopenharmony_ci* Type: Function 56132a6e48fSopenharmony_ci* Rank: Important(2) 56232a6e48fSopenharmony_ci* EnvConditions: N/A 56332a6e48fSopenharmony_ci* CaseDescription: 1. RegisterUserDataChangeListen 56432a6e48fSopenharmony_ci* 2. SetUserData 56532a6e48fSopenharmony_ci* 3. check ret 56632a6e48fSopenharmony_ci */ 56732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, UserDataChangeListen001, Function | MediumTest | Level2) 56832a6e48fSopenharmony_ci{ 56932a6e48fSopenharmony_ci sptr<IConsumerSurface> csTestUserData = IConsumerSurface::Create(); 57032a6e48fSopenharmony_ci GSError ret1 = OHOS::GSERROR_INVALID_ARGUMENTS; 57132a6e48fSopenharmony_ci GSError ret2 = OHOS::GSERROR_INVALID_ARGUMENTS; 57232a6e48fSopenharmony_ci auto func1 = [&ret1](const std::string& key, const std::string& value) { 57332a6e48fSopenharmony_ci ret1 = OHOS::GSERROR_OK; 57432a6e48fSopenharmony_ci }; 57532a6e48fSopenharmony_ci auto func2 = [&ret2](const std::string& key, const std::string& value) { 57632a6e48fSopenharmony_ci ret2 = OHOS::GSERROR_OK; 57732a6e48fSopenharmony_ci }; 57832a6e48fSopenharmony_ci csTestUserData->RegisterUserDataChangeListener("func1", func1); 57932a6e48fSopenharmony_ci csTestUserData->RegisterUserDataChangeListener("func2", func2); 58032a6e48fSopenharmony_ci csTestUserData->RegisterUserDataChangeListener("func3", nullptr); 58132a6e48fSopenharmony_ci ASSERT_EQ(csTestUserData->RegisterUserDataChangeListener("func2", func2), OHOS::GSERROR_INVALID_ARGUMENTS); 58232a6e48fSopenharmony_ci 58332a6e48fSopenharmony_ci if (csTestUserData->SetUserData("Regist", "OK") == OHOS::GSERROR_OK) { 58432a6e48fSopenharmony_ci ASSERT_EQ(ret1, OHOS::GSERROR_OK); 58532a6e48fSopenharmony_ci ASSERT_EQ(ret2, OHOS::GSERROR_OK); 58632a6e48fSopenharmony_ci } 58732a6e48fSopenharmony_ci 58832a6e48fSopenharmony_ci ret1 = OHOS::GSERROR_INVALID_ARGUMENTS; 58932a6e48fSopenharmony_ci ret2 = OHOS::GSERROR_INVALID_ARGUMENTS; 59032a6e48fSopenharmony_ci csTestUserData->UnRegisterUserDataChangeListener("func1"); 59132a6e48fSopenharmony_ci ASSERT_EQ(csTestUserData->UnRegisterUserDataChangeListener("func1"), OHOS::GSERROR_INVALID_ARGUMENTS); 59232a6e48fSopenharmony_ci 59332a6e48fSopenharmony_ci if (csTestUserData->SetUserData("UnRegist", "INVALID") == OHOS::GSERROR_OK) { 59432a6e48fSopenharmony_ci ASSERT_EQ(ret1, OHOS::GSERROR_INVALID_ARGUMENTS); 59532a6e48fSopenharmony_ci ASSERT_EQ(ret2, OHOS::GSERROR_OK); 59632a6e48fSopenharmony_ci } 59732a6e48fSopenharmony_ci 59832a6e48fSopenharmony_ci ret1 = OHOS::GSERROR_INVALID_ARGUMENTS; 59932a6e48fSopenharmony_ci ret2 = OHOS::GSERROR_INVALID_ARGUMENTS; 60032a6e48fSopenharmony_ci csTestUserData->ClearUserDataChangeListener(); 60132a6e48fSopenharmony_ci csTestUserData->RegisterUserDataChangeListener("func1", func1); 60232a6e48fSopenharmony_ci if (csTestUserData->SetUserData("Clear", "OK") == OHOS::GSERROR_OK) { 60332a6e48fSopenharmony_ci ASSERT_EQ(ret1, OHOS::GSERROR_OK); 60432a6e48fSopenharmony_ci ASSERT_EQ(ret2, OHOS::GSERROR_INVALID_ARGUMENTS); 60532a6e48fSopenharmony_ci } 60632a6e48fSopenharmony_ci} 60732a6e48fSopenharmony_ci 60832a6e48fSopenharmony_ci/* 60932a6e48fSopenharmony_ci* Function: UserDataChangeListen 61032a6e48fSopenharmony_ci* Type: Function 61132a6e48fSopenharmony_ci* Rank: Important(2) 61232a6e48fSopenharmony_ci* EnvConditions: N/A 61332a6e48fSopenharmony_ci* CaseDescription: 1. RegisterUserDataChangeListen 61432a6e48fSopenharmony_ci* 2. SetUserData 61532a6e48fSopenharmony_ci* 3. check ret 61632a6e48fSopenharmony_ci */ 61732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, UserDataChangeListen002, Function | MediumTest | Level2) 61832a6e48fSopenharmony_ci{ 61932a6e48fSopenharmony_ci sptr<IConsumerSurface> csTestUserData = IConsumerSurface::Create(); 62032a6e48fSopenharmony_ci 62132a6e48fSopenharmony_ci auto func = [&csTestUserData](const std::string& FuncName) { 62232a6e48fSopenharmony_ci constexpr int32_t RegisterListenerNum = 1000; 62332a6e48fSopenharmony_ci std::vector<GSError> ret(RegisterListenerNum, OHOS::GSERROR_INVALID_ARGUMENTS); 62432a6e48fSopenharmony_ci std::string strs[RegisterListenerNum]; 62532a6e48fSopenharmony_ci constexpr int32_t stringLengthMax = 32; 62632a6e48fSopenharmony_ci char str[stringLengthMax] = {}; 62732a6e48fSopenharmony_ci for (int i = 0; i < RegisterListenerNum; i++) { 62832a6e48fSopenharmony_ci auto secRet = snprintf_s(str, sizeof(str), sizeof(str) - 1, "%s%d", FuncName.c_str(), i); 62932a6e48fSopenharmony_ci ASSERT_GT(secRet, 0); 63032a6e48fSopenharmony_ci strs[i] = str; 63132a6e48fSopenharmony_ci ASSERT_EQ(csTestUserData->RegisterUserDataChangeListener(strs[i], [i, &ret] 63232a6e48fSopenharmony_ci (const std::string& key, const std::string& value) { 63332a6e48fSopenharmony_ci ret[i] = OHOS::GSERROR_OK; 63432a6e48fSopenharmony_ci }), OHOS::GSERROR_OK); 63532a6e48fSopenharmony_ci } 63632a6e48fSopenharmony_ci 63732a6e48fSopenharmony_ci if (csTestUserData->SetUserData("Regist", FuncName) == OHOS::GSERROR_OK) { 63832a6e48fSopenharmony_ci for (int i = 0; i < RegisterListenerNum; i++) { 63932a6e48fSopenharmony_ci ASSERT_EQ(ret[i], OHOS::GSERROR_OK); 64032a6e48fSopenharmony_ci } 64132a6e48fSopenharmony_ci } 64232a6e48fSopenharmony_ci 64332a6e48fSopenharmony_ci for (int i = 0; i < RegisterListenerNum; i++) { 64432a6e48fSopenharmony_ci csTestUserData->UnRegisterUserDataChangeListener(strs[i]); 64532a6e48fSopenharmony_ci } 64632a6e48fSopenharmony_ci }; 64732a6e48fSopenharmony_ci 64832a6e48fSopenharmony_ci std::thread t1(func, "thread1"); 64932a6e48fSopenharmony_ci std::thread t2(func, "thread2"); 65032a6e48fSopenharmony_ci t1.join(); 65132a6e48fSopenharmony_ci t2.join(); 65232a6e48fSopenharmony_ci} 65332a6e48fSopenharmony_ci 65432a6e48fSopenharmony_ci/* 65532a6e48fSopenharmony_ci* Function: SetUserData 65632a6e48fSopenharmony_ci* Type: Function 65732a6e48fSopenharmony_ci* Rank: Important(2) 65832a6e48fSopenharmony_ci* EnvConditions: N/A 65932a6e48fSopenharmony_ci* CaseDescription: 1. call SetUserData many times 66032a6e48fSopenharmony_ci* 2. check ret 66132a6e48fSopenharmony_ci */ 66232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, RegisterConsumerListener001, Function | MediumTest | Level2) 66332a6e48fSopenharmony_ci{ 66432a6e48fSopenharmony_ci class TestConsumerListener : public IBufferConsumerListener { 66532a6e48fSopenharmony_ci public: 66632a6e48fSopenharmony_ci void OnBufferAvailable() override 66732a6e48fSopenharmony_ci { 66832a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 66932a6e48fSopenharmony_ci int32_t flushFence; 67032a6e48fSopenharmony_ci 67132a6e48fSopenharmony_ci cs->AcquireBuffer(buffer, flushFence, timestamp, damage); 67232a6e48fSopenharmony_ci int32_t *p = (int32_t*)buffer->GetVirAddr(); 67332a6e48fSopenharmony_ci if (p != nullptr) { 67432a6e48fSopenharmony_ci for (int32_t i = 0; i < 128; i++) { 67532a6e48fSopenharmony_ci ASSERT_EQ(p[i], i); 67632a6e48fSopenharmony_ci } 67732a6e48fSopenharmony_ci } 67832a6e48fSopenharmony_ci 67932a6e48fSopenharmony_ci cs->ReleaseBuffer(buffer, -1); 68032a6e48fSopenharmony_ci } 68132a6e48fSopenharmony_ci }; 68232a6e48fSopenharmony_ci 68332a6e48fSopenharmony_ci sptr<IBufferConsumerListener> listener = new TestConsumerListener(); 68432a6e48fSopenharmony_ci GSError ret = cs->RegisterConsumerListener(listener); 68532a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 68632a6e48fSopenharmony_ci 68732a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 68832a6e48fSopenharmony_ci int releaseFence = -1; 68932a6e48fSopenharmony_ci ret = ps->RequestBuffer(buffer, releaseFence, requestConfig); 69032a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 69132a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 69232a6e48fSopenharmony_ci 69332a6e48fSopenharmony_ci int32_t *p = (int32_t*)buffer->GetVirAddr(); 69432a6e48fSopenharmony_ci if (p != nullptr) { 69532a6e48fSopenharmony_ci for (int32_t i = 0; i < 128; i++) { 69632a6e48fSopenharmony_ci p[i] = i; 69732a6e48fSopenharmony_ci } 69832a6e48fSopenharmony_ci } 69932a6e48fSopenharmony_ci 70032a6e48fSopenharmony_ci GraphicTransformType tranformType = ps->GetTransform(); 70132a6e48fSopenharmony_ci ret = ps->FlushBuffer(buffer, -1, flushConfig); 70232a6e48fSopenharmony_ci ASSERT_EQ(ps->SetTransform(GraphicTransformType::GRAPHIC_ROTATE_180), OHOS::GSERROR_OK); 70332a6e48fSopenharmony_ci GraphicTransformType bufferTranformType = GraphicTransformType::GRAPHIC_ROTATE_NONE; 70432a6e48fSopenharmony_ci ASSERT_EQ(cs->GetSurfaceBufferTransformType(nullptr, &bufferTranformType), OHOS::SURFACE_ERROR_INVALID_PARAM); 70532a6e48fSopenharmony_ci ASSERT_EQ(cs->GetSurfaceBufferTransformType(buffer, nullptr), OHOS::SURFACE_ERROR_INVALID_PARAM); 70632a6e48fSopenharmony_ci ASSERT_EQ(cs->GetSurfaceBufferTransformType(buffer, &bufferTranformType), OHOS::GSERROR_OK); 70732a6e48fSopenharmony_ci ASSERT_EQ(bufferTranformType, tranformType); 70832a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 70932a6e48fSopenharmony_ci listener->OnTunnelHandleChange(); 71032a6e48fSopenharmony_ci listener->OnGoBackground(); 71132a6e48fSopenharmony_ci listener->OnCleanCache(); 71232a6e48fSopenharmony_ci listener->OnTransformChange(); 71332a6e48fSopenharmony_ci TestConsumerListenerClazz* listenerClazz = new TestConsumerListenerClazz(); 71432a6e48fSopenharmony_ci listenerClazz->OnTunnelHandleChange(); 71532a6e48fSopenharmony_ci listenerClazz->OnGoBackground(); 71632a6e48fSopenharmony_ci listenerClazz->OnCleanCache(); 71732a6e48fSopenharmony_ci listenerClazz->OnTransformChange(); 71832a6e48fSopenharmony_ci delete listenerClazz; 71932a6e48fSopenharmony_ci} 72032a6e48fSopenharmony_ci 72132a6e48fSopenharmony_ci/* 72232a6e48fSopenharmony_ci* Function: RegisterConsumerListener, RequestBuffer and FlushBuffer 72332a6e48fSopenharmony_ci* Type: Function 72432a6e48fSopenharmony_ci* Rank: Important(2) 72532a6e48fSopenharmony_ci* EnvConditions: N/A 72632a6e48fSopenharmony_ci* CaseDescription: 1. call RegisterConsumerListener 72732a6e48fSopenharmony_ci* 2. call RequestBuffer 72832a6e48fSopenharmony_ci* 3. call FlushBuffer 72932a6e48fSopenharmony_ci* 4. check ret 73032a6e48fSopenharmony_ci */ 73132a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, RegisterConsumerListener002, Function | MediumTest | Level2) 73232a6e48fSopenharmony_ci{ 73332a6e48fSopenharmony_ci sptr<IBufferConsumerListener> listener = new BufferConsumerListener(); 73432a6e48fSopenharmony_ci GSError ret = cs->RegisterConsumerListener(listener); 73532a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 73632a6e48fSopenharmony_ci 73732a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 73832a6e48fSopenharmony_ci int releaseFence = -1; 73932a6e48fSopenharmony_ci ret = ps->RequestBuffer(buffer, releaseFence, requestConfig); 74032a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 74132a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 74232a6e48fSopenharmony_ci 74332a6e48fSopenharmony_ci int32_t *p = (int32_t*)buffer->GetVirAddr(); 74432a6e48fSopenharmony_ci if (p != nullptr) { 74532a6e48fSopenharmony_ci for (int32_t i = 0; i < requestConfig.width * requestConfig.height; i++) { 74632a6e48fSopenharmony_ci p[i] = i; 74732a6e48fSopenharmony_ci } 74832a6e48fSopenharmony_ci } 74932a6e48fSopenharmony_ci ASSERT_EQ(ps->SetTransform(GraphicTransformType::GRAPHIC_ROTATE_90), OHOS::GSERROR_OK); 75032a6e48fSopenharmony_ci ret = ps->FlushBuffer(buffer, -1, flushConfig); 75132a6e48fSopenharmony_ci GraphicTransformType bufferTranformType = GraphicTransformType::GRAPHIC_ROTATE_NONE; 75232a6e48fSopenharmony_ci ASSERT_EQ(cs->GetSurfaceBufferTransformType(buffer, &bufferTranformType), OHOS::GSERROR_OK); 75332a6e48fSopenharmony_ci ASSERT_EQ(bufferTranformType, GraphicTransformType::GRAPHIC_ROTATE_90); 75432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 75532a6e48fSopenharmony_ci ASSERT_EQ(ps->SetTransform(GraphicTransformType::GRAPHIC_ROTATE_NONE), OHOS::GSERROR_OK); 75632a6e48fSopenharmony_ci sptr<OHOS::SyncFence> flushFence; 75732a6e48fSopenharmony_ci ret = cs->AcquireBuffer(buffer, flushFence, timestamp, damage); 75832a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 75932a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 76032a6e48fSopenharmony_ci bool isInCache = false; 76132a6e48fSopenharmony_ci ASSERT_EQ(cs->IsSurfaceBufferInCache(buffer->GetSeqNum(), isInCache), OHOS::GSERROR_OK); 76232a6e48fSopenharmony_ci ASSERT_EQ(isInCache, true); 76332a6e48fSopenharmony_ci ASSERT_EQ(cs->IsSurfaceBufferInCache(0xFFFFFFFF, isInCache), OHOS::GSERROR_OK); 76432a6e48fSopenharmony_ci ASSERT_EQ(isInCache, false); 76532a6e48fSopenharmony_ci} 76632a6e48fSopenharmony_ci 76732a6e48fSopenharmony_ci/* 76832a6e48fSopenharmony_ci* Function: RegisterConsumerListener 76932a6e48fSopenharmony_ci* Type: Function 77032a6e48fSopenharmony_ci* Rank: Important(2) 77132a6e48fSopenharmony_ci* EnvConditions: N/A 77232a6e48fSopenharmony_ci* CaseDescription: 1. call RegisterConsumerListener with nullptr params 77332a6e48fSopenharmony_ci* 2. check ret 77432a6e48fSopenharmony_ci */ 77532a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, RegisterConsumerListener003, Function | MediumTest | Level2) 77632a6e48fSopenharmony_ci{ 77732a6e48fSopenharmony_ci GSError ret = surface_->RegisterConsumerListener(nullptr); 77832a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 77932a6e48fSopenharmony_ci sptr<IBufferConsumerListener> listener = new BufferConsumerListener(); 78032a6e48fSopenharmony_ci ret = surface_->RegisterConsumerListener(listener); 78132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 78232a6e48fSopenharmony_ci} 78332a6e48fSopenharmony_ci 78432a6e48fSopenharmony_ci/* 78532a6e48fSopenharmony_ci* Function: RegisterConsumerListener 78632a6e48fSopenharmony_ci* Type: Function 78732a6e48fSopenharmony_ci* Rank: Important(2) 78832a6e48fSopenharmony_ci* EnvConditions: N/A 78932a6e48fSopenharmony_ci* CaseDescription: 1. call RegisterConsumerListener with nullptr params 79032a6e48fSopenharmony_ci* 2. check ret 79132a6e48fSopenharmony_ci */ 79232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, RegisterConsumerListener004, Function | MediumTest | Level2) 79332a6e48fSopenharmony_ci{ 79432a6e48fSopenharmony_ci GSError ret = surface_->RegisterConsumerListener(nullptr); 79532a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 79632a6e48fSopenharmony_ci TestConsumerListenerClazz* listenerClazz = new TestConsumerListenerClazz(); 79732a6e48fSopenharmony_ci ret = surface_->RegisterConsumerListener(listenerClazz); 79832a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 79932a6e48fSopenharmony_ci delete listenerClazz; 80032a6e48fSopenharmony_ci} 80132a6e48fSopenharmony_ci 80232a6e48fSopenharmony_ci/* 80332a6e48fSopenharmony_ci* Function: RegisterReleaseListener 80432a6e48fSopenharmony_ci* Type: Function 80532a6e48fSopenharmony_ci* Rank: Important(2) 80632a6e48fSopenharmony_ci* EnvConditions: N/A 80732a6e48fSopenharmony_ci* CaseDescription: 1. call RegisterReleaseListener with nullptr param 80832a6e48fSopenharmony_ci* 2. check ret 80932a6e48fSopenharmony_ci */ 81032a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, RegisterReleaseListener001, Function | MediumTest | Level2) 81132a6e48fSopenharmony_ci{ 81232a6e48fSopenharmony_ci OnReleaseFunc onBufferRelease = nullptr; 81332a6e48fSopenharmony_ci GSError ret = surface_->RegisterReleaseListener(onBufferRelease); 81432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 81532a6e48fSopenharmony_ci} 81632a6e48fSopenharmony_ci 81732a6e48fSopenharmony_ci/* 81832a6e48fSopenharmony_ci* Function: RegisterReleaseListener 81932a6e48fSopenharmony_ci* Type: Function 82032a6e48fSopenharmony_ci* Rank: Important(2) 82132a6e48fSopenharmony_ci* EnvConditions: N/A 82232a6e48fSopenharmony_ci* CaseDescription: 1. call RegisterReleaseListener with consumer_ is normal 82332a6e48fSopenharmony_ci* 2. check ret 82432a6e48fSopenharmony_ci */ 82532a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, RegisterReleaseListener002, Function | MediumTest | Level2) 82632a6e48fSopenharmony_ci{ 82732a6e48fSopenharmony_ci sptr<BufferQueue> queue = new BufferQueue("test", false); 82832a6e48fSopenharmony_ci surface_->consumer_ = new BufferQueueConsumer(queue); 82932a6e48fSopenharmony_ci ASSERT_NE(surface_->consumer_, nullptr); 83032a6e48fSopenharmony_ci OnReleaseFunc onBufferRelease = nullptr; 83132a6e48fSopenharmony_ci GSError ret = surface_->RegisterReleaseListener(onBufferRelease); 83232a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 83332a6e48fSopenharmony_ci} 83432a6e48fSopenharmony_ci 83532a6e48fSopenharmony_ci/* 83632a6e48fSopenharmony_ci* Function: RegisterReleaseListener 83732a6e48fSopenharmony_ci* Type: Function 83832a6e48fSopenharmony_ci* Rank: Important(2) 83932a6e48fSopenharmony_ci* EnvConditions: N/A 84032a6e48fSopenharmony_ci* CaseDescription: 1. call RegisterReleaseListener 84132a6e48fSopenharmony_ci* 2. check ret 84232a6e48fSopenharmony_ci */ 84332a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, RegisterReleaseListener003, Function | MediumTest | Level2) 84432a6e48fSopenharmony_ci{ 84532a6e48fSopenharmony_ci OnReleaseFuncWithFence func = nullptr; 84632a6e48fSopenharmony_ci GSError ret = surface_->RegisterReleaseListener(func); 84732a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_NOT_SUPPORT); 84832a6e48fSopenharmony_ci} 84932a6e48fSopenharmony_ci 85032a6e48fSopenharmony_ci/* 85132a6e48fSopenharmony_ci* Function: UnRegisterReleaseListener 85232a6e48fSopenharmony_ci* Type: Function 85332a6e48fSopenharmony_ci* Rank: Important(2) 85432a6e48fSopenharmony_ci* EnvConditions: N/A 85532a6e48fSopenharmony_ci* CaseDescription: 1. call UnRegisterReleaseListener 85632a6e48fSopenharmony_ci* 2. check ret 85732a6e48fSopenharmony_ci */ 85832a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, UnRegisterReleaseListener001, Function | MediumTest | Level2) 85932a6e48fSopenharmony_ci{ 86032a6e48fSopenharmony_ci GSError ret = surface_->UnRegisterReleaseListener(); 86132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 86232a6e48fSopenharmony_ci} 86332a6e48fSopenharmony_ci 86432a6e48fSopenharmony_ci/* 86532a6e48fSopenharmony_ci* Function: RegisterDeleteBufferListener 86632a6e48fSopenharmony_ci* Type: Function 86732a6e48fSopenharmony_ci* Rank: Important(2) 86832a6e48fSopenharmony_ci* EnvConditions: N/A 86932a6e48fSopenharmony_ci* CaseDescription: 1. call RegisterDeleteBufferListener with consumer_ is nullptr 87032a6e48fSopenharmony_ci* 2. check ret 87132a6e48fSopenharmony_ci */ 87232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, RegisterDeleteBufferListener001, Function | MediumTest | Level2) 87332a6e48fSopenharmony_ci{ 87432a6e48fSopenharmony_ci OnDeleteBufferFunc func = nullptr; 87532a6e48fSopenharmony_ci GSError ret = surface_->RegisterDeleteBufferListener(func, false); 87632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 87732a6e48fSopenharmony_ci} 87832a6e48fSopenharmony_ci 87932a6e48fSopenharmony_ci/* 88032a6e48fSopenharmony_ci* Function: RegisterDeleteBufferListener 88132a6e48fSopenharmony_ci* Type: Function 88232a6e48fSopenharmony_ci* Rank: Important(2) 88332a6e48fSopenharmony_ci* EnvConditions: N/A 88432a6e48fSopenharmony_ci* CaseDescription: 1. call RegisterDeleteBufferListener with consumer_ is normal 88532a6e48fSopenharmony_ci* 2. check ret 88632a6e48fSopenharmony_ci */ 88732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, RegisterDeleteBufferListener002, Function | MediumTest | Level2) 88832a6e48fSopenharmony_ci{ 88932a6e48fSopenharmony_ci sptr<BufferQueue> queue = new BufferQueue("test", false); 89032a6e48fSopenharmony_ci surface_->consumer_ = new BufferQueueConsumer(queue); 89132a6e48fSopenharmony_ci ASSERT_NE(surface_->consumer_, nullptr); 89232a6e48fSopenharmony_ci OnDeleteBufferFunc func = nullptr; 89332a6e48fSopenharmony_ci GSError ret = surface_->RegisterDeleteBufferListener(func, false); 89432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 89532a6e48fSopenharmony_ci ret = surface_->RegisterDeleteBufferListener(func, true); 89632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 89732a6e48fSopenharmony_ci} 89832a6e48fSopenharmony_ci 89932a6e48fSopenharmony_ci/* 90032a6e48fSopenharmony_ci* Function: UnregisterConsumerListener 90132a6e48fSopenharmony_ci* Type: Function 90232a6e48fSopenharmony_ci* Rank: Important(2) 90332a6e48fSopenharmony_ci* EnvConditions: N/A 90432a6e48fSopenharmony_ci* CaseDescription: 1. call UnregisterConsumerListener with consumer_ is nullptr 90532a6e48fSopenharmony_ci* 2. check ret 90632a6e48fSopenharmony_ci */ 90732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, UnregisterConsumerListener001, Function | MediumTest | Level2) 90832a6e48fSopenharmony_ci{ 90932a6e48fSopenharmony_ci GSError ret = surface_->UnregisterConsumerListener(); 91032a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 91132a6e48fSopenharmony_ci} 91232a6e48fSopenharmony_ci 91332a6e48fSopenharmony_ci/* 91432a6e48fSopenharmony_ci* Function: UnregisterConsumerListener 91532a6e48fSopenharmony_ci* Type: Function 91632a6e48fSopenharmony_ci* Rank: Important(2) 91732a6e48fSopenharmony_ci* EnvConditions: N/A 91832a6e48fSopenharmony_ci* CaseDescription: 1. call UnregisterConsumerListener with consumer_ is normal 91932a6e48fSopenharmony_ci* 2. check ret 92032a6e48fSopenharmony_ci */ 92132a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, UnregisterConsumerListener002, Function | MediumTest | Level2) 92232a6e48fSopenharmony_ci{ 92332a6e48fSopenharmony_ci sptr<BufferQueue> queue = new BufferQueue("test", false); 92432a6e48fSopenharmony_ci surface_->consumer_ = new BufferQueueConsumer(queue); 92532a6e48fSopenharmony_ci ASSERT_NE(surface_->consumer_, nullptr); 92632a6e48fSopenharmony_ci GSError ret = surface_->UnregisterConsumerListener(); 92732a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 92832a6e48fSopenharmony_ci} 92932a6e48fSopenharmony_ci 93032a6e48fSopenharmony_ci/* 93132a6e48fSopenharmony_ci* Function: RegisterUserDataChangeListener 93232a6e48fSopenharmony_ci* Type: Function 93332a6e48fSopenharmony_ci* Rank: Important(2) 93432a6e48fSopenharmony_ci* EnvConditions: N/A 93532a6e48fSopenharmony_ci* CaseDescription: 1. call RegisterUserDataChangeListener with nullptr param 93632a6e48fSopenharmony_ci* 2. check ret 93732a6e48fSopenharmony_ci */ 93832a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, RegisterUserDataChangeListener001, Function | MediumTest | Level2) 93932a6e48fSopenharmony_ci{ 94032a6e48fSopenharmony_ci GSError ret = surface_->RegisterUserDataChangeListener("test", nullptr); 94132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 94232a6e48fSopenharmony_ci} 94332a6e48fSopenharmony_ci 94432a6e48fSopenharmony_ci/* 94532a6e48fSopenharmony_ci* Function: GoBackground 94632a6e48fSopenharmony_ci* Type: Function 94732a6e48fSopenharmony_ci* Rank: Important(2) 94832a6e48fSopenharmony_ci* EnvConditions: N/A 94932a6e48fSopenharmony_ci* CaseDescription: 1. call GoBackground with consumer_ is nullptr 95032a6e48fSopenharmony_ci* 2. check ret 95132a6e48fSopenharmony_ci */ 95232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, GoBackground001, Function | MediumTest | Level2) 95332a6e48fSopenharmony_ci{ 95432a6e48fSopenharmony_ci GSError ret = surface_->GoBackground(); 95532a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 95632a6e48fSopenharmony_ci} 95732a6e48fSopenharmony_ci 95832a6e48fSopenharmony_ci/* 95932a6e48fSopenharmony_ci* Function: GoBackground 96032a6e48fSopenharmony_ci* Type: Function 96132a6e48fSopenharmony_ci* Rank: Important(2) 96232a6e48fSopenharmony_ci* EnvConditions: N/A 96332a6e48fSopenharmony_ci* CaseDescription: 1. call GoBackground with consumer_ is normal 96432a6e48fSopenharmony_ci* 2. check ret 96532a6e48fSopenharmony_ci */ 96632a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, GoBackground002, Function | MediumTest | Level2) 96732a6e48fSopenharmony_ci{ 96832a6e48fSopenharmony_ci sptr<BufferQueue> queue = new BufferQueue("test", false); 96932a6e48fSopenharmony_ci surface_->consumer_ = new BufferQueueConsumer(queue); 97032a6e48fSopenharmony_ci ASSERT_NE(surface_->consumer_, nullptr); 97132a6e48fSopenharmony_ci GSError ret = surface_->GoBackground(); 97232a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 97332a6e48fSopenharmony_ci surface_->producer_ = new BufferQueueProducer(queue); 97432a6e48fSopenharmony_ci ASSERT_NE(surface_->producer_, nullptr); 97532a6e48fSopenharmony_ci ret = surface_->GoBackground(); 97632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 97732a6e48fSopenharmony_ci} 97832a6e48fSopenharmony_ci 97932a6e48fSopenharmony_ci/* 98032a6e48fSopenharmony_ci* Function: GetUniqueId 98132a6e48fSopenharmony_ci* Type: Function 98232a6e48fSopenharmony_ci* Rank: Important(2) 98332a6e48fSopenharmony_ci* EnvConditions: N/A 98432a6e48fSopenharmony_ci* CaseDescription: 1. call GetUniqueId with producer_ is nullptr 98532a6e48fSopenharmony_ci* 2. check ret 98632a6e48fSopenharmony_ci */ 98732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, GetUniqueId001, Function | MediumTest | Level2) 98832a6e48fSopenharmony_ci{ 98932a6e48fSopenharmony_ci uint64_t ret = surface_->GetUniqueId(); 99032a6e48fSopenharmony_ci ASSERT_EQ(ret, 0); 99132a6e48fSopenharmony_ci} 99232a6e48fSopenharmony_ci 99332a6e48fSopenharmony_ci/* 99432a6e48fSopenharmony_ci* Function: Dump 99532a6e48fSopenharmony_ci* Type: Function 99632a6e48fSopenharmony_ci* Rank: Important(2) 99732a6e48fSopenharmony_ci* EnvConditions: N/A 99832a6e48fSopenharmony_ci* CaseDescription: 1. call Dump 99932a6e48fSopenharmony_ci* 2. check ret 100032a6e48fSopenharmony_ci */ 100132a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, Dump001, Function | MediumTest | Level2) 100232a6e48fSopenharmony_ci{ 100332a6e48fSopenharmony_ci std::string result; 100432a6e48fSopenharmony_ci surface_->Dump(result); 100532a6e48fSopenharmony_ci sptr<BufferQueue> queue = new BufferQueue("test", false); 100632a6e48fSopenharmony_ci surface_->consumer_ = new BufferQueueConsumer(queue); 100732a6e48fSopenharmony_ci ASSERT_NE(surface_->consumer_, nullptr); 100832a6e48fSopenharmony_ci surface_->Dump(result); 100932a6e48fSopenharmony_ci} 101032a6e48fSopenharmony_ci 101132a6e48fSopenharmony_ci/* 101232a6e48fSopenharmony_ci* Function: SetTransform and GetTransform 101332a6e48fSopenharmony_ci* Type: Function 101432a6e48fSopenharmony_ci* Rank: Important(2) 101532a6e48fSopenharmony_ci* EnvConditions: N/A 101632a6e48fSopenharmony_ci* CaseDescription: 1. call GetTransform by default 101732a6e48fSopenharmony_ci */ 101832a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, transform001, Function | MediumTest | Level2) 101932a6e48fSopenharmony_ci{ 102032a6e48fSopenharmony_ci ASSERT_EQ(cs->GetTransform(), GraphicTransformType::GRAPHIC_ROTATE_NONE); 102132a6e48fSopenharmony_ci} 102232a6e48fSopenharmony_ci 102332a6e48fSopenharmony_ci/* 102432a6e48fSopenharmony_ci* Function: SetTransform and GetTransform 102532a6e48fSopenharmony_ci* Type: Function 102632a6e48fSopenharmony_ci* Rank: Important(1) 102732a6e48fSopenharmony_ci* EnvConditions: N/A 102832a6e48fSopenharmony_ci* CaseDescription: 1. call SetTransform with different paramaters and call GetTransform 102932a6e48fSopenharmony_ci* 2. check ret 103032a6e48fSopenharmony_ci */ 103132a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, transform002, Function | MediumTest | Level1) 103232a6e48fSopenharmony_ci{ 103332a6e48fSopenharmony_ci GraphicTransformType transform = GraphicTransformType::GRAPHIC_ROTATE_90; 103432a6e48fSopenharmony_ci GSError ret = ps->SetTransform(transform); 103532a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 103632a6e48fSopenharmony_ci ASSERT_EQ(cs->GetTransform(), GraphicTransformType::GRAPHIC_ROTATE_90); 103732a6e48fSopenharmony_ci} 103832a6e48fSopenharmony_ci 103932a6e48fSopenharmony_ci/* 104032a6e48fSopenharmony_ci* Function: SetTransform and GetTransform 104132a6e48fSopenharmony_ci* Type: Function 104232a6e48fSopenharmony_ci* Rank: Important(1) 104332a6e48fSopenharmony_ci* EnvConditions: N/A 104432a6e48fSopenharmony_ci* CaseDescription: 1. call SetTransform with different paramaters and call GetTransform 104532a6e48fSopenharmony_ci* 2. check ret 104632a6e48fSopenharmony_ci */ 104732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, transform003, Function | MediumTest | Level1) 104832a6e48fSopenharmony_ci{ 104932a6e48fSopenharmony_ci GraphicTransformType transform = GraphicTransformType::GRAPHIC_ROTATE_180; 105032a6e48fSopenharmony_ci GSError ret = ps->SetTransform(transform); 105132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 105232a6e48fSopenharmony_ci ASSERT_EQ(cs->GetTransform(), GraphicTransformType::GRAPHIC_ROTATE_180); 105332a6e48fSopenharmony_ci} 105432a6e48fSopenharmony_ci 105532a6e48fSopenharmony_ci/* 105632a6e48fSopenharmony_ci* Function: SetTransform and GetTransform 105732a6e48fSopenharmony_ci* Type: Function 105832a6e48fSopenharmony_ci* Rank: Important(1) 105932a6e48fSopenharmony_ci* EnvConditions: N/A 106032a6e48fSopenharmony_ci* CaseDescription: 1. call SetTransform with different paramaters and call GetTransform 106132a6e48fSopenharmony_ci* 2. check ret 106232a6e48fSopenharmony_ci */ 106332a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, transform004, Function | MediumTest | Level1) 106432a6e48fSopenharmony_ci{ 106532a6e48fSopenharmony_ci GraphicTransformType transform = GraphicTransformType::GRAPHIC_ROTATE_270; 106632a6e48fSopenharmony_ci GSError ret = ps->SetTransform(transform); 106732a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 106832a6e48fSopenharmony_ci ASSERT_EQ(cs->GetTransform(), GraphicTransformType::GRAPHIC_ROTATE_270); 106932a6e48fSopenharmony_ci} 107032a6e48fSopenharmony_ci 107132a6e48fSopenharmony_ci/* 107232a6e48fSopenharmony_ci* Function: SetTransform and GetTransform 107332a6e48fSopenharmony_ci* Type: Function 107432a6e48fSopenharmony_ci* Rank: Important(1) 107532a6e48fSopenharmony_ci* EnvConditions: N/A 107632a6e48fSopenharmony_ci* CaseDescription: 1. call SetTransform with different paramaters and call GetTransform 107732a6e48fSopenharmony_ci* 2. check ret 107832a6e48fSopenharmony_ci */ 107932a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, transform005, Function | MediumTest | Level1) 108032a6e48fSopenharmony_ci{ 108132a6e48fSopenharmony_ci GraphicTransformType transform = GraphicTransformType::GRAPHIC_ROTATE_NONE; 108232a6e48fSopenharmony_ci GSError ret = ps->SetTransform(transform); 108332a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 108432a6e48fSopenharmony_ci ASSERT_EQ(cs->GetTransform(), GraphicTransformType::GRAPHIC_ROTATE_NONE); 108532a6e48fSopenharmony_ci} 108632a6e48fSopenharmony_ci 108732a6e48fSopenharmony_ci/* 108832a6e48fSopenharmony_ci* Function: SetTransform and GetTransform 108932a6e48fSopenharmony_ci* Type: Function 109032a6e48fSopenharmony_ci* Rank: Important(1) 109132a6e48fSopenharmony_ci* EnvConditions: N/A 109232a6e48fSopenharmony_ci* CaseDescription: 1. call SetTransform GetTransform with nullptr 109332a6e48fSopenharmony_ci* 2. check ret 109432a6e48fSopenharmony_ci */ 109532a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, transform006, Function | MediumTest | Level1) 109632a6e48fSopenharmony_ci{ 109732a6e48fSopenharmony_ci GraphicTransformType transform = GraphicTransformType::GRAPHIC_ROTATE_NONE; 109832a6e48fSopenharmony_ci GSError ret = surface_->SetTransform(transform); 109932a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 110032a6e48fSopenharmony_ci ASSERT_EQ(surface_->GetTransform(), GraphicTransformType::GRAPHIC_ROTATE_BUTT); 110132a6e48fSopenharmony_ci} 110232a6e48fSopenharmony_ci 110332a6e48fSopenharmony_ci/* 110432a6e48fSopenharmony_ci* Function: SetScalingMode and GetScalingMode 110532a6e48fSopenharmony_ci* Type: Function 110632a6e48fSopenharmony_ci* Rank: Important(2) 110732a6e48fSopenharmony_ci* EnvConditions: N/A 110832a6e48fSopenharmony_ci* CaseDescription: 1. call SetScalingMode with abnormal parameters and check ret 110932a6e48fSopenharmony_ci */ 111032a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, scalingMode001, Function | MediumTest | Level2) 111132a6e48fSopenharmony_ci{ 111232a6e48fSopenharmony_ci ScalingMode scalingMode = ScalingMode::SCALING_MODE_SCALE_TO_WINDOW; 111332a6e48fSopenharmony_ci GSError ret = cs->SetScalingMode(-1, scalingMode); 111432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_NO_ENTRY); 111532a6e48fSopenharmony_ci ret = cs->GetScalingMode(-1, scalingMode); 111632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_NO_ENTRY); 111732a6e48fSopenharmony_ci} 111832a6e48fSopenharmony_ci 111932a6e48fSopenharmony_ci/* 112032a6e48fSopenharmony_ci* Function: SetScalingMode and GetScalingMode 112132a6e48fSopenharmony_ci* Type: Function 112232a6e48fSopenharmony_ci* Rank: Important(1) 112332a6e48fSopenharmony_ci* EnvConditions: N/A 112432a6e48fSopenharmony_ci* CaseDescription: 1. call SetScalingMode with normal parameters and check ret 112532a6e48fSopenharmony_ci* 2. call GetScalingMode and check ret 112632a6e48fSopenharmony_ci */ 112732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, scalingMode002, Function | MediumTest | Level1) 112832a6e48fSopenharmony_ci{ 112932a6e48fSopenharmony_ci ScalingMode scalingMode = ScalingMode::SCALING_MODE_SCALE_TO_WINDOW; 113032a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 113132a6e48fSopenharmony_ci int releaseFence = -1; 113232a6e48fSopenharmony_ci GSError ret = ps->RequestBuffer(buffer, releaseFence, requestConfig); 113332a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 113432a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 113532a6e48fSopenharmony_ci 113632a6e48fSopenharmony_ci uint32_t sequence = buffer->GetSeqNum(); 113732a6e48fSopenharmony_ci ret = cs->SetScalingMode(sequence, scalingMode); 113832a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 113932a6e48fSopenharmony_ci 114032a6e48fSopenharmony_ci ScalingMode scalingModeGet = ScalingMode::SCALING_MODE_FREEZE; 114132a6e48fSopenharmony_ci ret = cs->GetScalingMode(sequence, scalingModeGet); 114232a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 114332a6e48fSopenharmony_ci ASSERT_EQ(scalingMode, scalingModeGet); 114432a6e48fSopenharmony_ci 114532a6e48fSopenharmony_ci ret = ps->CancelBuffer(buffer); 114632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 114732a6e48fSopenharmony_ci} 114832a6e48fSopenharmony_ci 114932a6e48fSopenharmony_ci/* 115032a6e48fSopenharmony_ci* Function: SetScalingMode003 115132a6e48fSopenharmony_ci* Type: Function 115232a6e48fSopenharmony_ci* Rank: Important(2) 115332a6e48fSopenharmony_ci* EnvConditions: N/A 115432a6e48fSopenharmony_ci* CaseDescription: 1. call SetScalingMode with abnormal parameters and check ret 115532a6e48fSopenharmony_ci */ 115632a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, scalingMode003, Function | MediumTest | Level2) 115732a6e48fSopenharmony_ci{ 115832a6e48fSopenharmony_ci ScalingMode scalingMode = ScalingMode::SCALING_MODE_SCALE_TO_WINDOW; 115932a6e48fSopenharmony_ci GSError ret = cs->SetScalingMode(scalingMode); 116032a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 116132a6e48fSopenharmony_ci} 116232a6e48fSopenharmony_ci 116332a6e48fSopenharmony_ci/* 116432a6e48fSopenharmony_ci* Function: SetScalingMode and GetScalingMode 116532a6e48fSopenharmony_ci* Type: Function 116632a6e48fSopenharmony_ci* Rank: Important(1) 116732a6e48fSopenharmony_ci* EnvConditions: N/A 116832a6e48fSopenharmony_ci* CaseDescription: 1. call SetScalingMode with nullptr and check ret 116932a6e48fSopenharmony_ci* 2. call GetScalingMode with nullptr and check ret 117032a6e48fSopenharmony_ci */ 117132a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, scalingMode004, Function | MediumTest | Level1) 117232a6e48fSopenharmony_ci{ 117332a6e48fSopenharmony_ci ScalingMode scalingMode = ScalingMode::SCALING_MODE_SCALE_TO_WINDOW; 117432a6e48fSopenharmony_ci GSError ret = surface_->SetScalingMode(firstSeqnum, scalingMode); 117532a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 117632a6e48fSopenharmony_ci ret = surface_->SetScalingMode(scalingMode); 117732a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 117832a6e48fSopenharmony_ci ret = surface_->GetScalingMode(firstSeqnum, scalingMode); 117932a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 118032a6e48fSopenharmony_ci} 118132a6e48fSopenharmony_ci 118232a6e48fSopenharmony_ci/* 118332a6e48fSopenharmony_ci* Function: QueryMetaDataType 118432a6e48fSopenharmony_ci* Type: Function 118532a6e48fSopenharmony_ci* Rank: Important(1) 118632a6e48fSopenharmony_ci* EnvConditions: N/A 118732a6e48fSopenharmony_ci* CaseDescription: 1. call QueryMetaDataType and check ret 118832a6e48fSopenharmony_ci */ 118932a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, QueryMetaDataType001, Function | MediumTest | Level1) 119032a6e48fSopenharmony_ci{ 119132a6e48fSopenharmony_ci HDRMetaDataType type = HDRMetaDataType::HDR_META_DATA; 119232a6e48fSopenharmony_ci GSError ret = cs->QueryMetaDataType(firstSeqnum, type); 119332a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 119432a6e48fSopenharmony_ci ASSERT_EQ(type, HDRMetaDataType::HDR_NOT_USED); 119532a6e48fSopenharmony_ci} 119632a6e48fSopenharmony_ci 119732a6e48fSopenharmony_ci/* 119832a6e48fSopenharmony_ci* Function: QueryMetaDataType 119932a6e48fSopenharmony_ci* Type: Function 120032a6e48fSopenharmony_ci* Rank: Important(1) 120132a6e48fSopenharmony_ci* EnvConditions: N/A 120232a6e48fSopenharmony_ci* CaseDescription: 1. call SetMetaData with normal parameters and check ret 120332a6e48fSopenharmony_ci* 2. call QueryMetaDataType and check ret 120432a6e48fSopenharmony_ci */ 120532a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, QueryMetaDataType002, Function | MediumTest | Level1) 120632a6e48fSopenharmony_ci{ 120732a6e48fSopenharmony_ci std::vector<GraphicHDRMetaData> metaData; 120832a6e48fSopenharmony_ci GraphicHDRMetaData data = { 120932a6e48fSopenharmony_ci .key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_RED_PRIMARY_X, 121032a6e48fSopenharmony_ci .value = 1, 121132a6e48fSopenharmony_ci }; 121232a6e48fSopenharmony_ci metaData.push_back(data); 121332a6e48fSopenharmony_ci GSError ret = cs->SetMetaData(firstSeqnum, metaData); 121432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 121532a6e48fSopenharmony_ci 121632a6e48fSopenharmony_ci HDRMetaDataType type = HDRMetaDataType::HDR_NOT_USED; 121732a6e48fSopenharmony_ci ret = cs->QueryMetaDataType(firstSeqnum, type); 121832a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 121932a6e48fSopenharmony_ci ASSERT_EQ(type, HDRMetaDataType::HDR_META_DATA); 122032a6e48fSopenharmony_ci} 122132a6e48fSopenharmony_ci 122232a6e48fSopenharmony_ci/* 122332a6e48fSopenharmony_ci* Function: QueryMetaDataType 122432a6e48fSopenharmony_ci* Type: Function 122532a6e48fSopenharmony_ci* Rank: Important(1) 122632a6e48fSopenharmony_ci* EnvConditions: N/A 122732a6e48fSopenharmony_ci* CaseDescription: 1. call SetMetaDataSet with normal parameters and check ret 122832a6e48fSopenharmony_ci* 2. call QueryMetaDataType and check ret 122932a6e48fSopenharmony_ci */ 123032a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, QueryMetaDataType003, Function | MediumTest | Level1) 123132a6e48fSopenharmony_ci{ 123232a6e48fSopenharmony_ci GraphicHDRMetadataKey key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_HDR10_PLUS; 123332a6e48fSopenharmony_ci std::vector<uint8_t> metaData; 123432a6e48fSopenharmony_ci uint8_t data = 1; 123532a6e48fSopenharmony_ci metaData.push_back(data); 123632a6e48fSopenharmony_ci GSError ret = cs->SetMetaDataSet(firstSeqnum, key, metaData); 123732a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 123832a6e48fSopenharmony_ci 123932a6e48fSopenharmony_ci HDRMetaDataType type = HDRMetaDataType::HDR_NOT_USED; 124032a6e48fSopenharmony_ci ret = cs->QueryMetaDataType(firstSeqnum, type); 124132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 124232a6e48fSopenharmony_ci ASSERT_EQ(type, HDRMetaDataType::HDR_META_DATA_SET); 124332a6e48fSopenharmony_ci} 124432a6e48fSopenharmony_ci 124532a6e48fSopenharmony_ci/* 124632a6e48fSopenharmony_ci* Function: QueryMetaDataType 124732a6e48fSopenharmony_ci* Type: Function 124832a6e48fSopenharmony_ci* Rank: Important(1) 124932a6e48fSopenharmony_ci* EnvConditions: N/A 125032a6e48fSopenharmony_ci* CaseDescription: 1. call QueryMetaDataType with nullptr and check ret 125132a6e48fSopenharmony_ci */ 125232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, QueryMetaDataType004, Function | MediumTest | Level1) 125332a6e48fSopenharmony_ci{ 125432a6e48fSopenharmony_ci HDRMetaDataType type = HDRMetaDataType::HDR_META_DATA; 125532a6e48fSopenharmony_ci GSError ret = surface_->QueryMetaDataType(firstSeqnum, type); 125632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 125732a6e48fSopenharmony_ci} 125832a6e48fSopenharmony_ci 125932a6e48fSopenharmony_ci/* 126032a6e48fSopenharmony_ci* Function: SetMetaData and GetMetaData 126132a6e48fSopenharmony_ci* Type: Function 126232a6e48fSopenharmony_ci* Rank: Important(2) 126332a6e48fSopenharmony_ci* EnvConditions: N/A 126432a6e48fSopenharmony_ci* CaseDescription: 1. call SetMetaData with abnormal parameters and check ret 126532a6e48fSopenharmony_ci */ 126632a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, metaData001, Function | MediumTest | Level2) 126732a6e48fSopenharmony_ci{ 126832a6e48fSopenharmony_ci std::vector<GraphicHDRMetaData> metaData; 126932a6e48fSopenharmony_ci GSError ret = cs->SetMetaData(firstSeqnum, metaData); 127032a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 127132a6e48fSopenharmony_ci} 127232a6e48fSopenharmony_ci 127332a6e48fSopenharmony_ci/* 127432a6e48fSopenharmony_ci* Function: SetMetaData and GetMetaData 127532a6e48fSopenharmony_ci* Type: Function 127632a6e48fSopenharmony_ci* Rank: Important(1) 127732a6e48fSopenharmony_ci* EnvConditions: N/A 127832a6e48fSopenharmony_ci* CaseDescription: 1. call SetMetaData with normal parameters and check ret 127932a6e48fSopenharmony_ci */ 128032a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, metaData002, Function | MediumTest | Level1) 128132a6e48fSopenharmony_ci{ 128232a6e48fSopenharmony_ci std::vector<GraphicHDRMetaData> metaData; 128332a6e48fSopenharmony_ci GraphicHDRMetaData data = { 128432a6e48fSopenharmony_ci .key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_RED_PRIMARY_X, 128532a6e48fSopenharmony_ci .value = 100, // for test 128632a6e48fSopenharmony_ci }; 128732a6e48fSopenharmony_ci metaData.push_back(data); 128832a6e48fSopenharmony_ci GSError ret = cs->SetMetaData(firstSeqnum, metaData); 128932a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 129032a6e48fSopenharmony_ci} 129132a6e48fSopenharmony_ci 129232a6e48fSopenharmony_ci/* 129332a6e48fSopenharmony_ci* Function: SetMetaData and GetMetaData 129432a6e48fSopenharmony_ci* Type: Function 129532a6e48fSopenharmony_ci* Rank: Important(1) 129632a6e48fSopenharmony_ci* EnvConditions: N/A 129732a6e48fSopenharmony_ci* CaseDescription: 1. call SetMetaData with normal parameters and check ret 129832a6e48fSopenharmony_ci* 2. call GetMetaData and check ret 129932a6e48fSopenharmony_ci */ 130032a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, metaData003, Function | MediumTest | Level1) 130132a6e48fSopenharmony_ci{ 130232a6e48fSopenharmony_ci std::vector<GraphicHDRMetaData> metaData; 130332a6e48fSopenharmony_ci GraphicHDRMetaData data = { 130432a6e48fSopenharmony_ci .key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_RED_PRIMARY_X, 130532a6e48fSopenharmony_ci .value = 100, // for test 130632a6e48fSopenharmony_ci }; 130732a6e48fSopenharmony_ci metaData.push_back(data); 130832a6e48fSopenharmony_ci 130932a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 131032a6e48fSopenharmony_ci int releaseFence = -1; 131132a6e48fSopenharmony_ci GSError ret = ps->RequestBuffer(buffer, releaseFence, requestConfig); 131232a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 131332a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 131432a6e48fSopenharmony_ci 131532a6e48fSopenharmony_ci uint32_t sequence = buffer->GetSeqNum(); 131632a6e48fSopenharmony_ci ret = cs->SetMetaData(sequence, metaData); 131732a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 131832a6e48fSopenharmony_ci 131932a6e48fSopenharmony_ci std::vector<GraphicHDRMetaData> metaDataGet; 132032a6e48fSopenharmony_ci ret = cs->GetMetaData(sequence, metaDataGet); 132132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 132232a6e48fSopenharmony_ci ASSERT_EQ(metaData[0].key, metaDataGet[0].key); 132332a6e48fSopenharmony_ci ASSERT_EQ(metaData[0].value, metaDataGet[0].value); 132432a6e48fSopenharmony_ci 132532a6e48fSopenharmony_ci ret = cs->GetMetaData(sequence + 1, metaDataGet); 132632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_NO_ENTRY); 132732a6e48fSopenharmony_ci 132832a6e48fSopenharmony_ci ret = ps->CancelBuffer(buffer); 132932a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 133032a6e48fSopenharmony_ci} 133132a6e48fSopenharmony_ci 133232a6e48fSopenharmony_ci/* 133332a6e48fSopenharmony_ci* Function: SetMetaData and GetMetaData 133432a6e48fSopenharmony_ci* Type: Function 133532a6e48fSopenharmony_ci* Rank: Important(2) 133632a6e48fSopenharmony_ci* EnvConditions: N/A 133732a6e48fSopenharmony_ci* CaseDescription: 1. call SetMetaData and GetMetaData with nullptr and check ret 133832a6e48fSopenharmony_ci */ 133932a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, metaData004, Function | MediumTest | Level2) 134032a6e48fSopenharmony_ci{ 134132a6e48fSopenharmony_ci std::vector<GraphicHDRMetaData> metaData; 134232a6e48fSopenharmony_ci GSError ret = surface_->SetMetaData(firstSeqnum, metaData); 134332a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 134432a6e48fSopenharmony_ci ret = surface_->GetMetaData(firstSeqnum, metaData); 134532a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 134632a6e48fSopenharmony_ci} 134732a6e48fSopenharmony_ci 134832a6e48fSopenharmony_ci/* 134932a6e48fSopenharmony_ci* Function: SetMetaDataSet and GetMetaDataSet 135032a6e48fSopenharmony_ci* Type: Function 135132a6e48fSopenharmony_ci* Rank: Important(2) 135232a6e48fSopenharmony_ci* EnvConditions: N/A 135332a6e48fSopenharmony_ci* CaseDescription: 1. call SetMetaDataSet with abnormal parameters and check ret 135432a6e48fSopenharmony_ci */ 135532a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, metaDataSet001, Function | MediumTest | Level2) 135632a6e48fSopenharmony_ci{ 135732a6e48fSopenharmony_ci GraphicHDRMetadataKey key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_HDR10_PLUS; 135832a6e48fSopenharmony_ci std::vector<uint8_t> metaData; 135932a6e48fSopenharmony_ci GSError ret = cs->SetMetaDataSet(firstSeqnum, key, metaData); 136032a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 136132a6e48fSopenharmony_ci} 136232a6e48fSopenharmony_ci 136332a6e48fSopenharmony_ci/* 136432a6e48fSopenharmony_ci* Function: SetMetaDataSet and GetMetaDataSet 136532a6e48fSopenharmony_ci* Type: Function 136632a6e48fSopenharmony_ci* Rank: Important(1) 136732a6e48fSopenharmony_ci* EnvConditions: N/A 136832a6e48fSopenharmony_ci* CaseDescription: 1. call SetMetaDataSet with normal parameters and check ret 136932a6e48fSopenharmony_ci */ 137032a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, metaDataSet002, Function | MediumTest | Level1) 137132a6e48fSopenharmony_ci{ 137232a6e48fSopenharmony_ci GraphicHDRMetadataKey key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_HDR10_PLUS; 137332a6e48fSopenharmony_ci std::vector<uint8_t> metaData; 137432a6e48fSopenharmony_ci uint8_t data = 10; // for test 137532a6e48fSopenharmony_ci metaData.push_back(data); 137632a6e48fSopenharmony_ci GSError ret = cs->SetMetaDataSet(firstSeqnum, key, metaData); 137732a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 137832a6e48fSopenharmony_ci} 137932a6e48fSopenharmony_ci 138032a6e48fSopenharmony_ci/* 138132a6e48fSopenharmony_ci* Function: SetMetaDataSet and GetMetaDataSet 138232a6e48fSopenharmony_ci* Type: Function 138332a6e48fSopenharmony_ci* Rank: Important(1) 138432a6e48fSopenharmony_ci* EnvConditions: N/A 138532a6e48fSopenharmony_ci* CaseDescription: 1. call SetMetaDataSet with normal parameters and check ret 138632a6e48fSopenharmony_ci* 2. call GetMetaDataSet and check ret 138732a6e48fSopenharmony_ci */ 138832a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, metaDataSet003, Function | MediumTest | Level1) 138932a6e48fSopenharmony_ci{ 139032a6e48fSopenharmony_ci GraphicHDRMetadataKey key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_HDR10_PLUS; 139132a6e48fSopenharmony_ci std::vector<uint8_t> metaData; 139232a6e48fSopenharmony_ci uint8_t data = 10; // for test 139332a6e48fSopenharmony_ci metaData.push_back(data); 139432a6e48fSopenharmony_ci 139532a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 139632a6e48fSopenharmony_ci int releaseFence = -1; 139732a6e48fSopenharmony_ci GSError ret = ps->RequestBuffer(buffer, releaseFence, requestConfig); 139832a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 139932a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 140032a6e48fSopenharmony_ci 140132a6e48fSopenharmony_ci uint32_t sequence = buffer->GetSeqNum(); 140232a6e48fSopenharmony_ci ret = cs->SetMetaDataSet(sequence, key, metaData); 140332a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 140432a6e48fSopenharmony_ci 140532a6e48fSopenharmony_ci GraphicHDRMetadataKey keyGet = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_RED_PRIMARY_X; 140632a6e48fSopenharmony_ci std::vector<uint8_t> metaDataGet; 140732a6e48fSopenharmony_ci ret = cs->GetMetaDataSet(sequence, keyGet, metaDataGet); 140832a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 140932a6e48fSopenharmony_ci ASSERT_EQ(key, keyGet); 141032a6e48fSopenharmony_ci ASSERT_EQ(metaData[0], metaDataGet[0]); 141132a6e48fSopenharmony_ci 141232a6e48fSopenharmony_ci ret = cs->GetMetaDataSet(sequence + 1, keyGet, metaDataGet); 141332a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_NO_ENTRY); 141432a6e48fSopenharmony_ci 141532a6e48fSopenharmony_ci ret = ps->CancelBuffer(buffer); 141632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 141732a6e48fSopenharmony_ci} 141832a6e48fSopenharmony_ci 141932a6e48fSopenharmony_ci/* 142032a6e48fSopenharmony_ci* Function: SetMetaDataSet and GetMetaDataSet 142132a6e48fSopenharmony_ci* Type: Function 142232a6e48fSopenharmony_ci* Rank: Important(2) 142332a6e48fSopenharmony_ci* EnvConditions: N/A 142432a6e48fSopenharmony_ci* CaseDescription: 1. call SetMetaDataSet and GetMetaDataSet with nullptr and check ret 142532a6e48fSopenharmony_ci */ 142632a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, metaDataSet004, Function | MediumTest | Level2) 142732a6e48fSopenharmony_ci{ 142832a6e48fSopenharmony_ci GraphicHDRMetadataKey key = GraphicHDRMetadataKey::GRAPHIC_MATAKEY_HDR10_PLUS; 142932a6e48fSopenharmony_ci std::vector<uint8_t> metaData; 143032a6e48fSopenharmony_ci GSError ret = surface_->SetMetaDataSet(firstSeqnum, key, metaData); 143132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 143232a6e48fSopenharmony_ci ret = surface_->GetMetaDataSet(firstSeqnum, key, metaData); 143332a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 143432a6e48fSopenharmony_ci} 143532a6e48fSopenharmony_ci 143632a6e48fSopenharmony_ci/* 143732a6e48fSopenharmony_ci* Function: SetTunnelHandle and GetTunnelHandle 143832a6e48fSopenharmony_ci* Type: Function 143932a6e48fSopenharmony_ci* Rank: Important(2) 144032a6e48fSopenharmony_ci* EnvConditions: N/A 144132a6e48fSopenharmony_ci* CaseDescription: 1. call SetTunnelHandle with abnormal parameters and check ret 144232a6e48fSopenharmony_ci */ 144332a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, TunnelHandle001, Function | MediumTest | Level2) 144432a6e48fSopenharmony_ci{ 144532a6e48fSopenharmony_ci GraphicExtDataHandle *handle = nullptr; 144632a6e48fSopenharmony_ci GSError ret = cs->SetTunnelHandle(handle); 144732a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 144832a6e48fSopenharmony_ci} 144932a6e48fSopenharmony_ci 145032a6e48fSopenharmony_ci/* 145132a6e48fSopenharmony_ci* Function: SetTunnelHandle and GetTunnelHandle 145232a6e48fSopenharmony_ci* Type: Function 145332a6e48fSopenharmony_ci* Rank: Important(2) 145432a6e48fSopenharmony_ci* EnvConditions: N/A 145532a6e48fSopenharmony_ci* CaseDescription: 1. call SetTunnelHandle with abnormal parameters and check ret 145632a6e48fSopenharmony_ci */ 145732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, TunnelHandle002, Function | MediumTest | Level2) 145832a6e48fSopenharmony_ci{ 145932a6e48fSopenharmony_ci GraphicExtDataHandle *handle = nullptr; 146032a6e48fSopenharmony_ci handle = new GraphicExtDataHandle(); 146132a6e48fSopenharmony_ci handle->fd = -1; 146232a6e48fSopenharmony_ci handle->reserveInts = 0; 146332a6e48fSopenharmony_ci GSError ret = cs->SetTunnelHandle(handle); 146432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 146532a6e48fSopenharmony_ci} 146632a6e48fSopenharmony_ci 146732a6e48fSopenharmony_ci/* 146832a6e48fSopenharmony_ci* Function: SetTunnelHandle and GetTunnelHandle 146932a6e48fSopenharmony_ci* Type: Function 147032a6e48fSopenharmony_ci* Rank: Important(1) 147132a6e48fSopenharmony_ci* EnvConditions: N/A 147232a6e48fSopenharmony_ci* CaseDescription: 1. call SetTunnelHandle with normal parameters and check ret 147332a6e48fSopenharmony_ci* 2. call GetTunnelHandle and check ret 147432a6e48fSopenharmony_ci* @tc.require: issueI5GMZN issueI5IWHW 147532a6e48fSopenharmony_ci */ 147632a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, TunnelHandle003, Function | MediumTest | Level1) 147732a6e48fSopenharmony_ci{ 147832a6e48fSopenharmony_ci GraphicExtDataHandle *handle = static_cast<GraphicExtDataHandle *>( 147932a6e48fSopenharmony_ci malloc(sizeof(GraphicExtDataHandle) + sizeof(int32_t))); 148032a6e48fSopenharmony_ci handle->fd = -1; 148132a6e48fSopenharmony_ci handle->reserveInts = 1; 148232a6e48fSopenharmony_ci handle->reserve[0] = 0; 148332a6e48fSopenharmony_ci GSError ret = cs->SetTunnelHandle(handle); 148432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 148532a6e48fSopenharmony_ci 148632a6e48fSopenharmony_ci ret = cs->SetTunnelHandle(handle); 148732a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_NO_ENTRY); 148832a6e48fSopenharmony_ci 148932a6e48fSopenharmony_ci sptr<SurfaceTunnelHandle> handleGet = nullptr; 149032a6e48fSopenharmony_ci handleGet = cs->GetTunnelHandle(); 149132a6e48fSopenharmony_ci ASSERT_NE(handleGet, nullptr); 149232a6e48fSopenharmony_ci ASSERT_EQ(handle->fd, handleGet->GetHandle()->fd); 149332a6e48fSopenharmony_ci ASSERT_EQ(handle->reserveInts, handleGet->GetHandle()->reserveInts); 149432a6e48fSopenharmony_ci ASSERT_EQ(handle->reserve[0], handleGet->GetHandle()->reserve[0]); 149532a6e48fSopenharmony_ci free(handle); 149632a6e48fSopenharmony_ci} 149732a6e48fSopenharmony_ci 149832a6e48fSopenharmony_ci/* 149932a6e48fSopenharmony_ci* Function: SetTunnelHandle and GetTunnelHandle 150032a6e48fSopenharmony_ci* Type: Function 150132a6e48fSopenharmony_ci* Rank: Important(2) 150232a6e48fSopenharmony_ci* EnvConditions: N/A 150332a6e48fSopenharmony_ci* CaseDescription: 1. call SetTunnelHandle and GetTunnelHandle with nullptr and check ret 150432a6e48fSopenharmony_ci */ 150532a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, TunnelHandle004, Function | MediumTest | Level2) 150632a6e48fSopenharmony_ci{ 150732a6e48fSopenharmony_ci GraphicExtDataHandle *handle = nullptr; 150832a6e48fSopenharmony_ci GSError ret = surface_->SetTunnelHandle(handle); 150932a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 151032a6e48fSopenharmony_ci sptr<SurfaceTunnelHandle> tunnelHandle = surface_->GetTunnelHandle(); 151132a6e48fSopenharmony_ci ASSERT_EQ(tunnelHandle, nullptr); 151232a6e48fSopenharmony_ci} 151332a6e48fSopenharmony_ci 151432a6e48fSopenharmony_ci/* 151532a6e48fSopenharmony_ci* Function: SetPresentTimestamp and GetPresentTimestamp 151632a6e48fSopenharmony_ci* Type: Function 151732a6e48fSopenharmony_ci* Rank: Important(2) 151832a6e48fSopenharmony_ci* EnvConditions: N/A 151932a6e48fSopenharmony_ci* CaseDescription: 1. call SetPresentTimestamp with abnormal parameters and check ret 152032a6e48fSopenharmony_ci* @tc.require: issueI5I57K 152132a6e48fSopenharmony_ci */ 152232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, presentTimestamp002, Function | MediumTest | Level2) 152332a6e48fSopenharmony_ci{ 152432a6e48fSopenharmony_ci GraphicPresentTimestamp timestamp = {GRAPHIC_DISPLAY_PTS_UNSUPPORTED, 0}; 152532a6e48fSopenharmony_ci GSError ret = cs->SetPresentTimestamp(-1, timestamp); 152632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 152732a6e48fSopenharmony_ci} 152832a6e48fSopenharmony_ci 152932a6e48fSopenharmony_ci/* 153032a6e48fSopenharmony_ci* Function: SetPresentTimestamp and GetPresentTimestamp 153132a6e48fSopenharmony_ci* Type: Function 153232a6e48fSopenharmony_ci* Rank: Important(2) 153332a6e48fSopenharmony_ci* EnvConditions: N/A 153432a6e48fSopenharmony_ci* CaseDescription: 1. call SetPresentTimestamp with abnormal parameters and check ret 153532a6e48fSopenharmony_ci* @tc.require: issueI5I57K 153632a6e48fSopenharmony_ci */ 153732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, presentTimestamp003, Function | MediumTest | Level2) 153832a6e48fSopenharmony_ci{ 153932a6e48fSopenharmony_ci GraphicPresentTimestamp timestamp = {GRAPHIC_DISPLAY_PTS_DELAY, 0}; 154032a6e48fSopenharmony_ci GSError ret = cs->SetPresentTimestamp(-1, timestamp); 154132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_NO_ENTRY); 154232a6e48fSopenharmony_ci} 154332a6e48fSopenharmony_ci 154432a6e48fSopenharmony_ci/* 154532a6e48fSopenharmony_ci* Function: SetPresentTimestamp and GetPresentTimestamp 154632a6e48fSopenharmony_ci* Type: Function 154732a6e48fSopenharmony_ci* Rank: Important(1) 154832a6e48fSopenharmony_ci* EnvConditions: N/A 154932a6e48fSopenharmony_ci* CaseDescription: 1. call SetPresentTimestamp with normal parameters and check ret 155032a6e48fSopenharmony_ci* @tc.require: issueI5I57K 155132a6e48fSopenharmony_ci */ 155232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, presentTimestamp004, Function | MediumTest | Level1) 155332a6e48fSopenharmony_ci{ 155432a6e48fSopenharmony_ci GraphicPresentTimestamp timestamp = {GRAPHIC_DISPLAY_PTS_DELAY, 0}; 155532a6e48fSopenharmony_ci GSError ret = cs->SetPresentTimestamp(firstSeqnum, timestamp); 155632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 155732a6e48fSopenharmony_ci} 155832a6e48fSopenharmony_ci 155932a6e48fSopenharmony_ci/* 156032a6e48fSopenharmony_ci* Function: SetPresentTimestamp and GetPresentTimestamp 156132a6e48fSopenharmony_ci* Type: Function 156232a6e48fSopenharmony_ci* Rank: Important(1) 156332a6e48fSopenharmony_ci* EnvConditions: N/A 156432a6e48fSopenharmony_ci* CaseDescription: 1. call SetPresentTimestamp with normal parameters and check ret 156532a6e48fSopenharmony_ci* @tc.require: issueI5I57K 156632a6e48fSopenharmony_ci */ 156732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, presentTimestamp005, Function | MediumTest | Level1) 156832a6e48fSopenharmony_ci{ 156932a6e48fSopenharmony_ci GraphicPresentTimestamp timestamp = {GRAPHIC_DISPLAY_PTS_TIMESTAMP, 0}; 157032a6e48fSopenharmony_ci GSError ret = cs->SetPresentTimestamp(firstSeqnum, timestamp); 157132a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 157232a6e48fSopenharmony_ci} 157332a6e48fSopenharmony_ci 157432a6e48fSopenharmony_ci/* 157532a6e48fSopenharmony_ci* Function: SetPresentTimestamp and GetPresentTimestamp 157632a6e48fSopenharmony_ci* Type: Function 157732a6e48fSopenharmony_ci* Rank: Important(1) 157832a6e48fSopenharmony_ci* EnvConditions: N/A 157932a6e48fSopenharmony_ci* CaseDescription: 1. call SetPresentTimestamp with nullptr and check ret 158032a6e48fSopenharmony_ci */ 158132a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, presentTimestamp006, Function | MediumTest | Level1) 158232a6e48fSopenharmony_ci{ 158332a6e48fSopenharmony_ci GraphicPresentTimestamp timestamp = {GRAPHIC_DISPLAY_PTS_TIMESTAMP, 0}; 158432a6e48fSopenharmony_ci GSError ret = surface_->SetPresentTimestamp(firstSeqnum, timestamp); 158532a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 158632a6e48fSopenharmony_ci int64_t time = 0; 158732a6e48fSopenharmony_ci ret = surface_->GetPresentTimestamp(firstSeqnum, GraphicPresentTimestampType::GRAPHIC_DISPLAY_PTS_TIMESTAMP, time); 158832a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_NOT_SUPPORT); 158932a6e48fSopenharmony_ci} 159032a6e48fSopenharmony_ci 159132a6e48fSopenharmony_ci/* 159232a6e48fSopenharmony_ci* Function: AcquireBuffer and ReleaseBuffer 159332a6e48fSopenharmony_ci* Type: Function 159432a6e48fSopenharmony_ci* Rank: Important(2) 159532a6e48fSopenharmony_ci* EnvConditions: N/A 159632a6e48fSopenharmony_ci* CaseDescription: 1. call RequestBuffer and FlushBuffer 159732a6e48fSopenharmony_ci* 2. call AcquireBuffer and ReleaseBuffer 159832a6e48fSopenharmony_ci* 3. check ret 159932a6e48fSopenharmony_ci */ 160032a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ReqCanFluAcqRel005, Function | MediumTest | Level2) 160132a6e48fSopenharmony_ci{ 160232a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 160332a6e48fSopenharmony_ci int releaseFence = -1; 160432a6e48fSopenharmony_ci 160532a6e48fSopenharmony_ci GSError ret = ps->RequestBuffer(buffer, releaseFence, requestConfig); 160632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 160732a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 160832a6e48fSopenharmony_ci 160932a6e48fSopenharmony_ci ret = ps->FlushBuffer(buffer, SyncFence::INVALID_FENCE, flushConfigWithDamages); 161032a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 161132a6e48fSopenharmony_ci 161232a6e48fSopenharmony_ci sptr<OHOS::SyncFence> flushFence; 161332a6e48fSopenharmony_ci ret = cs->AcquireBuffer(buffer, flushFence, timestamp, damages); 161432a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 161532a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 161632a6e48fSopenharmony_ci ASSERT_EQ(damages.size(), flushConfigWithDamages.damages.size()); 161732a6e48fSopenharmony_ci for (decltype(damages.size()) i = 0; i < damages.size(); i++) { 161832a6e48fSopenharmony_ci ASSERT_EQ(damages[i].x, flushConfigWithDamages.damages[i].x); 161932a6e48fSopenharmony_ci ASSERT_EQ(damages[i].y, flushConfigWithDamages.damages[i].y); 162032a6e48fSopenharmony_ci ASSERT_EQ(damages[i].w, flushConfigWithDamages.damages[i].w); 162132a6e48fSopenharmony_ci ASSERT_EQ(damages[i].h, flushConfigWithDamages.damages[i].h); 162232a6e48fSopenharmony_ci } 162332a6e48fSopenharmony_ci 162432a6e48fSopenharmony_ci ASSERT_EQ(timestamp, flushConfigWithDamages.timestamp); 162532a6e48fSopenharmony_ci ret = cs->ReleaseBuffer(buffer, -1); 162632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 162732a6e48fSopenharmony_ci} 162832a6e48fSopenharmony_ci 162932a6e48fSopenharmony_ci/* 163032a6e48fSopenharmony_ci* Function: AttachBuffer001 163132a6e48fSopenharmony_ci* Type: Function 163232a6e48fSopenharmony_ci* Rank: Important(2) 163332a6e48fSopenharmony_ci* EnvConditions: N/A 163432a6e48fSopenharmony_ci* CaseDescription: 1. call AttachBuffer 163532a6e48fSopenharmony_ci* 2. check ret 163632a6e48fSopenharmony_ci */ 163732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, AttachBuffer001, Function | MediumTest | Level2) 163832a6e48fSopenharmony_ci{ 163932a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer = SurfaceBuffer::Create(); 164032a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 164132a6e48fSopenharmony_ci GSError ret = cs->AttachBuffer(buffer); 164232a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 164332a6e48fSopenharmony_ci} 164432a6e48fSopenharmony_ci 164532a6e48fSopenharmony_ci/* 164632a6e48fSopenharmony_ci* Function: AttachBuffer002 164732a6e48fSopenharmony_ci* Type: Function 164832a6e48fSopenharmony_ci* Rank: Important(2) 164932a6e48fSopenharmony_ci* EnvConditions: N/A 165032a6e48fSopenharmony_ci* CaseDescription: 1. call AttachBuffer 165132a6e48fSopenharmony_ci* 2. check ret 165232a6e48fSopenharmony_ci */ 165332a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, AttachBuffer002, Function | MediumTest | Level2) 165432a6e48fSopenharmony_ci{ 165532a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer = SurfaceBuffer::Create(); 165632a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 165732a6e48fSopenharmony_ci int32_t timeOut = 1; 165832a6e48fSopenharmony_ci GSError ret = cs->AttachBuffer(buffer, timeOut); 165932a6e48fSopenharmony_ci ASSERT_NE(ret, OHOS::GSERROR_OK); 166032a6e48fSopenharmony_ci} 166132a6e48fSopenharmony_ci 166232a6e48fSopenharmony_ci/* 166332a6e48fSopenharmony_ci* Function: AttachBuffer003 166432a6e48fSopenharmony_ci* Type: Function 166532a6e48fSopenharmony_ci* Rank: Important(2) 166632a6e48fSopenharmony_ci* EnvConditions: N/A 166732a6e48fSopenharmony_ci* CaseDescription: 1. call AttachBuffer 166832a6e48fSopenharmony_ci* 2. check ret 166932a6e48fSopenharmony_ci */ 167032a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, AttachBuffer003, Function | MediumTest | Level2) 167132a6e48fSopenharmony_ci{ 167232a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer = SurfaceBuffer::Create(); 167332a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 167432a6e48fSopenharmony_ci int32_t timeOut = 1; 167532a6e48fSopenharmony_ci GSError ret = cs->AttachBuffer(buffer, timeOut); 167632a6e48fSopenharmony_ci ASSERT_NE(ret, GSERROR_OK); 167732a6e48fSopenharmony_ci} 167832a6e48fSopenharmony_ci 167932a6e48fSopenharmony_ci/* 168032a6e48fSopenharmony_ci* Function: AttachBuffer 168132a6e48fSopenharmony_ci* Type: Function 168232a6e48fSopenharmony_ci* Rank: Important(2) 168332a6e48fSopenharmony_ci* EnvConditions: N/A 168432a6e48fSopenharmony_ci* CaseDescription: 1. call AttachBuffer with nullptr params 168532a6e48fSopenharmony_ci* 2. check ret 168632a6e48fSopenharmony_ci */ 168732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, AttachBuffer004, Function | MediumTest | Level2) 168832a6e48fSopenharmony_ci{ 168932a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer = nullptr; 169032a6e48fSopenharmony_ci GSError ret = surface_->AttachBuffer(buffer); 169132a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_INVALID_ARGUMENTS); 169232a6e48fSopenharmony_ci} 169332a6e48fSopenharmony_ci 169432a6e48fSopenharmony_ci/* 169532a6e48fSopenharmony_ci* Function: AttachBuffer 169632a6e48fSopenharmony_ci* Type: Function 169732a6e48fSopenharmony_ci* Rank: Important(2) 169832a6e48fSopenharmony_ci* EnvConditions: N/A 169932a6e48fSopenharmony_ci* CaseDescription: 1. call AttachBuffer with nullptr params 170032a6e48fSopenharmony_ci* 2. check ret 170132a6e48fSopenharmony_ci */ 170232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, AttachBuffer005, Function | MediumTest | Level2) 170332a6e48fSopenharmony_ci{ 170432a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer = nullptr; 170532a6e48fSopenharmony_ci int32_t timeOut = 1; 170632a6e48fSopenharmony_ci GSError ret = surface_->AttachBuffer(buffer, timeOut); 170732a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_INVALID_ARGUMENTS); 170832a6e48fSopenharmony_ci} 170932a6e48fSopenharmony_ci 171032a6e48fSopenharmony_ci/* 171132a6e48fSopenharmony_ci* Function: RegisterSurfaceDelegator 171232a6e48fSopenharmony_ci* Type: Function 171332a6e48fSopenharmony_ci* Rank: Important(2) 171432a6e48fSopenharmony_ci* EnvConditions: N/A 171532a6e48fSopenharmony_ci* CaseDescription: 1. call RegisterSurfaceDelegator 171632a6e48fSopenharmony_ci* 2. check ret 171732a6e48fSopenharmony_ci */ 171832a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, RegisterSurfaceDelegator001, Function | MediumTest | Level2) 171932a6e48fSopenharmony_ci{ 172032a6e48fSopenharmony_ci GSError ret = cs->RegisterSurfaceDelegator(surfaceDelegator->AsObject()); 172132a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 172232a6e48fSopenharmony_ci} 172332a6e48fSopenharmony_ci 172432a6e48fSopenharmony_ci/* 172532a6e48fSopenharmony_ci* Function: RegisterSurfaceDelegator 172632a6e48fSopenharmony_ci* Type: Function 172732a6e48fSopenharmony_ci* Rank: Important(2) 172832a6e48fSopenharmony_ci* EnvConditions: N/A 172932a6e48fSopenharmony_ci* CaseDescription: 1. call RegisterSurfaceDelegator with nullptr params 173032a6e48fSopenharmony_ci* 2. check ret 173132a6e48fSopenharmony_ci */ 173232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, RegisterSurfaceDelegator002, Function | MediumTest | Level2) 173332a6e48fSopenharmony_ci{ 173432a6e48fSopenharmony_ci GSError ret = surface_->RegisterSurfaceDelegator(nullptr); 173532a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_INVALID_ARGUMENTS); 173632a6e48fSopenharmony_ci ASSERT_NE(surfaceDelegator, nullptr); 173732a6e48fSopenharmony_ci sptr<IRemoteObject> client = surfaceDelegator->AsObject(); 173832a6e48fSopenharmony_ci ASSERT_NE(client, nullptr); 173932a6e48fSopenharmony_ci ret = surface_->RegisterSurfaceDelegator(client); 174032a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_INVALID_ARGUMENTS); 174132a6e48fSopenharmony_ci} 174232a6e48fSopenharmony_ci 174332a6e48fSopenharmony_ci/* 174432a6e48fSopenharmony_ci* Function: ConsumerRequestCpuAccess 174532a6e48fSopenharmony_ci* Type: Function 174632a6e48fSopenharmony_ci* Rank: Important(2) 174732a6e48fSopenharmony_ci* EnvConditions: N/A 174832a6e48fSopenharmony_ci* CaseDescription: 1. usage does not contain BUFFER_USAGE_CPU_HW_BOTH 174932a6e48fSopenharmony_ci* 2. call ConsumerRequestCpuAccess(fasle/true) 175032a6e48fSopenharmony_ci* 3. check ret 175132a6e48fSopenharmony_ci */ 175232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ConsumerRequestCpuAccess001, Function | MediumTest | Level2) 175332a6e48fSopenharmony_ci{ 175432a6e48fSopenharmony_ci using namespace HDI::Display::Graphic::Common; 175532a6e48fSopenharmony_ci BufferRequestConfig config = { 175632a6e48fSopenharmony_ci .width = 0x100, 175732a6e48fSopenharmony_ci .height = 0x100, 175832a6e48fSopenharmony_ci .strideAlignment = 0x8, 175932a6e48fSopenharmony_ci .format = GRAPHIC_PIXEL_FMT_RGBA_8888, 176032a6e48fSopenharmony_ci .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA, 176132a6e48fSopenharmony_ci .timeout = 0, 176232a6e48fSopenharmony_ci }; 176332a6e48fSopenharmony_ci auto cSurface = IConsumerSurface::Create(); 176432a6e48fSopenharmony_ci sptr<IBufferConsumerListener> cListener = new BufferConsumerListener(); 176532a6e48fSopenharmony_ci cSurface->RegisterConsumerListener(cListener); 176632a6e48fSopenharmony_ci auto p = cSurface->GetProducer(); 176732a6e48fSopenharmony_ci auto pSurface = Surface::CreateSurfaceAsProducer(p); 176832a6e48fSopenharmony_ci 176932a6e48fSopenharmony_ci // test default 177032a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 177132a6e48fSopenharmony_ci int releaseFence = -1; 177232a6e48fSopenharmony_ci GSError ret = pSurface->RequestBuffer(buffer, releaseFence, config); 177332a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 177432a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 177532a6e48fSopenharmony_ci 177632a6e48fSopenharmony_ci std::vector<uint8_t> values; 177732a6e48fSopenharmony_ci buffer->GetMetadata(V1_1::BufferHandleAttrKey::ATTRKEY_REQUEST_ACCESS_TYPE, values); 177832a6e48fSopenharmony_ci ASSERT_EQ(values.size(), 0); 177932a6e48fSopenharmony_ci 178032a6e48fSopenharmony_ci ret = pSurface->CancelBuffer(buffer); 178132a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 178232a6e48fSopenharmony_ci 178332a6e48fSopenharmony_ci // test true 178432a6e48fSopenharmony_ci cSurface->ConsumerRequestCpuAccess(true); 178532a6e48fSopenharmony_ci ret = pSurface->RequestBuffer(buffer, releaseFence, config); 178632a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 178732a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 178832a6e48fSopenharmony_ci 178932a6e48fSopenharmony_ci values.clear(); 179032a6e48fSopenharmony_ci buffer->GetMetadata(V1_1::BufferHandleAttrKey::ATTRKEY_REQUEST_ACCESS_TYPE, values); 179132a6e48fSopenharmony_ci ASSERT_EQ(values.size(), 0); 179232a6e48fSopenharmony_ci 179332a6e48fSopenharmony_ci ret = pSurface->CancelBuffer(buffer); 179432a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 179532a6e48fSopenharmony_ci 179632a6e48fSopenharmony_ci // test false 179732a6e48fSopenharmony_ci cSurface->ConsumerRequestCpuAccess(false); 179832a6e48fSopenharmony_ci ret = pSurface->RequestBuffer(buffer, releaseFence, config); 179932a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 180032a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 180132a6e48fSopenharmony_ci 180232a6e48fSopenharmony_ci values.clear(); 180332a6e48fSopenharmony_ci buffer->GetMetadata(V1_1::BufferHandleAttrKey::ATTRKEY_REQUEST_ACCESS_TYPE, values); 180432a6e48fSopenharmony_ci ASSERT_EQ(values.size(), 0); 180532a6e48fSopenharmony_ci 180632a6e48fSopenharmony_ci ret = pSurface->CancelBuffer(buffer); 180732a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 180832a6e48fSopenharmony_ci} 180932a6e48fSopenharmony_ci 181032a6e48fSopenharmony_ci/* 181132a6e48fSopenharmony_ci* Function: ConsumerRequestCpuAccess 181232a6e48fSopenharmony_ci* Type: Function 181332a6e48fSopenharmony_ci* Rank: Important(2) 181432a6e48fSopenharmony_ci* EnvConditions: N/A 181532a6e48fSopenharmony_ci* CaseDescription: 1. usage contain BUFFER_USAGE_CPU_HW_BOTH 181632a6e48fSopenharmony_ci* 2. call ConsumerRequestCpuAccess(true) 181732a6e48fSopenharmony_ci* 3. check ret 181832a6e48fSopenharmony_ci */ 181932a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ConsumerRequestCpuAccess002, Function | MediumTest | Level2) 182032a6e48fSopenharmony_ci{ 182132a6e48fSopenharmony_ci using namespace HDI::Display::Graphic::Common; 182232a6e48fSopenharmony_ci BufferRequestConfig config = { 182332a6e48fSopenharmony_ci .width = 0x100, 182432a6e48fSopenharmony_ci .height = 0x100, 182532a6e48fSopenharmony_ci .strideAlignment = 0x8, 182632a6e48fSopenharmony_ci .format = GRAPHIC_PIXEL_FMT_RGBA_8888, 182732a6e48fSopenharmony_ci .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA | BUFFER_USAGE_CPU_HW_BOTH, 182832a6e48fSopenharmony_ci .timeout = 0, 182932a6e48fSopenharmony_ci }; 183032a6e48fSopenharmony_ci auto cSurface = IConsumerSurface::Create(); 183132a6e48fSopenharmony_ci sptr<IBufferConsumerListener> cListener = new BufferConsumerListener(); 183232a6e48fSopenharmony_ci cSurface->RegisterConsumerListener(cListener); 183332a6e48fSopenharmony_ci auto p = cSurface->GetProducer(); 183432a6e48fSopenharmony_ci auto pSurface = Surface::CreateSurfaceAsProducer(p); 183532a6e48fSopenharmony_ci 183632a6e48fSopenharmony_ci // test default 183732a6e48fSopenharmony_ci sptr<SurfaceBuffer> buffer; 183832a6e48fSopenharmony_ci int releaseFence = -1; 183932a6e48fSopenharmony_ci GSError ret = pSurface->RequestBuffer(buffer, releaseFence, config); 184032a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 184132a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 184232a6e48fSopenharmony_ci 184332a6e48fSopenharmony_ci std::vector<uint8_t> values; 184432a6e48fSopenharmony_ci buffer->GetMetadata(V1_1::BufferHandleAttrKey::ATTRKEY_REQUEST_ACCESS_TYPE, values); 184532a6e48fSopenharmony_ci if (values.size() == 1) { 184632a6e48fSopenharmony_ci ASSERT_EQ(values[0], V1_1::HebcAccessType::HEBC_ACCESS_HW_ONLY); 184732a6e48fSopenharmony_ci } 184832a6e48fSopenharmony_ci 184932a6e48fSopenharmony_ci ret = pSurface->CancelBuffer(buffer); 185032a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 185132a6e48fSopenharmony_ci 185232a6e48fSopenharmony_ci // test true 185332a6e48fSopenharmony_ci cSurface->ConsumerRequestCpuAccess(true); 185432a6e48fSopenharmony_ci ret = pSurface->RequestBuffer(buffer, releaseFence, config); 185532a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 185632a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 185732a6e48fSopenharmony_ci 185832a6e48fSopenharmony_ci values.clear(); 185932a6e48fSopenharmony_ci buffer->GetMetadata(V1_1::BufferHandleAttrKey::ATTRKEY_REQUEST_ACCESS_TYPE, values); 186032a6e48fSopenharmony_ci if (values.size() == 1) { 186132a6e48fSopenharmony_ci ASSERT_EQ(values[0], V1_1::HebcAccessType::HEBC_ACCESS_CPU_ACCESS); 186232a6e48fSopenharmony_ci } 186332a6e48fSopenharmony_ci 186432a6e48fSopenharmony_ci ret = pSurface->CancelBuffer(buffer); 186532a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 186632a6e48fSopenharmony_ci 186732a6e48fSopenharmony_ci // test false 186832a6e48fSopenharmony_ci cSurface->ConsumerRequestCpuAccess(false); 186932a6e48fSopenharmony_ci ret = pSurface->RequestBuffer(buffer, releaseFence, config); 187032a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 187132a6e48fSopenharmony_ci ASSERT_NE(buffer, nullptr); 187232a6e48fSopenharmony_ci 187332a6e48fSopenharmony_ci values.clear(); 187432a6e48fSopenharmony_ci buffer->GetMetadata(V1_1::BufferHandleAttrKey::ATTRKEY_REQUEST_ACCESS_TYPE, values); 187532a6e48fSopenharmony_ci if (values.size() == 1) { 187632a6e48fSopenharmony_ci ASSERT_EQ(values[0], V1_1::HebcAccessType::HEBC_ACCESS_HW_ONLY); 187732a6e48fSopenharmony_ci } 187832a6e48fSopenharmony_ci 187932a6e48fSopenharmony_ci ret = pSurface->CancelBuffer(buffer); 188032a6e48fSopenharmony_ci ASSERT_EQ(ret, GSERROR_OK); 188132a6e48fSopenharmony_ci} 188232a6e48fSopenharmony_ci 188332a6e48fSopenharmony_ci/* 188432a6e48fSopenharmony_ci* Function: ConsumerRequestCpuAccess 188532a6e48fSopenharmony_ci* Type: Function 188632a6e48fSopenharmony_ci* Rank: Important(2) 188732a6e48fSopenharmony_ci* EnvConditions: N/A 188832a6e48fSopenharmony_ci* CaseDescription: 1. call ConsumerRequestCpuAccess with nullptr 188932a6e48fSopenharmony_ci* 2. check ret 189032a6e48fSopenharmony_ci */ 189132a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, ConsumerRequestCpuAccess003, Function | MediumTest | Level2) 189232a6e48fSopenharmony_ci{ 189332a6e48fSopenharmony_ci ASSERT_NE(surface_, nullptr); 189432a6e48fSopenharmony_ci surface_->ConsumerRequestCpuAccess(true); 189532a6e48fSopenharmony_ci} 189632a6e48fSopenharmony_ci 189732a6e48fSopenharmony_ci/* 189832a6e48fSopenharmony_ci* Function: SetTransformHint and GetTransformHint 189932a6e48fSopenharmony_ci* Type: Function 190032a6e48fSopenharmony_ci* Rank: Important(1) 190132a6e48fSopenharmony_ci* EnvConditions: N/A 190232a6e48fSopenharmony_ci* CaseDescription: 1. call SetTransformHint with nullptr and check ret 190332a6e48fSopenharmony_ci* 2. call GetTransformHint with nullptr and check ret 190432a6e48fSopenharmony_ci */ 190532a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, transformHint001, Function | MediumTest | Level1) 190632a6e48fSopenharmony_ci{ 190732a6e48fSopenharmony_ci GraphicTransformType typeSet = GraphicTransformType::GRAPHIC_ROTATE_BUTT; 190832a6e48fSopenharmony_ci GSError ret = surface_->SetTransformHint(typeSet); 190932a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 191032a6e48fSopenharmony_ci GraphicTransformType typeGet = surface_->GetTransformHint(); 191132a6e48fSopenharmony_ci ASSERT_EQ(typeGet, GraphicTransformType::GRAPHIC_ROTATE_BUTT); 191232a6e48fSopenharmony_ci} 191332a6e48fSopenharmony_ci 191432a6e48fSopenharmony_ci/* 191532a6e48fSopenharmony_ci* Function: SetSurfaceSourceType and GetSurfaceSourceType 191632a6e48fSopenharmony_ci* Type: Function 191732a6e48fSopenharmony_ci* Rank: Important(2) 191832a6e48fSopenharmony_ci* EnvConditions: N/A 191932a6e48fSopenharmony_ci* CaseDescription: 1. call SetSurfaceSourceType and check ret 192032a6e48fSopenharmony_ci* 2. call GetSurfaceSourceType and check ret 192132a6e48fSopenharmony_ci*/ 192232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, SurfaceSourceType001, Function | MediumTest | Level2) 192332a6e48fSopenharmony_ci{ 192432a6e48fSopenharmony_ci OHSurfaceSource sourceType = OHSurfaceSource::OH_SURFACE_SOURCE_VIDEO; 192532a6e48fSopenharmony_ci GSError ret = cs->SetSurfaceSourceType(sourceType); 192632a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 192732a6e48fSopenharmony_ci ASSERT_EQ(cs->GetSurfaceSourceType(), OH_SURFACE_SOURCE_VIDEO); 192832a6e48fSopenharmony_ci} 192932a6e48fSopenharmony_ci 193032a6e48fSopenharmony_ci/* 193132a6e48fSopenharmony_ci* Function: SetSurfaceSourceType and GetSurfaceSourceType 193232a6e48fSopenharmony_ci* Type: Function 193332a6e48fSopenharmony_ci* Rank: Important(2) 193432a6e48fSopenharmony_ci* EnvConditions: N/A 193532a6e48fSopenharmony_ci* CaseDescription: 1. call SetSurfaceSourceType with nullptr and check ret 193632a6e48fSopenharmony_ci* 2. call GetSurfaceSourceType with nullptr and check ret 193732a6e48fSopenharmony_ci*/ 193832a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, SurfaceSourceType002, Function | MediumTest | Level2) 193932a6e48fSopenharmony_ci{ 194032a6e48fSopenharmony_ci OHSurfaceSource sourceTypeSet = OHSurfaceSource::OH_SURFACE_SOURCE_VIDEO; 194132a6e48fSopenharmony_ci GSError ret = surface_->SetSurfaceSourceType(sourceTypeSet); 194232a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 194332a6e48fSopenharmony_ci OHSurfaceSource sourceTypeGet = surface_->GetSurfaceSourceType(); 194432a6e48fSopenharmony_ci ASSERT_EQ(sourceTypeGet, OHSurfaceSource::OH_SURFACE_SOURCE_DEFAULT); 194532a6e48fSopenharmony_ci} 194632a6e48fSopenharmony_ci 194732a6e48fSopenharmony_ci/* 194832a6e48fSopenharmony_ci* Function: SetSurfaceAppFrameworkType and GetSurfaceAppFrameworkType 194932a6e48fSopenharmony_ci* Type: Function 195032a6e48fSopenharmony_ci* Rank: Important(2) 195132a6e48fSopenharmony_ci* EnvConditions: N/A 195232a6e48fSopenharmony_ci* CaseDescription: 1. call SetSurfaceAppFrameworkType and check ret 195332a6e48fSopenharmony_ci* 2. call GetSurfaceAppFrameworkType and check ret 195432a6e48fSopenharmony_ci*/ 195532a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, SurfaceAppFrameworkType001, Function | MediumTest | Level2) 195632a6e48fSopenharmony_ci{ 195732a6e48fSopenharmony_ci std::string type = "test"; 195832a6e48fSopenharmony_ci GSError ret = cs->SetSurfaceAppFrameworkType(type); 195932a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_OK); 196032a6e48fSopenharmony_ci ASSERT_EQ(cs->GetSurfaceAppFrameworkType(), "test"); 196132a6e48fSopenharmony_ci} 196232a6e48fSopenharmony_ci 196332a6e48fSopenharmony_ci/* 196432a6e48fSopenharmony_ci* Function: SetSurfaceAppFrameworkType and GetSurfaceAppFrameworkType 196532a6e48fSopenharmony_ci* Type: Function 196632a6e48fSopenharmony_ci* Rank: Important(2) 196732a6e48fSopenharmony_ci* EnvConditions: N/A 196832a6e48fSopenharmony_ci* CaseDescription: 1. call SetSurfaceAppFrameworkType with nullptr and check ret 196932a6e48fSopenharmony_ci* 2. call GetSurfaceAppFrameworkType with nullptr and check ret 197032a6e48fSopenharmony_ci*/ 197132a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, SurfaceAppFrameworkType002, Function | MediumTest | Level2) 197232a6e48fSopenharmony_ci{ 197332a6e48fSopenharmony_ci std::string type = "test"; 197432a6e48fSopenharmony_ci GSError ret = surface_->SetSurfaceAppFrameworkType(type); 197532a6e48fSopenharmony_ci ASSERT_EQ(ret, OHOS::GSERROR_INVALID_ARGUMENTS); 197632a6e48fSopenharmony_ci ASSERT_EQ(surface_->GetSurfaceAppFrameworkType(), ""); 197732a6e48fSopenharmony_ci} 197832a6e48fSopenharmony_ci 197932a6e48fSopenharmony_ci/* 198032a6e48fSopenharmony_ci* Function: GetHdrWhitePointBrightness and GetSdrWhitePointBrightness 198132a6e48fSopenharmony_ci* Type: Function 198232a6e48fSopenharmony_ci* Rank: Important(2) 198332a6e48fSopenharmony_ci* EnvConditions: N/A 198432a6e48fSopenharmony_ci* CaseDescription: 1. call GetHdrWhitePointBrightness with nullptr and check ret 198532a6e48fSopenharmony_ci* 2. call GetSdrWhitePointBrightness with nullptr and check ret 198632a6e48fSopenharmony_ci*/ 198732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, WhitePointBrightness001, Function | MediumTest | Level2) 198832a6e48fSopenharmony_ci{ 198932a6e48fSopenharmony_ci float ret = surface_->GetHdrWhitePointBrightness(); 199032a6e48fSopenharmony_ci ASSERT_EQ(static_cast<int32_t>(ret), 0); 199132a6e48fSopenharmony_ci ret = surface_->GetSdrWhitePointBrightness(); 199232a6e48fSopenharmony_ci ASSERT_EQ(static_cast<int32_t>(ret), 0); 199332a6e48fSopenharmony_ci} 199432a6e48fSopenharmony_ci 199532a6e48fSopenharmony_ci/* 199632a6e48fSopenharmony_ci* Function: InvalidParameter 199732a6e48fSopenharmony_ci* Type: Function 199832a6e48fSopenharmony_ci* Rank: Important(2) 199932a6e48fSopenharmony_ci* EnvConditions: N/A 200032a6e48fSopenharmony_ci* CaseDescription: 1. call interface with invaild input nullptr and check ret 200132a6e48fSopenharmony_ci*/ 200232a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, InvalidParameter001, Function | MediumTest | Level2) 200332a6e48fSopenharmony_ci{ 200432a6e48fSopenharmony_ci sptr<OHOS::SurfaceBuffer> sBuffer = nullptr; 200532a6e48fSopenharmony_ci sptr<OHOS::SyncFence> fence = nullptr; 200632a6e48fSopenharmony_ci ASSERT_EQ(surface_->AcquireLastFlushedBuffer(sBuffer, fence, nullptr, 0, false), GSERROR_NOT_SUPPORT); 200732a6e48fSopenharmony_ci ASSERT_EQ(surface_->ReleaseLastFlushedBuffer(sBuffer), GSERROR_NOT_SUPPORT); 200832a6e48fSopenharmony_ci} 200932a6e48fSopenharmony_ci 201032a6e48fSopenharmony_ci/* 201132a6e48fSopenharmony_ci* Function: GetGlobalAlpha 201232a6e48fSopenharmony_ci* Type: Function 201332a6e48fSopenharmony_ci* Rank: Important(2) 201432a6e48fSopenharmony_ci* EnvConditions: N/A 201532a6e48fSopenharmony_ci* CaseDescription: 1. call GetGlobalAlpha and check ret 201632a6e48fSopenharmony_ci*/ 201732a6e48fSopenharmony_ciHWTEST_F(ConsumerSurfaceTest, GetGlobalAlpha001, Function | MediumTest | Level2) 201832a6e48fSopenharmony_ci{ 201932a6e48fSopenharmony_ci int32_t alpha = -1; 202032a6e48fSopenharmony_ci ASSERT_EQ(cs->SetGlobalAlpha(alpha), GSERROR_NOT_SUPPORT); 202132a6e48fSopenharmony_ci ASSERT_EQ(cs->GetGlobalAlpha(alpha), GSERROR_OK); 202232a6e48fSopenharmony_ci} 202332a6e48fSopenharmony_ci} 2024