RTC Toolkit 5.0.0
Loading...
Searching...
No Matches
mockRuntimeRepoIf.hpp
Go to the documentation of this file.
1
13#ifndef RTCTK_COMPONENTFRAMEWORK_TEST_MOCKRUNTIMEREPOIF_HPP
14#define RTCTK_COMPONENTFRAMEWORK_TEST_MOCKRUNTIMEREPOIF_HPP
15
18
19#include <gmock/gmock.h>
20#include <gtest/gtest.h>
21
23
29class MockRuntimeRepoIf : virtual public RuntimeRepoIf, virtual public FakeRepositorySubscriber {
30public:
32 // Setup the default behaviour to forward the calls to the fake repository.
33 using testing::A;
35 .WillByDefault([this](const DataPointPath& path, const std::type_info& type) {
37 });
38 ON_CALL(*this,
41 .WillByDefault([this](const DataPointPath& path,
42 const std::type_info& type,
43 const std::string& server_alias) {
45 });
46 ON_CALL(*this, DeleteDataPointLegacy).WillByDefault([this](const DataPointPath& path) {
48 });
50 .WillByDefault([this](const DataPointPath& path) -> const std::type_info& {
52 });
53 ON_CALL(*this, GetDataPointSizeLegacy).WillByDefault([this](const DataPointPath& path) {
55 });
56 ON_CALL(*this, DataPointExistsLegacy).WillByDefault([this](const DataPointPath& path) {
58 });
59 ON_CALL(*this, GetChildrenLegacy).WillByDefault([this](const DataPointPath& path) {
61 });
62 ON_CALL(*this, SendReadRequest).WillByDefault([this](const ReadRequest& request) {
64 });
65 ON_CALL(*this, SendWriteRequest).WillByDefault([this](const WriteRequest& request) {
67 });
68 ON_CALL(*this, SendSubscribeRequest).WillByDefault([this](const SubscribeRequest& request) {
70 });
72 .WillByDefault([this](const UnsubscribeRequest& request) {
74 });
75 ON_CALL(*this, GetServerAlias).WillByDefault([this](const DataPointPath& path) {
77 });
78 }
79
81
82 MOCK_METHOD(void, CreateDataPoint, (const DataPointPath&, const std::type_info&), (override));
85 (const DataPointPath&, const std::type_info&, const std::string&),
86 (override));
87 MOCK_METHOD(void, DeleteDataPointLegacy, (const DataPointPath&), (override));
88 MOCK_METHOD(const std::type_info&,
90 (const DataPointPath&),
91 (const override));
92 MOCK_METHOD(std::size_t, GetDataPointSizeLegacy, (const DataPointPath&), (const override));
93 MOCK_METHOD(bool, DataPointExistsLegacy, (const DataPointPath&), (const override));
94 MOCK_METHOD((std::pair<PathList, PathList>),
96 (const DataPointPath&),
97 (const override));
98 MOCK_METHOD(Response, SendReadRequest, (const ReadRequest&), (const override));
102 MOCK_METHOD(std::string, GetServerAlias, (const DataPointPath&), (const override));
103
111
112protected:
114 for (const auto& request : requests) {
115 if (request.type() == typeid(detail::CreateRequest<std::byte>)) {
116 const auto& req = std::any_cast<const detail::CreateRequest<std::byte>&>(request);
117 CreateDataPointRequest(req.path);
118 } else if (request.type() == typeid(detail::CreateRequest<char>)) {
119 const auto& req = std::any_cast<const detail::CreateRequest<char>&>(request);
120 CreateDataPointRequest(req.path);
121 } else if (request.type() == typeid(detail::CreateRequest<RtcBool>)) {
122 const auto& req = std::any_cast<const detail::CreateRequest<RtcBool>&>(request);
123 CreateDataPointRequest(req.path);
124 } else if (request.type() == typeid(detail::CreateRequest<RtcInt8>)) {
125 const auto& req = std::any_cast<const detail::CreateRequest<RtcInt8>&>(request);
126 CreateDataPointRequest(req.path);
127 } else if (request.type() == typeid(detail::CreateRequest<RtcInt16>)) {
128 const auto& req = std::any_cast<const detail::CreateRequest<RtcInt16>&>(request);
129 CreateDataPointRequest(req.path);
130 } else if (request.type() == typeid(detail::CreateRequest<RtcInt32>)) {
131 const auto& req = std::any_cast<const detail::CreateRequest<RtcInt32>&>(request);
132 CreateDataPointRequest(req.path);
133 } else if (request.type() == typeid(detail::CreateRequest<RtcInt64>)) {
134 const auto& req = std::any_cast<const detail::CreateRequest<RtcInt64>&>(request);
135 CreateDataPointRequest(req.path);
136 } else if (request.type() == typeid(detail::CreateRequest<RtcUInt8>)) {
137 const auto& req = std::any_cast<const detail::CreateRequest<RtcUInt8>&>(request);
138 CreateDataPointRequest(req.path);
139 } else if (request.type() == typeid(detail::CreateRequest<RtcUInt16>)) {
140 const auto& req = std::any_cast<const detail::CreateRequest<RtcUInt16>&>(request);
141 CreateDataPointRequest(req.path);
142 } else if (request.type() == typeid(detail::CreateRequest<RtcUInt32>)) {
143 const auto& req = std::any_cast<const detail::CreateRequest<RtcUInt32>&>(request);
144 CreateDataPointRequest(req.path);
145 } else if (request.type() == typeid(detail::CreateRequest<RtcUInt64>)) {
146 const auto& req = std::any_cast<const detail::CreateRequest<RtcUInt64>&>(request);
147 CreateDataPointRequest(req.path);
148 } else if (request.type() == typeid(detail::CreateRequest<RtcFloat>)) {
149 const auto& req = std::any_cast<const detail::CreateRequest<RtcFloat>&>(request);
150 CreateDataPointRequest(req.path);
151 } else if (request.type() == typeid(detail::CreateRequest<RtcDouble>)) {
152 const auto& req = std::any_cast<const detail::CreateRequest<RtcDouble>&>(request);
153 CreateDataPointRequest(req.path);
154 } else if (request.type() == typeid(detail::CreateRequest<RtcString>)) {
155 const auto& req = std::any_cast<const detail::CreateRequest<RtcString>&>(request);
156 CreateDataPointRequest(req.path);
157 } else if (request.type() == typeid(detail::DeleteRequest)) {
158 const auto& req = std::any_cast<const detail::DeleteRequest&>(request);
159 DeleteDataPointRequest(req.path);
160 } else if (request.type() == typeid(detail::ReadMetaDataRequest)) {
161 const auto& req = std::any_cast<const detail::ReadMetaDataRequest&>(request);
162 GetDataPointTypeRequest(req.path);
163 GetDataPointSizeRequest(req.path);
164 } else if (request.type() == typeid(detail::ExistsRequest)) {
165 const auto& req = std::any_cast<const detail::ExistsRequest&>(request);
166 DataPointExistsRequest(req.path);
167 } else if (request.type() == typeid(detail::ReadRequest<std::byte>)) {
168 const auto& req = std::any_cast<const detail::ReadRequest<std::byte>&>(request);
169 ReceivedReadRequest(req.path);
170 } else if (request.type() == typeid(detail::ReadRequest<char>)) {
171 const auto& req = std::any_cast<const detail::ReadRequest<char>&>(request);
172 ReceivedReadRequest(req.path);
173 } else if (request.type() == typeid(detail::ReadRequest<RtcBool>)) {
174 const auto& req = std::any_cast<const detail::ReadRequest<RtcBool>&>(request);
175 ReceivedReadRequest(req.path);
176 } else if (request.type() == typeid(detail::ReadRequest<RtcInt8>)) {
177 const auto& req = std::any_cast<const detail::ReadRequest<RtcInt8>&>(request);
178 ReceivedReadRequest(req.path);
179 } else if (request.type() == typeid(detail::ReadRequest<RtcInt16>)) {
180 const auto& req = std::any_cast<const detail::ReadRequest<RtcInt16>&>(request);
181 ReceivedReadRequest(req.path);
182 } else if (request.type() == typeid(detail::ReadRequest<RtcInt32>)) {
183 const auto& req = std::any_cast<const detail::ReadRequest<RtcInt32>&>(request);
184 ReceivedReadRequest(req.path);
185 } else if (request.type() == typeid(detail::ReadRequest<RtcInt64>)) {
186 const auto& req = std::any_cast<const detail::ReadRequest<RtcInt64>&>(request);
187 ReceivedReadRequest(req.path);
188 } else if (request.type() == typeid(detail::ReadRequest<RtcUInt8>)) {
189 const auto& req = std::any_cast<const detail::ReadRequest<RtcUInt8>&>(request);
190 ReceivedReadRequest(req.path);
191 } else if (request.type() == typeid(detail::ReadRequest<RtcUInt16>)) {
192 const auto& req = std::any_cast<const detail::ReadRequest<RtcUInt16>&>(request);
193 ReceivedReadRequest(req.path);
194 } else if (request.type() == typeid(detail::ReadRequest<RtcUInt32>)) {
195 const auto& req = std::any_cast<const detail::ReadRequest<RtcUInt32>&>(request);
196 ReceivedReadRequest(req.path);
197 } else if (request.type() == typeid(detail::ReadRequest<RtcUInt64>)) {
198 const auto& req = std::any_cast<const detail::ReadRequest<RtcUInt64>&>(request);
199 ReceivedReadRequest(req.path);
200 } else if (request.type() == typeid(detail::ReadRequest<RtcFloat>)) {
201 const auto& req = std::any_cast<const detail::ReadRequest<RtcFloat>&>(request);
202 ReceivedReadRequest(req.path);
203 } else if (request.type() == typeid(detail::ReadRequest<RtcDouble>)) {
204 const auto& req = std::any_cast<const detail::ReadRequest<RtcDouble>&>(request);
205 ReceivedReadRequest(req.path);
206 } else if (request.type() == typeid(detail::ReadRequest<RtcString>)) {
207 const auto& req = std::any_cast<const detail::ReadRequest<RtcString>&>(request);
208 ReceivedReadRequest(req.path);
209 } else if (request.type() == typeid(detail::WriteRequest<std::byte>)) {
210 const auto& req = std::any_cast<const detail::WriteRequest<std::byte>&>(request);
211 ReceivedWriteRequest(req.path);
212 } else if (request.type() == typeid(detail::WriteRequest<char>)) {
213 const auto& req = std::any_cast<const detail::WriteRequest<char>&>(request);
214 ReceivedWriteRequest(req.path);
215 } else if (request.type() == typeid(detail::WriteRequest<RtcBool>)) {
216 const auto& req = std::any_cast<const detail::WriteRequest<RtcBool>&>(request);
217 ReceivedWriteRequest(req.path);
218 } else if (request.type() == typeid(detail::WriteRequest<RtcInt8>)) {
219 const auto& req = std::any_cast<const detail::WriteRequest<RtcInt8>&>(request);
220 ReceivedWriteRequest(req.path);
221 } else if (request.type() == typeid(detail::WriteRequest<RtcInt16>)) {
222 const auto& req = std::any_cast<const detail::WriteRequest<RtcInt16>&>(request);
223 ReceivedWriteRequest(req.path);
224 } else if (request.type() == typeid(detail::WriteRequest<RtcInt32>)) {
225 const auto& req = std::any_cast<const detail::WriteRequest<RtcInt32>&>(request);
226 ReceivedWriteRequest(req.path);
227 } else if (request.type() == typeid(detail::WriteRequest<RtcInt64>)) {
228 const auto& req = std::any_cast<const detail::WriteRequest<RtcInt64>&>(request);
229 ReceivedWriteRequest(req.path);
230 } else if (request.type() == typeid(detail::WriteRequest<RtcUInt8>)) {
231 const auto& req = std::any_cast<const detail::WriteRequest<RtcUInt8>&>(request);
232 ReceivedWriteRequest(req.path);
233 } else if (request.type() == typeid(detail::WriteRequest<RtcUInt16>)) {
234 const auto& req = std::any_cast<const detail::WriteRequest<RtcUInt16>&>(request);
235 ReceivedWriteRequest(req.path);
236 } else if (request.type() == typeid(detail::WriteRequest<RtcUInt32>)) {
237 const auto& req = std::any_cast<const detail::WriteRequest<RtcUInt32>&>(request);
238 ReceivedWriteRequest(req.path);
239 } else if (request.type() == typeid(detail::WriteRequest<RtcUInt64>)) {
240 const auto& req = std::any_cast<const detail::WriteRequest<RtcUInt64>&>(request);
241 ReceivedWriteRequest(req.path);
242 } else if (request.type() == typeid(detail::WriteRequest<RtcFloat>)) {
243 const auto& req = std::any_cast<const detail::WriteRequest<RtcFloat>&>(request);
244 ReceivedWriteRequest(req.path);
245 } else if (request.type() == typeid(detail::WriteRequest<RtcDouble>)) {
246 const auto& req = std::any_cast<const detail::WriteRequest<RtcDouble>&>(request);
247 ReceivedWriteRequest(req.path);
248 } else if (request.type() == typeid(detail::WriteRequest<RtcString>)) {
249 const auto& req = std::any_cast<const detail::WriteRequest<RtcString>&>(request);
250 ReceivedWriteRequest(req.path);
251 }
252 }
254 }
255};
256
257} // namespace rtctk::componentFramework::test
258
259#endif // RTCTK_COMPONENTFRAMEWORK_TEST_MOCKRUNTIMEREPOIF_HPP
This class provides a wrapper for a data point path.
Definition dataPointPath.hpp:74
A request object to pass information about datapoints that should be read from the repository.
Definition repositoryIf.hpp:1206
An object used to wait for a request to complete.
Definition repositoryIf.hpp:1354
A request object to pass information about datapoints that should be written to the repository.
Definition repositoryIf.hpp:1279
virtual bool DataPointExistsLegacy(const DataPointPath &path) const
Checks for the existence of a datapoint in the repository.
Definition repositoryIf.cpp:719
virtual BatchResponse ProcessRequests(const RequestList &requests)=0
virtual Response SendReadRequest(const ReadRequest &request) const
Sends a request to read data from the repository.
Definition repositoryIf.cpp:773
virtual const std::type_info & GetDataPointTypeLegacy(const DataPointPath &path) const
Fetches the type of the datapoint.
Definition repositoryIf.cpp:711
virtual size_t GetDataPointSizeLegacy(const DataPointPath &path) const
Fetches the size of the datapoint's data.
Definition repositoryIf.cpp:715
virtual void DeleteDataPointLegacy(const DataPointPath &path)
Deletes a datapoint.
Definition repositoryIf.cpp:707
std::vector< std::any > RequestList
Definition repositoryIf.hpp:106
virtual std::pair< PathList, PathList > GetChildrenLegacy(const DataPointPath &path) const
Queries the datapoints and child paths for a given path.
Definition repositoryIf.cpp:724
virtual Response SendWriteRequest(const WriteRequest &request)
Sends a request to write data to the repository.
Definition repositoryIf.cpp:850
A request object to pass information about datapoints to subscribe to.
Definition repositorySubscriberIf.hpp:161
A request object to pass information about datapoints to unsubscribe from.
Definition repositorySubscriberIf.hpp:267
virtual RepositoryIf::Response SendSubscribeRequest(const SubscribeRequest &request) const
This is called to asynchronously send a subscription request for datapoints.
Definition repositorySubscriberIf.cpp:162
virtual RepositoryIf::Response SendUnsubscribeRequest(const UnsubscribeRequest &request) const
This is called to asynchronously send a request to unsubscribe from various notifications.
Definition repositorySubscriberIf.cpp:255
Base interface for all Runtime Configuration Repository adapters.
Definition runtimeRepoIf.hpp:27
virtual void CreateDataPoint(const DataPointPath &path, const std::type_info &type, const std::string &server_alias)
Creates a new datapoint in the repository with a specified type on a particular external Redis server...
Definition runtimeRepoIf.cpp:34
virtual std::string GetServerAlias(const DataPointPath &path) const
Fetches the server alias for a specific datapoint.
Definition runtimeRepoIf.cpp:45
A simple fake implementation of RepositorySubscriberIf to allow testing the interactions and callback...
Definition fakeRepositorySubscriber.hpp:28
A mock of RuntimeRepoIf.
Definition mockRuntimeRepoIf.hpp:29
MOCK_METHOD(bool, DataPointExistsLegacy,(const DataPointPath &),(const override))
MOCK_METHOD(Response, SendSubscribeRequest,(const SubscribeRequest &),(const override))
MOCK_METHOD(void, CreateDataPoint,(const DataPointPath &, const std::type_info &),(override))
MOCK_METHOD(void, DeleteDataPointRequest,(const DataPointPath &))
MOCK_METHOD(std::string, GetServerAlias,(const DataPointPath &),(const override))
MOCK_METHOD(std::size_t, GetDataPointSizeLegacy,(const DataPointPath &),(const override))
MOCK_METHOD(Response, SendReadRequest,(const ReadRequest &),(const override))
MOCK_METHOD(Response, SendUnsubscribeRequest,(const UnsubscribeRequest &),(const override))
MOCK_METHOD((std::pair< PathList, PathList >), GetChildrenLegacy,(const DataPointPath &),(const override))
BatchResponse ProcessRequests(const RequestList &requests) override
Definition mockRuntimeRepoIf.hpp:113
MOCK_METHOD(void, GetDataPointSizeRequest,(const DataPointPath &),(const))
MOCK_METHOD(void, CreateDataPointRequest,(const DataPointPath &))
MOCK_METHOD(void, ReceivedReadRequest,(const DataPointPath &),(const))
virtual void CreateDataPoint(const DataPointPath &path, const std::type_info &type, const std::string &server_alias)
Creates a new datapoint in the repository with a specified type on a particular external Redis server...
Definition runtimeRepoIf.cpp:34
MOCK_METHOD(const std::type_info &, GetDataPointTypeLegacy,(const DataPointPath &),(const override))
MOCK_METHOD(void, CreateDataPoint,(const DataPointPath &, const std::type_info &, const std::string &),(override))
MOCK_METHOD(void, DataPointExistsRequest,(const DataPointPath &),(const))
MOCK_METHOD(Response, SendWriteRequest,(const WriteRequest &),(override))
MOCK_METHOD(void, DeleteDataPointLegacy,(const DataPointPath &),(override))
MOCK_METHOD(void, ReceivedWriteRequest,(const DataPointPath &))
MOCK_METHOD(void, GetDataPointTypeRequest,(const DataPointPath &),(const))
MockRuntimeRepoIf()
Definition mockRuntimeRepoIf.hpp:31
Header file for an in-memory fake RepositorySubscriberIf.
Definition fakeClock.cpp:15
elt::mal::future< std::string > InjectReqRepEvent(StateMachineEngine &engine)
Definition malEventInjector.hpp:23
Header file for RuntimeRepoIf, which defines the API for RuntimeRepoAdapters.