14d949f91Sopenharmony_ci/*
24d949f91Sopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd.
34d949f91Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44d949f91Sopenharmony_ci * you may not use this file except in compliance with the License.
54d949f91Sopenharmony_ci * You may obtain a copy of the License at
64d949f91Sopenharmony_ci *
74d949f91Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84d949f91Sopenharmony_ci *
94d949f91Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104d949f91Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114d949f91Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124d949f91Sopenharmony_ci * See the License for the specific language governing permissions and
134d949f91Sopenharmony_ci * limitations under the License.
144d949f91Sopenharmony_ci */
154d949f91Sopenharmony_ci
164d949f91Sopenharmony_ci#include "gtest/gtest.h"
174d949f91Sopenharmony_ci
184d949f91Sopenharmony_ci#include "effect_memory.h"
194d949f91Sopenharmony_ci
204d949f91Sopenharmony_ciusing namespace testing::ext;
214d949f91Sopenharmony_ci
224d949f91Sopenharmony_cinamespace OHOS {
234d949f91Sopenharmony_cinamespace Media {
244d949f91Sopenharmony_cinamespace Effect {
254d949f91Sopenharmony_cinamespace Test {
264d949f91Sopenharmony_ci
274d949f91Sopenharmony_ciconstexpr int BUFFER_SIZE = 1024;
284d949f91Sopenharmony_ci
294d949f91Sopenharmony_ciconstexpr uint32_t WIDTH = 1920;
304d949f91Sopenharmony_ciconstexpr uint32_t HEIGHT = 1080;
314d949f91Sopenharmony_ciconstexpr IEffectFormat FORMATE_TYPE = IEffectFormat::RGBA8888;
324d949f91Sopenharmony_ciconstexpr uint32_t ROW_STRIDE = WIDTH * 4;
334d949f91Sopenharmony_ciconstexpr uint32_t LEN = ROW_STRIDE * HEIGHT;
344d949f91Sopenharmony_ci
354d949f91Sopenharmony_ciclass TestEffectMemoryManager : public testing::Test {
364d949f91Sopenharmony_cipublic:
374d949f91Sopenharmony_ci    TestEffectMemoryManager() = default;
384d949f91Sopenharmony_ci
394d949f91Sopenharmony_ci    ~TestEffectMemoryManager() override = default;
404d949f91Sopenharmony_ci    static void SetUpTestCase() {}
414d949f91Sopenharmony_ci
424d949f91Sopenharmony_ci    static void TearDownTestCase() {}
434d949f91Sopenharmony_ci
444d949f91Sopenharmony_ci    void SetUp() override
454d949f91Sopenharmony_ci    {
464d949f91Sopenharmony_ci        buffer = malloc(BUFFER_SIZE);
474d949f91Sopenharmony_ci        std::shared_ptr<HeapMemoryData> memoryData = std::make_unique<HeapMemoryData>();
484d949f91Sopenharmony_ci        memoryData->data = buffer;
494d949f91Sopenharmony_ci        memoryData_ = memoryData;
504d949f91Sopenharmony_ci    }
514d949f91Sopenharmony_ci
524d949f91Sopenharmony_ci    void TearDown() override
534d949f91Sopenharmony_ci    {
544d949f91Sopenharmony_ci        memoryData_ = nullptr;
554d949f91Sopenharmony_ci        free(buffer);
564d949f91Sopenharmony_ci        buffer = nullptr;
574d949f91Sopenharmony_ci    }
584d949f91Sopenharmony_ci
594d949f91Sopenharmony_ci    void *buffer = nullptr;
604d949f91Sopenharmony_ci    std::shared_ptr<HeapMemoryData> memoryData_;
614d949f91Sopenharmony_ci};
624d949f91Sopenharmony_ci
634d949f91Sopenharmony_ciHWTEST_F(TestEffectMemoryManager, TestEffectMemoryManager001, TestSize.Level1) {
644d949f91Sopenharmony_ci
654d949f91Sopenharmony_ci    std::unique_ptr<HeapMemory> heapMemory = std::make_unique<HeapMemory>();
664d949f91Sopenharmony_ci    ErrorCode result = heapMemory->Release();
674d949f91Sopenharmony_ci    ASSERT_NE(result, ErrorCode::SUCCESS);
684d949f91Sopenharmony_ci
694d949f91Sopenharmony_ci    MemoryInfo memoryInfo;
704d949f91Sopenharmony_ci    memoryInfo.bufferInfo.width_ = WIDTH;
714d949f91Sopenharmony_ci    memoryInfo.bufferInfo.height_ = HEIGHT;
724d949f91Sopenharmony_ci    memoryInfo.bufferInfo.len_ = LEN;
734d949f91Sopenharmony_ci    memoryInfo.bufferInfo.rowStride_ = ROW_STRIDE;
744d949f91Sopenharmony_ci    memoryInfo.bufferInfo.formatType_ = FORMATE_TYPE;
754d949f91Sopenharmony_ci
764d949f91Sopenharmony_ci    std::shared_ptr<MemoryData> memoryData = heapMemory->Alloc(memoryInfo);
774d949f91Sopenharmony_ci    ASSERT_NE(memoryData, nullptr);
784d949f91Sopenharmony_ci    result = heapMemory->Release();
794d949f91Sopenharmony_ci    ASSERT_EQ(result, ErrorCode::SUCCESS);
804d949f91Sopenharmony_ci
814d949f91Sopenharmony_ci    std::shared_ptr<DmaMemory> dmaMemory = std::make_shared<DmaMemory>();
824d949f91Sopenharmony_ci    result = dmaMemory->Release();
834d949f91Sopenharmony_ci    ASSERT_NE(result, ErrorCode::SUCCESS);
844d949f91Sopenharmony_ci
854d949f91Sopenharmony_ci    memoryData = dmaMemory->Alloc(memoryInfo);
864d949f91Sopenharmony_ci    ASSERT_NE(memoryData, nullptr);
874d949f91Sopenharmony_ci    result = dmaMemory->Release();
884d949f91Sopenharmony_ci    ASSERT_EQ(result, ErrorCode::SUCCESS);
894d949f91Sopenharmony_ci
904d949f91Sopenharmony_ci    std::shared_ptr<SharedMemory> sharedMemory = std::make_shared<SharedMemory>();
914d949f91Sopenharmony_ci    result = sharedMemory->Release();
924d949f91Sopenharmony_ci    ASSERT_NE(result, ErrorCode::SUCCESS);
934d949f91Sopenharmony_ci
944d949f91Sopenharmony_ci    memoryData = sharedMemory->Alloc(memoryInfo);
954d949f91Sopenharmony_ci    ASSERT_NE(memoryData, nullptr);
964d949f91Sopenharmony_ci    result = sharedMemory->Release();
974d949f91Sopenharmony_ci    ASSERT_EQ(result, ErrorCode::SUCCESS);
984d949f91Sopenharmony_ci
994d949f91Sopenharmony_ci    EffectMemory *effectMemory = new EffectMemory();
1004d949f91Sopenharmony_ci    BufferType bufferType = BufferType::SHARED_MEMORY;
1014d949f91Sopenharmony_ci    std::unique_ptr<AbsMemory> absMemory = effectMemory->CreateMemory(bufferType);
1024d949f91Sopenharmony_ci    ASSERT_NE(absMemory, nullptr);
1034d949f91Sopenharmony_ci    bufferType = BufferType::DEFAULT;
1044d949f91Sopenharmony_ci    absMemory = effectMemory->CreateMemory(bufferType);
1054d949f91Sopenharmony_ci    ASSERT_EQ(absMemory, nullptr);
1064d949f91Sopenharmony_ci}
1074d949f91Sopenharmony_ci}
1084d949f91Sopenharmony_ci}
1094d949f91Sopenharmony_ci}
1104d949f91Sopenharmony_ci}