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