Add doxygen comments for resource-encapsulation
[iotivity.git] / service / resource-encapsulation / src / common / utils / include / UnitTestHelperWithFakeOCPlatform.h
1 /******************************************************************
2  *
3  * Copyright 2015 Samsung Electronics All Rights Reserved.
4  *
5  *
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  ******************************************************************/
20
21 #ifndef COMMON_UTIL_UNITTESTHELPERWITHFAKEOCPLATFORM_H
22 #define COMMON_UTIL_UNITTESTHELPERWITHFAKEOCPLATFORM_H
23
24 #include <gtest/gtest.h>
25 #include <HippoMocks/hippomocks.h>
26
27 #include "octypes.h"
28 #include "OCPlatform.h"
29
30 using namespace std;
31 using namespace std::placeholders;
32
33 /**
34  * @class FakeOCPlatform
35  */
36 class FakeOCPlatform
37 {
38 public:
39     /** API is to subscribe the resource presence */
40     virtual OCStackResult subscribePresence(OC::OCPlatform::OCPresenceHandle& a,
41                                             const std::string& b, OCConnectivityType c,
42                                             OC::SubscribeCallback d);
43
44     /** API is to subscribe presence2 */
45     virtual OCStackResult subscribePresence2(OC::OCPlatform::OCPresenceHandle& a,
46                                              const std::string& b, const std::string& c,
47                                              OCConnectivityType d, OC::SubscribeCallback e);
48
49     /** API is to unsubscribe resource presence */
50     virtual OCStackResult unsubscribePresence(OC::OCPlatform::OCPresenceHandle a);
51
52     /** API is to find the resource */
53     virtual OCStackResult findResource(const std::string& a, const std::string& b,
54                                OCConnectivityType c, OC::FindCallback d);
55     /** API is to register the resource */
56     virtual OCStackResult registerResource(OCResourceHandle&, string&, const string&, const string&,
57                OC::EntityHandler, uint8_t ) = 0;
58     /** This method is for unregister resource */
59     virtual OCStackResult unregisterResource(const OCResourceHandle &) = 0;
60
61     /** This method is for send response */
62     virtual OCStackResult sendResponse(const std::shared_ptr<OC::OCResourceResponse>) = 0;
63     /** This method is to bind interface to resource */
64     virtual OCStackResult bindInterfaceToResource(
65             const OCResourceHandle &, const std::string &) = 0;
66     /** This method is to bind the type to resource */
67     virtual OCStackResult bindTypeToResource(const OCResourceHandle &, const std::string &) = 0;
68     /** This method is for bind the resource */
69     virtual OCStackResult bindResource(const OCResourceHandle, const OCResourceHandle) = 0;
70     /** notify all observers */
71     virtual OCStackResult notifyAllObservers(OCResourceHandle) = 0;
72
73     virtual ~FakeOCPlatform() { }
74 };
75
76 extern MockRepository mocks;
77 extern FakeOCPlatform * mockFakePlatform;
78
79 /** namespace */
80 namespace OC
81 {
82     namespace OCPlatform
83     {
84         /** This method is for subscribe the resource presence */
85         OCStackResult subscribePresence(OCPresenceHandle& a, const std::string& b,
86                                         OCConnectivityType c, SubscribeCallback d);
87
88         /** This method is for subscribe presence */
89         OCStackResult subscribePresence(OCPresenceHandle& a, const std::string& b,
90                                         const std::string& c, OCConnectivityType d,
91                                         SubscribeCallback e);
92
93         /** This method is forunsubscribe presence */
94         OCStackResult unsubscribePresence(OCPresenceHandle a);
95
96         /** This method is for find resource */
97         OCStackResult findResource(const std::string& a, const std::string& b,
98                                    OCConnectivityType c, FindCallback d);
99
100         /** This method is for register resource */
101         OCStackResult registerResource(
102                 OCResourceHandle &a, string &b, const string &c,
103                 const string &d, EntityHandler e, uint8_t f);
104
105         /** This method is for unregister resource */
106         OCStackResult unregisterResource(const OCResourceHandle &a);
107
108         /** This method is for bind resource */
109         OCStackResult bindResource(const OCResourceHandle a, const OCResourceHandle b);
110
111         /** This method is for send response */
112         OCStackResult sendResponse(const std::shared_ptr<OCResourceResponse> a);
113
114         /** This method is for bind the type to resource */
115         OCStackResult bindTypeToResource(const OCResourceHandle &a,
116                                 const std::string &b);
117
118         /** This method is for bind the interface to resource */
119         OCStackResult bindInterfaceToResource(const OCResourceHandle &a,
120                                               const std::string &b);
121
122         /** This method is for notify to all observers */
123         OCStackResult notifyAllObservers(OCResourceHandle a);
124     }
125 }
126
127 /**
128  * @class TestWithExternMock
129  */
130 class TestWithExternMock: public testing::Test
131 {
132 protected:
133     virtual ~TestWithExternMock() noexcept(noexcept(std::declval<Test>().~Test())) {}
134
135     virtual void SetUp()
136     {
137         mockFakePlatform = mocks.Mock< FakeOCPlatform >();
138     }
139
140     virtual void TearDown()
141     {
142         mocks.reset();
143     }
144 };
145
146 #endif // COMMON_UTIL_UNITTESTHELPERWITHFAKEOCPLATFORM_H