• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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_COAP_MOCK_H
17 #define DSOFTBUS_COAP_MOCK_H
18 
19 #include "gmock/gmock.h"
20 #include "disc_coap.h"
21 
22 class CoapMockInterface {
23 public:
24     virtual DiscoveryFuncInterface* DiscCoapInit(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 CoapMock : CoapMockInterface {
38 public:
39     static CoapMock* Get();
40 
41     CoapMock();
42     ~CoapMock();
43     void SetupStub();
44 
45     MOCK_METHOD(DiscoveryFuncInterface*, DiscCoapInit, (DiscInnerCallback* callback), (override));
46     MOCK_METHOD(int32_t, Publish, (const PublishOption* option), (override));
47     MOCK_METHOD(int32_t, StartScan, (const PublishOption* option), (override));
48     MOCK_METHOD(int32_t, Unpublish, (const PublishOption* option), (override));
49     MOCK_METHOD(int32_t, StopScan, (const PublishOption* option), (override));
50     MOCK_METHOD(int32_t, StartAdvertise, (const SubscribeOption* option), (override));
51     MOCK_METHOD(int32_t, Subscribe, (const SubscribeOption* option), (override));
52     MOCK_METHOD(int32_t, StopAdvertise, (const SubscribeOption* option), (override));
53     MOCK_METHOD(int32_t, Unsubscribe, (const SubscribeOption* option), (override));
54     MOCK_METHOD(void, LinkStatusChanged, (LinkStatus status, int32_t ifnameIdx), (override));
55     MOCK_METHOD(void, UpdateLocalDeviceInfo, (InfoTypeChanged type), (override));
56 
57 private:
58     static int32_t CoapPublish(const PublishOption *option);
59     static int32_t CoapStartScan(const PublishOption *option);
60     static int32_t CoapUnpublish(const PublishOption *option);
61     static int32_t CoapStopScan(const PublishOption *option);
62     static int32_t CoapStartAdvertise(const SubscribeOption *option);
63     static int32_t CoapSubscribe(const SubscribeOption *option);
64     static int32_t CoapUnsubscribe(const SubscribeOption *option);
65     static int32_t CoapStopAdvertise(const SubscribeOption *option);
66     static void CoapLinkStatusChanged(LinkStatus status, int32_t ifnameIdx);
67     static void CoapUpdateLocalDeviceInfo(InfoTypeChanged type);
68 
69     static inline DiscoveryFuncInterface interface_ = {
70         CoapPublish, CoapStartScan, CoapUnpublish, CoapStopScan,
71         CoapStartAdvertise, CoapSubscribe, CoapUnsubscribe, CoapStopAdvertise,
72         CoapLinkStatusChanged, CoapUpdateLocalDeviceInfo,
73     };
74     static inline CoapMock* instance_;
75     static inline DiscInnerCallback deviceFoundCallback_;
76 };
77 #endif