1 /* 2 * Copyright (c) 2025 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 #ifndef NSTACKX_ADAPTER_MOCK_H 17 #define NSTACKX_ADAPTER_MOCK_H 18 19 #include <atomic> 20 #include <gmock/gmock.h> 21 #include "bus_center_info_key.h" 22 #include "bus_center_manager.h" 23 #include "nstackx.h" 24 25 class AdapterInterface { 26 public: 27 virtual int32_t NSTACKX_Init(const NSTACKX_Parameter *parameter) = 0; 28 virtual int32_t NSTACKX_RegisterCapability(uint32_t capabilityBitmapNum, uint32_t capabilityBitmap[]) = 0; 29 virtual int32_t NSTACKX_SetFilterCapability(uint32_t capabilityBitmapNum, uint32_t capabilityBitmap[]) = 0; 30 virtual int32_t NSTACKX_SendDiscoveryRsp(const NSTACKX_ResponseSettings *responseSettings) = 0; 31 virtual int32_t LnnGetLocalStrInfoByIfnameIdx(InfoKey key, char *info, uint32_t len, int32_t ifIdx) = 0; 32 }; 33 34 class AdapterMock : public AdapterInterface { 35 public: GetMock()36 static AdapterMock* GetMock() 37 { 38 return mock.load(); 39 } 40 41 AdapterMock(); 42 ~AdapterMock(); 43 44 static void InjectDeviceFoundEvent(const NSTACKX_DeviceInfo *deviceInfo, uint32_t deviceCount); 45 46 MOCK_METHOD(int32_t, NSTACKX_Init, (const NSTACKX_Parameter *parameter), (override)); 47 MOCK_METHOD(int32_t, NSTACKX_RegisterCapability, 48 (uint32_t capabilityBitmapNum, uint32_t capabilityBitmap[]), (override)); 49 MOCK_METHOD(int32_t, NSTACKX_SetFilterCapability, 50 (uint32_t capabilityBitmapNum, uint32_t capabilityBitmap[]), (override)); 51 MOCK_METHOD(int32_t, NSTACKX_SendDiscoveryRsp, (const NSTACKX_ResponseSettings *responseSettings), (override)); 52 MOCK_METHOD(int32_t, LnnGetLocalStrInfoByIfnameIdx, 53 (InfoKey key, char *info, uint32_t len, int32_t ifIdx), (override)); 54 55 static int32_t ActionOfNstackInit(const NSTACKX_Parameter *parameter); 56 static int32_t ActionOfLnnGetLocalStrInfoByIfnameIdx(InfoKey key, char *info, uint32_t len, int32_t ifIdx); 57 58 private: 59 static inline std::atomic<AdapterMock*> mock = nullptr; 60 static inline NSTACKX_Parameter deviceFoundCallback_; 61 }; 62 63 #endif