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 "softbus_ble_mock.h"
17 
18 #include "disc_log.h"
19 #include "softbus_error_code.h"
20 
21 ManagerMock *ManagerMock::managerMock = nullptr;
22 const SoftbusBroadcastCallback *ManagerMock::broadcastCallback = nullptr;
23 const SoftbusScanCallback *ManagerMock::scanCallback = nullptr;
24 
25 static int32_t g_advId = 0;
26 static int32_t g_listenerId = 0;
27 static void ActionOfSoftbusBleAdapterInit(void);
28 
ActionOfSoftBusAddBtStateListener(const SoftBusBtStateListener * listener)29 int ActionOfSoftBusAddBtStateListener(const SoftBusBtStateListener *listener)
30 {
31     return SOFTBUS_OK;
32 }
33 
ActionOfSoftBusRemoveBtStateListener(int listenerId)34 int ActionOfSoftBusRemoveBtStateListener(int listenerId)
35 {
36     return SOFTBUS_OK;
37 }
38 
ManagerMock()39 ManagerMock::ManagerMock()
40 {
41     ManagerMock::managerMock = this;
42     EXPECT_CALL(*this, SoftbusBleAdapterInit).WillRepeatedly(ActionOfSoftbusBleAdapterInit);
43     EXPECT_CALL(*this, SoftBusAddBtStateListener).WillRepeatedly(ActionOfSoftBusAddBtStateListener);
44     EXPECT_CALL(*this, SoftBusRemoveBtStateListener).WillRepeatedly(ActionOfSoftBusRemoveBtStateListener);
45 }
46 
~ManagerMock()47 ManagerMock::~ManagerMock()
48 {
49     ManagerMock::managerMock = nullptr;
50 }
51 
GetMock()52 ManagerMock *ManagerMock::GetMock()
53 {
54     return managerMock;
55 }
56 
SoftbusBleAdapterInit()57 void SoftbusBleAdapterInit()
58 {
59     ManagerMock::GetMock()->SoftbusBleAdapterInit();
60 }
61 
MockInit(void)62 static int32_t MockInit(void)
63 {
64     return SOFTBUS_OK;
65 }
66 
MockDeInit(void)67 static int32_t MockDeInit(void)
68 {
69     return SOFTBUS_OK;
70 }
71 
SoftBusAddBtStateListener(const SoftBusBtStateListener * listener)72 int SoftBusAddBtStateListener(const SoftBusBtStateListener *listener)
73 {
74     return ManagerMock::GetMock()->SoftBusAddBtStateListener(listener);
75 }
76 
SoftBusRemoveBtStateListener(int listenerId)77 int SoftBusRemoveBtStateListener(int listenerId)
78 {
79     return ManagerMock::GetMock()->SoftBusRemoveBtStateListener(listenerId);
80 }
81 
MockRegisterBroadcaster(int32_t * bcId,const SoftbusBroadcastCallback * cb)82 static int32_t MockRegisterBroadcaster(int32_t *bcId, const SoftbusBroadcastCallback *cb)
83 {
84     ManagerMock::broadcastCallback = cb;
85     *bcId = g_advId;
86     g_advId++;
87     return SOFTBUS_OK;
88 }
89 
MockUnRegisterBroadcaster(int32_t bcId)90 static int32_t MockUnRegisterBroadcaster(int32_t bcId)
91 {
92     ManagerMock::broadcastCallback = nullptr;
93     g_advId--;
94     return SOFTBUS_OK;
95 }
96 
MockRegisterScanListener(int32_t * scanerId,const SoftbusScanCallback * cb)97 static int32_t MockRegisterScanListener(int32_t *scanerId, const SoftbusScanCallback *cb)
98 {
99     ManagerMock::scanCallback = cb;
100     *scanerId = g_listenerId;
101     g_listenerId++;
102     return SOFTBUS_OK;
103 }
104 
MockUnRegisterScanListener(int32_t scanerId)105 static int32_t MockUnRegisterScanListener(int32_t scanerId)
106 {
107     ManagerMock::scanCallback = nullptr;
108     g_listenerId--;
109     return SOFTBUS_OK;
110 }
111 
MockStartBroadcasting(int32_t bcId,const SoftbusBroadcastParam * param,const SoftbusBroadcastData * data)112 static int32_t MockStartBroadcasting(int32_t bcId, const SoftbusBroadcastParam *param, const SoftbusBroadcastData *data)
113 {
114     ManagerMock::broadcastCallback->OnStartBroadcastingCallback(bcId, (int32_t)SOFTBUS_BC_STATUS_SUCCESS);
115     return SOFTBUS_OK;
116 }
117 
MockStopBroadcasting(int32_t bcId)118 static int32_t MockStopBroadcasting(int32_t bcId)
119 {
120     ManagerMock::broadcastCallback->OnStopBroadcastingCallback(bcId, (int32_t)SOFTBUS_BC_STATUS_SUCCESS);
121     return SOFTBUS_OK;
122 }
123 
MockSetBroadcastingData(int32_t bcId,const SoftbusBroadcastData * data)124 static int32_t MockSetBroadcastingData(int32_t bcId, const SoftbusBroadcastData *data)
125 {
126     ManagerMock::broadcastCallback->OnSetBroadcastingCallback(bcId, (int32_t)SOFTBUS_BC_STATUS_SUCCESS);
127     return SOFTBUS_OK;
128 }
129 
MockUpdateBroadcasting(int32_t bcId,const SoftbusBroadcastParam * param,const SoftbusBroadcastData * data)130 static int32_t MockUpdateBroadcasting(int32_t bcId, const SoftbusBroadcastParam *param,
131     const SoftbusBroadcastData *data)
132 {
133     ManagerMock::broadcastCallback->OnUpdateBroadcastingCallback(bcId, (int32_t)SOFTBUS_BC_STATUS_SUCCESS);
134     return SOFTBUS_OK;
135 }
136 
MockStartScan(int32_t scanerId,const SoftBusBcScanParams * param,const SoftBusBcScanFilter * scanFilter,int32_t filterSize)137 static int32_t MockStartScan(int32_t scanerId, const SoftBusBcScanParams *param, const SoftBusBcScanFilter *scanFilter,
138     int32_t filterSize)
139 {
140     return SOFTBUS_OK;
141 }
142 
MockStopScan(int32_t scanerId)143 static int32_t MockStopScan(int32_t scanerId)
144 {
145     return SOFTBUS_OK;
146 }
147 
MockIsLpDeviceAvailable(void)148 static bool MockIsLpDeviceAvailable(void)
149 {
150     return true;
151 }
152 
MockSetAdvFilterParam(LpServerType type,const SoftBusLpBroadcastParam * bcParam,const SoftBusLpScanParam * scanParam)153 static bool MockSetAdvFilterParam(LpServerType type,
154     const SoftBusLpBroadcastParam *bcParam, const SoftBusLpScanParam *scanParam)
155 {
156     return SOFTBUS_OK;
157 }
158 
MockGetBroadcastHandle(int32_t bcId,int32_t * bcHandle)159 static int32_t MockGetBroadcastHandle(int32_t bcId, int32_t *bcHandle)
160 {
161     return SOFTBUS_OK;
162 }
163 
MockEnableSyncDataToLpDevice(void)164 static int32_t MockEnableSyncDataToLpDevice(void)
165 {
166     return SOFTBUS_OK;
167 }
168 
MockDisableSyncDataToLpDevice(void)169 static int32_t MockDisableSyncDataToLpDevice(void)
170 {
171     return SOFTBUS_OK;
172 }
173 
MockSetScanReportChannelToLpDevice(int32_t scannerId,bool enable)174 static int32_t MockSetScanReportChannelToLpDevice(int32_t scannerId, bool enable)
175 {
176     return SOFTBUS_OK;
177 }
178 
MockSetLpDeviceParam(int32_t duration,int32_t maxExtAdvEvents,int32_t window,int32_t interval,int32_t bcHandle)179 static int32_t MockSetLpDeviceParam(int32_t duration, int32_t maxExtAdvEvents, int32_t window,
180     int32_t interval, int32_t bcHandle)
181 {
182     return SOFTBUS_OK;
183 }
184 
ActionOfSoftbusBleAdapterInit()185 static void ActionOfSoftbusBleAdapterInit()
186 {
187     DISC_LOGI(DISC_TEST, "enter");
188     static SoftbusBroadcastMediumInterface interface = {
189         .Init = MockInit,
190         .DeInit = MockDeInit,
191         .RegisterBroadcaster = MockRegisterBroadcaster,
192         .UnRegisterBroadcaster = MockUnRegisterBroadcaster,
193         .RegisterScanListener = MockRegisterScanListener,
194         .UnRegisterScanListener = MockUnRegisterScanListener,
195         .StartBroadcasting = MockStartBroadcasting,
196         .StopBroadcasting = MockStopBroadcasting,
197         .SetBroadcastingData = MockSetBroadcastingData,
198         .UpdateBroadcasting = MockUpdateBroadcasting,
199         .StartScan = MockStartScan,
200         .StopScan = MockStopScan,
201         .IsLpDeviceAvailable = MockIsLpDeviceAvailable,
202         .SetAdvFilterParam = MockSetAdvFilterParam,
203         .GetBroadcastHandle = MockGetBroadcastHandle,
204         .EnableSyncDataToLpDevice  = MockEnableSyncDataToLpDevice,
205         .DisableSyncDataToLpDevice = MockDisableSyncDataToLpDevice,
206         .SetScanReportChannelToLpDevice = MockSetScanReportChannelToLpDevice,
207         .SetLpDeviceParam = MockSetLpDeviceParam,
208     };
209     if (RegisterBroadcastMediumFunction(BROADCAST_MEDIUM_TYPE_BLE, &interface) != 0) {
210         DISC_LOGE(DISC_TEST, "Register gatt interface failed.");
211     }
212 }
213 
SoftbusBleAdapterDeInit(void)214 void SoftbusBleAdapterDeInit(void)
215 {
216     DISC_LOGI(DISC_TEST, "enter");
217 }
218