1 /* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #include "edm_errors.h" 17 #include "hilog_wrapper.h" 18 #include "ddk_api.h" 19 #include "ddk_types.h" 20 #include "gtest/gtest.h" 21 22 using namespace testing::ext; 23 24 #define PARAM_0 0 25 #define BUFF_LENTH 10 26 #define PORT_READ 0x01 27 #define PORT_WRITE 0x02 28 #define PORT_ILLEGAL 0x08 29 30 namespace OHOS { 31 namespace ExternalDeviceManager { 32 33 class DdkBaseTest : public testing::Test { 34 public: SetUp()35 void SetUp() override 36 { 37 EDM_LOGD(MODULE_BASE_DDK, "DdkBaseTest SetUp"); 38 } TearDown()39 void TearDown() override 40 { 41 EDM_LOGD(MODULE_BASE_DDK, "DdkBaseTest TearDown"); 42 } 43 }; 44 45 HWTEST_F(DdkBaseTest, OH_DDK_CreateAshmem_001, TestSize.Level1) 46 { 47 DDK_Ashmem *ashmem = nullptr; 48 const uint8_t name[100] = "TestAshmem"; 49 int32_t bufferLen = BUFF_LENTH; 50 auto ret = OH_DDK_CreateAshmem(name, bufferLen, &ashmem); 51 EXPECT_EQ(ret, 0); 52 } 53 54 HWTEST_F(DdkBaseTest, OH_DDK_CreateAshmem_002, TestSize.Level1) 55 { 56 DDK_Ashmem *ashmem = nullptr; 57 const uint8_t name[100] = "TestAshmem"; 58 uint32_t bufferLen = PARAM_0; 59 auto ret = OH_DDK_CreateAshmem(name, bufferLen, &ashmem); 60 EXPECT_EQ(ret, DDK_INVALID_PARAMETER); 61 } 62 63 HWTEST_F(DdkBaseTest, OH_DDK_CreateAshmem_003, TestSize.Level1) 64 { 65 DDK_Ashmem *ashmem = nullptr; 66 const uint8_t *name = nullptr; 67 uint32_t bufferLen = BUFF_LENTH; 68 auto ret = OH_DDK_CreateAshmem(name, bufferLen, &ashmem); 69 EXPECT_EQ(ret, DDK_INVALID_PARAMETER); 70 } 71 72 HWTEST_F(DdkBaseTest, OH_DDK_MapAshmem_001, TestSize.Level1) 73 { 74 DDK_Ashmem *ashmem = nullptr; 75 const uint8_t name[100] = "TestAshmem"; 76 uint32_t bufferLen = BUFF_LENTH; 77 auto ret = OH_DDK_CreateAshmem(name, bufferLen, &ashmem); 78 EXPECT_EQ(ret, DDK_SUCCESS); 79 const uint8_t ashmemMapType = PORT_READ | PORT_WRITE; 80 ret = OH_DDK_MapAshmem(ashmem, ashmemMapType); 81 EXPECT_EQ(ret, DDK_SUCCESS); 82 } 83 84 HWTEST_F(DdkBaseTest, OH_DDK_MapAshmem_002, TestSize.Level1) 85 { 86 const uint8_t ashmemMapType = PORT_READ | PORT_WRITE; 87 auto ret = OH_DDK_MapAshmem(nullptr, ashmemMapType); 88 EXPECT_EQ(ret, DDK_NULL_PTR); 89 } 90 91 HWTEST_F(DdkBaseTest, OH_DDK_MapAshmem_003, TestSize.Level1) 92 { 93 DDK_Ashmem *ashmem = nullptr; 94 const uint8_t name[100] = "TestAshmem"; 95 uint32_t bufferLen = BUFF_LENTH; 96 auto ret = OH_DDK_CreateAshmem(name, bufferLen, &ashmem); 97 EXPECT_EQ(ret, DDK_SUCCESS); 98 const uint8_t ashmemMapType = PORT_READ | PORT_WRITE; 99 ashmem->ashmemFd = 0; 100 ret = OH_DDK_MapAshmem(ashmem, ashmemMapType); 101 EXPECT_EQ(ret, DDK_FAILURE); 102 } 103 104 HWTEST_F(DdkBaseTest, OH_DDK_MapAshmem_004, TestSize.Level1) 105 { 106 DDK_Ashmem *ashmem = nullptr; 107 const uint8_t name[100] = "TestAshmem"; 108 uint32_t bufferLen = BUFF_LENTH; 109 auto ret = OH_DDK_CreateAshmem(name, bufferLen, &ashmem); 110 EXPECT_EQ(ret, DDK_SUCCESS); 111 const uint8_t ashmemMapType = PORT_ILLEGAL; 112 ret = OH_DDK_MapAshmem(ashmem, ashmemMapType); 113 EXPECT_EQ(ret, DDK_INVALID_OPERATION); 114 } 115 116 HWTEST_F(DdkBaseTest, OH_DDK_UnMapAshmem_001, TestSize.Level1) 117 { 118 DDK_Ashmem *ashmem = nullptr; 119 const uint8_t name[100] = "TestAshmem"; 120 uint32_t bufferLen = BUFF_LENTH; 121 auto ret = OH_DDK_CreateAshmem(name, bufferLen, &ashmem); 122 EXPECT_EQ(ret, DDK_SUCCESS); 123 const uint8_t ashmemMapType = PORT_READ | PORT_WRITE; 124 ret = OH_DDK_MapAshmem(ashmem, ashmemMapType); 125 EXPECT_EQ(ret, DDK_SUCCESS); 126 ret = OH_DDK_UnmapAshmem(ashmem); 127 EXPECT_EQ(ret, DDK_SUCCESS); 128 } 129 130 HWTEST_F(DdkBaseTest, OH_DDK_UnMapAshmem_002, TestSize.Level1) 131 { 132 DDK_Ashmem *ashmem = nullptr; 133 const uint8_t name[100] = "TestAshmem"; 134 uint32_t bufferLen = BUFF_LENTH; 135 auto ret = OH_DDK_CreateAshmem(name, bufferLen, &ashmem); 136 EXPECT_EQ(ret, DDK_SUCCESS); 137 const uint8_t ashmemMapType = PORT_READ | PORT_WRITE; 138 ret = OH_DDK_MapAshmem(ashmem, ashmemMapType); 139 EXPECT_EQ(ret, DDK_SUCCESS); 140 ret = OH_DDK_UnmapAshmem(nullptr); 141 EXPECT_EQ(ret, DDK_NULL_PTR); 142 } 143 144 145 HWTEST_F(DdkBaseTest, OH_DDK_DestroyAshmem_001, TestSize.Level1) 146 { 147 DDK_Ashmem *ashmem = nullptr; 148 const uint8_t name[100] = "TestAshmem"; 149 uint32_t bufferLen = BUFF_LENTH; 150 auto ret = OH_DDK_CreateAshmem(name, bufferLen, &ashmem); 151 EXPECT_EQ(ret, DDK_SUCCESS); 152 const uint8_t ashmemMapType = PORT_READ | PORT_WRITE; 153 ret = OH_DDK_MapAshmem(ashmem, ashmemMapType); 154 EXPECT_EQ(ret, DDK_SUCCESS); 155 ret = OH_DDK_DestroyAshmem(ashmem); 156 EXPECT_EQ(ret, DDK_SUCCESS); 157 } 158 159 HWTEST_F(DdkBaseTest, OH_DDK_DestroyAshmem_002, TestSize.Level1) 160 { 161 DDK_Ashmem *ashmem = nullptr; 162 const uint8_t name[100] = "TestAshmem"; 163 uint32_t bufferLen = BUFF_LENTH; 164 auto ret = OH_DDK_CreateAshmem(name, bufferLen, &ashmem); 165 EXPECT_EQ(ret, DDK_SUCCESS); 166 const uint8_t ashmemMapType = PORT_READ | PORT_WRITE; 167 ret = OH_DDK_MapAshmem(ashmem, ashmemMapType); 168 EXPECT_EQ(ret, DDK_SUCCESS); 169 ret = OH_DDK_DestroyAshmem(nullptr); 170 EXPECT_EQ(ret, DDK_NULL_PTR); 171 } 172 } // ExternalDeviceManager 173 } // OHOS 174