• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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