RTC Toolkit 5.1.0
Loading...
Searching...
No Matches
mockRepository.hpp
Go to the documentation of this file.
1
13#ifndef RTCTK_COMPONENTFRAMEWORK_TEST_MOCKREPOSITORY_HPP
14#define RTCTK_COMPONENTFRAMEWORK_TEST_MOCKREPOSITORY_HPP
15
17
18#include <gmock/gmock.h>
19#include <gtest/gtest.h>
20
22
28class MockRepository : virtual public FakeRepository {
29public:
31#pragma GCC diagnostic push
32#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
33 // Setup the default behaviour to forward the calls to the fake repository.
35 .WillByDefault([this](const DataPointPath& path, const std::type_info& type) {
37 });
38 ON_CALL(*this, DeleteDataPointLegacy).WillByDefault([this](const DataPointPath& path) {
40 });
42 .WillByDefault([this](const DataPointPath& path) -> const std::type_info& {
44 });
45 ON_CALL(*this, GetDataPointSizeLegacy).WillByDefault([this](const DataPointPath& path) {
47 });
48 ON_CALL(*this, DataPointExistsLegacy).WillByDefault([this](const DataPointPath& path) {
50 });
51 ON_CALL(*this, GetChildrenLegacy).WillByDefault([this](const DataPointPath& path) {
53 });
54 ON_CALL(*this, SendReadRequest).WillByDefault([this](const ReadRequest& request) {
56 });
57 ON_CALL(*this, SendWriteRequest).WillByDefault([this](const WriteRequest& request) {
59 });
60#pragma GCC diagnostic pop
61 }
62
64 MOCK_METHOD(void, CreateDataPoint, (const DataPointPath&, const std::type_info&), (override));
65 MOCK_METHOD(void, DeleteDataPointLegacy, (const DataPointPath&), (override));
66 MOCK_METHOD(const std::type_info&,
68 (const DataPointPath&),
69 (const override));
70 MOCK_METHOD(std::size_t, GetDataPointSizeLegacy, (const DataPointPath&), (const override));
71 MOCK_METHOD(bool, DataPointExistsLegacy, (const DataPointPath&), (const override));
72 MOCK_METHOD((std::pair<PathList, PathList>),
74 (const DataPointPath&),
75 (const override));
76
77#pragma GCC diagnostic push
78#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
79
80 MOCK_METHOD(Response, SendReadRequest, (const ReadRequest&), (const override));
82
83#pragma GCC diagnostic pop
84
92
93protected:
95 for (const auto& request : requests) {
96 if (request.type() == typeid(detail::CreateRequest<std::byte>)) {
97 const auto& req = std::any_cast<const detail::CreateRequest<std::byte>&>(request);
98 CreateDataPointRequest(req.path);
99 } else if (request.type() == typeid(detail::CreateRequest<char>)) {
100 const auto& req = std::any_cast<const detail::CreateRequest<char>&>(request);
101 CreateDataPointRequest(req.path);
102 } else if (request.type() == typeid(detail::CreateRequest<RtcBool>)) {
103 const auto& req = std::any_cast<const detail::CreateRequest<RtcBool>&>(request);
104 CreateDataPointRequest(req.path);
105 } else if (request.type() == typeid(detail::CreateRequest<RtcInt8>)) {
106 const auto& req = std::any_cast<const detail::CreateRequest<RtcInt8>&>(request);
107 CreateDataPointRequest(req.path);
108 } else if (request.type() == typeid(detail::CreateRequest<RtcInt16>)) {
109 const auto& req = std::any_cast<const detail::CreateRequest<RtcInt16>&>(request);
110 CreateDataPointRequest(req.path);
111 } else if (request.type() == typeid(detail::CreateRequest<RtcInt32>)) {
112 const auto& req = std::any_cast<const detail::CreateRequest<RtcInt32>&>(request);
113 CreateDataPointRequest(req.path);
114 } else if (request.type() == typeid(detail::CreateRequest<RtcInt64>)) {
115 const auto& req = std::any_cast<const detail::CreateRequest<RtcInt64>&>(request);
116 CreateDataPointRequest(req.path);
117 } else if (request.type() == typeid(detail::CreateRequest<RtcUInt8>)) {
118 const auto& req = std::any_cast<const detail::CreateRequest<RtcUInt8>&>(request);
119 CreateDataPointRequest(req.path);
120 } else if (request.type() == typeid(detail::CreateRequest<RtcUInt16>)) {
121 const auto& req = std::any_cast<const detail::CreateRequest<RtcUInt16>&>(request);
122 CreateDataPointRequest(req.path);
123 } else if (request.type() == typeid(detail::CreateRequest<RtcUInt32>)) {
124 const auto& req = std::any_cast<const detail::CreateRequest<RtcUInt32>&>(request);
125 CreateDataPointRequest(req.path);
126 } else if (request.type() == typeid(detail::CreateRequest<RtcUInt64>)) {
127 const auto& req = std::any_cast<const detail::CreateRequest<RtcUInt64>&>(request);
128 CreateDataPointRequest(req.path);
129 } else if (request.type() == typeid(detail::CreateRequest<RtcFloat>)) {
130 const auto& req = std::any_cast<const detail::CreateRequest<RtcFloat>&>(request);
131 CreateDataPointRequest(req.path);
132 } else if (request.type() == typeid(detail::CreateRequest<RtcDouble>)) {
133 const auto& req = std::any_cast<const detail::CreateRequest<RtcDouble>&>(request);
134 CreateDataPointRequest(req.path);
135 } else if (request.type() == typeid(detail::CreateRequest<RtcString>)) {
136 const auto& req = std::any_cast<const detail::CreateRequest<RtcString>&>(request);
137 CreateDataPointRequest(req.path);
138 } else if (request.type() == typeid(detail::DeleteRequest)) {
139 const auto& req = std::any_cast<const detail::DeleteRequest&>(request);
140 DeleteDataPointRequest(req.path);
141 } else if (request.type() == typeid(detail::ReadMetaDataRequest)) {
142 const auto& req = std::any_cast<const detail::ReadMetaDataRequest&>(request);
143 GetDataPointTypeRequest(req.path);
144 GetDataPointSizeRequest(req.path);
145 } else if (request.type() == typeid(detail::ExistsRequest)) {
146 const auto& req = std::any_cast<const detail::ExistsRequest&>(request);
147 DataPointExistsRequest(req.path);
148 } else if (request.type() == typeid(detail::ReadRequest<std::byte>)) {
149 const auto& req = std::any_cast<const detail::ReadRequest<std::byte>&>(request);
150 ReceivedReadRequest(req.path);
151 } else if (request.type() == typeid(detail::ReadRequest<char>)) {
152 const auto& req = std::any_cast<const detail::ReadRequest<char>&>(request);
153 ReceivedReadRequest(req.path);
154 } else if (request.type() == typeid(detail::ReadRequest<RtcBool>)) {
155 const auto& req = std::any_cast<const detail::ReadRequest<RtcBool>&>(request);
156 ReceivedReadRequest(req.path);
157 } else if (request.type() == typeid(detail::ReadRequest<RtcInt8>)) {
158 const auto& req = std::any_cast<const detail::ReadRequest<RtcInt8>&>(request);
159 ReceivedReadRequest(req.path);
160 } else if (request.type() == typeid(detail::ReadRequest<RtcInt16>)) {
161 const auto& req = std::any_cast<const detail::ReadRequest<RtcInt16>&>(request);
162 ReceivedReadRequest(req.path);
163 } else if (request.type() == typeid(detail::ReadRequest<RtcInt32>)) {
164 const auto& req = std::any_cast<const detail::ReadRequest<RtcInt32>&>(request);
165 ReceivedReadRequest(req.path);
166 } else if (request.type() == typeid(detail::ReadRequest<RtcInt64>)) {
167 const auto& req = std::any_cast<const detail::ReadRequest<RtcInt64>&>(request);
168 ReceivedReadRequest(req.path);
169 } else if (request.type() == typeid(detail::ReadRequest<RtcUInt8>)) {
170 const auto& req = std::any_cast<const detail::ReadRequest<RtcUInt8>&>(request);
171 ReceivedReadRequest(req.path);
172 } else if (request.type() == typeid(detail::ReadRequest<RtcUInt16>)) {
173 const auto& req = std::any_cast<const detail::ReadRequest<RtcUInt16>&>(request);
174 ReceivedReadRequest(req.path);
175 } else if (request.type() == typeid(detail::ReadRequest<RtcUInt32>)) {
176 const auto& req = std::any_cast<const detail::ReadRequest<RtcUInt32>&>(request);
177 ReceivedReadRequest(req.path);
178 } else if (request.type() == typeid(detail::ReadRequest<RtcUInt64>)) {
179 const auto& req = std::any_cast<const detail::ReadRequest<RtcUInt64>&>(request);
180 ReceivedReadRequest(req.path);
181 } else if (request.type() == typeid(detail::ReadRequest<RtcFloat>)) {
182 const auto& req = std::any_cast<const detail::ReadRequest<RtcFloat>&>(request);
183 ReceivedReadRequest(req.path);
184 } else if (request.type() == typeid(detail::ReadRequest<RtcDouble>)) {
185 const auto& req = std::any_cast<const detail::ReadRequest<RtcDouble>&>(request);
186 ReceivedReadRequest(req.path);
187 } else if (request.type() == typeid(detail::ReadRequest<RtcString>)) {
188 const auto& req = std::any_cast<const detail::ReadRequest<RtcString>&>(request);
189 ReceivedReadRequest(req.path);
190 } else if (request.type() == typeid(detail::WriteRequest<std::byte>)) {
191 const auto& req = std::any_cast<const detail::WriteRequest<std::byte>&>(request);
192 ReceivedWriteRequest(req.path);
193 } else if (request.type() == typeid(detail::WriteRequest<char>)) {
194 const auto& req = std::any_cast<const detail::WriteRequest<char>&>(request);
195 ReceivedWriteRequest(req.path);
196 } else if (request.type() == typeid(detail::WriteRequest<RtcBool>)) {
197 const auto& req = std::any_cast<const detail::WriteRequest<RtcBool>&>(request);
198 ReceivedWriteRequest(req.path);
199 } else if (request.type() == typeid(detail::WriteRequest<RtcInt8>)) {
200 const auto& req = std::any_cast<const detail::WriteRequest<RtcInt8>&>(request);
201 ReceivedWriteRequest(req.path);
202 } else if (request.type() == typeid(detail::WriteRequest<RtcInt16>)) {
203 const auto& req = std::any_cast<const detail::WriteRequest<RtcInt16>&>(request);
204 ReceivedWriteRequest(req.path);
205 } else if (request.type() == typeid(detail::WriteRequest<RtcInt32>)) {
206 const auto& req = std::any_cast<const detail::WriteRequest<RtcInt32>&>(request);
207 ReceivedWriteRequest(req.path);
208 } else if (request.type() == typeid(detail::WriteRequest<RtcInt64>)) {
209 const auto& req = std::any_cast<const detail::WriteRequest<RtcInt64>&>(request);
210 ReceivedWriteRequest(req.path);
211 } else if (request.type() == typeid(detail::WriteRequest<RtcUInt8>)) {
212 const auto& req = std::any_cast<const detail::WriteRequest<RtcUInt8>&>(request);
213 ReceivedWriteRequest(req.path);
214 } else if (request.type() == typeid(detail::WriteRequest<RtcUInt16>)) {
215 const auto& req = std::any_cast<const detail::WriteRequest<RtcUInt16>&>(request);
216 ReceivedWriteRequest(req.path);
217 } else if (request.type() == typeid(detail::WriteRequest<RtcUInt32>)) {
218 const auto& req = std::any_cast<const detail::WriteRequest<RtcUInt32>&>(request);
219 ReceivedWriteRequest(req.path);
220 } else if (request.type() == typeid(detail::WriteRequest<RtcUInt64>)) {
221 const auto& req = std::any_cast<const detail::WriteRequest<RtcUInt64>&>(request);
222 ReceivedWriteRequest(req.path);
223 } else if (request.type() == typeid(detail::WriteRequest<RtcFloat>)) {
224 const auto& req = std::any_cast<const detail::WriteRequest<RtcFloat>&>(request);
225 ReceivedWriteRequest(req.path);
226 } else if (request.type() == typeid(detail::WriteRequest<RtcDouble>)) {
227 const auto& req = std::any_cast<const detail::WriteRequest<RtcDouble>&>(request);
228 ReceivedWriteRequest(req.path);
229 } else if (request.type() == typeid(detail::WriteRequest<RtcString>)) {
230 const auto& req = std::any_cast<const detail::WriteRequest<RtcString>&>(request);
231 ReceivedWriteRequest(req.path);
232 }
233 }
235 }
236};
237
238} // namespace rtctk::componentFramework::test
239
240#endif // RTCTK_COMPONENTFRAMEWORK_TEST_MOCKREPOSITORY_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:1213
An object used to wait for a request to complete.
Definition repositoryIf.hpp:1370
A request object to pass information about datapoints that should be written to the repository.
Definition repositoryIf.hpp:1290
virtual bool DataPointExistsLegacy(const DataPointPath &path) const
Checks for the existence of a datapoint in the repository.
Definition repositoryIf.cpp:721
virtual Response SendReadRequest(const ReadRequest &request) const
Sends a request to read data from the repository.
Definition repositoryIf.cpp:775
void CreateDataPoint(const DataPointPath &path)
Creates a new datapoint in the repository.
Definition repositoryIf.ipp:1696
virtual const std::type_info & GetDataPointTypeLegacy(const DataPointPath &path) const
Fetches the type of the datapoint.
Definition repositoryIf.cpp:713
virtual size_t GetDataPointSizeLegacy(const DataPointPath &path) const
Fetches the size of the datapoint's data.
Definition repositoryIf.cpp:717
virtual void DeleteDataPointLegacy(const DataPointPath &path)
Deletes a datapoint.
Definition repositoryIf.cpp:709
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:726
virtual Response SendWriteRequest(const WriteRequest &request)
Sends a request to write data to the repository.
Definition repositoryIf.cpp:852
Implementation of an in-memory fake repository for testing.
Definition fakeRepository.hpp:26
BatchResponse ProcessRequests(const RequestList &requests) override
Definition fakeRepository.cpp:449
A GoogleTest mock of RepositoryIf.
Definition mockRepository.hpp:28
MOCK_METHOD(void, CreateDataPoint,(const DataPointPath &, const std::type_info &),(override))
MOCK_METHOD(void, GetDataPointSizeRequest,(const DataPointPath &),(const))
MOCK_METHOD(void, DataPointExistsRequest,(const DataPointPath &),(const))
MOCK_METHOD(void, DeleteDataPointRequest,(const DataPointPath &))
void CreateDataPoint(const DataPointPath &path)
Creates a new datapoint in the repository.
Definition repositoryIf.ipp:1696
BatchResponse ProcessRequests(const RequestList &requests) override
Definition mockRepository.hpp:94
MOCK_METHOD(Response, SendReadRequest,(const ReadRequest &),(const override))
MOCK_METHOD(void, DeleteDataPointLegacy,(const DataPointPath &),(override))
MOCK_METHOD(std::size_t, GetDataPointSizeLegacy,(const DataPointPath &),(const override))
MOCK_METHOD(Response, SendWriteRequest,(const WriteRequest &),(override))
MOCK_METHOD(void, CreateDataPointRequest,(const DataPointPath &))
MOCK_METHOD(void, ReceivedWriteRequest,(const DataPointPath &))
MOCK_METHOD(void, GetDataPointTypeRequest,(const DataPointPath &),(const))
MOCK_METHOD(const std::type_info &, GetDataPointTypeLegacy,(const DataPointPath &),(const override))
MOCK_METHOD((std::pair< PathList, PathList >), GetChildrenLegacy,(const DataPointPath &),(const override))
MockRepository()
Definition mockRepository.hpp:30
MOCK_METHOD(bool, DataPointExistsLegacy,(const DataPointPath &),(const override))
MOCK_METHOD(void, ReceivedReadRequest,(const DataPointPath &),(const))
Header file for an in-memory fake RepositoryIf.
Definition fakeClock.cpp:15
elt::mal::future< std::string > InjectReqRepEvent(StateMachineEngine &engine)
Definition malEventInjector.hpp:23