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 #ifndef DSOFTBUS_USB_MOCK_H 17 #define DSOFTBUS_USB_MOCK_H 18 19 #include "gmock/gmock.h" 20 #include "disc_usb_dispatcher.h" 21 22 class UsbMockInterface { 23 public: 24 virtual DiscoveryFuncInterface* DiscUsbDispatcherInit(DiscInnerCallback *callback) = 0; 25 virtual int32_t Publish(const PublishOption *option) = 0; 26 virtual int32_t StartScan(const PublishOption *option) = 0; 27 virtual int32_t Unpublish(const PublishOption *option) = 0; 28 virtual int32_t StopScan(const PublishOption *option) = 0; 29 virtual int32_t StartAdvertise(const SubscribeOption *option) = 0; 30 virtual int32_t Subscribe(const SubscribeOption *option) = 0; 31 virtual int32_t Unsubscribe(const SubscribeOption *option) = 0; 32 virtual int32_t StopAdvertise(const SubscribeOption *option) = 0; 33 virtual void LinkStatusChanged(LinkStatus status, int32_t ifnameIdx) = 0; 34 virtual void UpdateLocalDeviceInfo(InfoTypeChanged type) = 0; 35 }; 36 37 class UsbMock : UsbMockInterface { 38 public: 39 static UsbMock* Get(); 40 static void InjectDeviceFoundEvent(const DeviceInfo *device); 41 42 UsbMock(); 43 ~UsbMock(); 44 void SetupStub(); 45 46 MOCK_METHOD(DiscoveryFuncInterface*, DiscUsbDispatcherInit, (DiscInnerCallback* callback), (override)); 47 MOCK_METHOD(int32_t, Publish, (const PublishOption* option), (override)); 48 MOCK_METHOD(int32_t, StartScan, (const PublishOption* option), (override)); 49 MOCK_METHOD(int32_t, Unpublish, (const PublishOption* option), (override)); 50 MOCK_METHOD(int32_t, StopScan, (const PublishOption* option), (override)); 51 MOCK_METHOD(int32_t, StartAdvertise, (const SubscribeOption* option), (override)); 52 MOCK_METHOD(int32_t, Subscribe, (const SubscribeOption* option), (override)); 53 MOCK_METHOD(int32_t, StopAdvertise, (const SubscribeOption* option), (override)); 54 MOCK_METHOD(int32_t, Unsubscribe, (const SubscribeOption* option), (override)); 55 MOCK_METHOD(void, LinkStatusChanged, (LinkStatus status, int32_t ifnameIdx), (override)); 56 MOCK_METHOD(void, UpdateLocalDeviceInfo, (InfoTypeChanged type), (override)); 57 58 static inline bool callLnnStatus = false; 59 60 private: 61 static int32_t UsbPublish(const PublishOption *option); 62 static int32_t UsbStartScan(const PublishOption *option); 63 static int32_t UsbUnpublish(const PublishOption *option); 64 static int32_t UsbStopScan(const PublishOption *option); 65 static int32_t UsbStartAdvertise(const SubscribeOption *option); 66 static int32_t UsbSubscribe(const SubscribeOption *option); 67 static int32_t UsbUnsubscribe(const SubscribeOption *option); 68 static int32_t UsbStopAdvertise(const SubscribeOption *option); 69 static void UsbLinkStatusChanged(LinkStatus status, int32_t ifnameIdx); 70 static void UsbUpdateLocalDeviceInfo(InfoTypeChanged type); 71 72 static inline DiscoveryFuncInterface interface_ = { 73 UsbPublish, UsbStartScan, UsbUnpublish, UsbStopScan, 74 UsbStartAdvertise, UsbSubscribe, UsbUnsubscribe, UsbStopAdvertise, 75 UsbLinkStatusChanged, UsbUpdateLocalDeviceInfo, 76 }; 77 static inline UsbMock* instance_; 78 static inline DiscInnerCallback deviceFoundCallback_; 79 }; 80 #endif