RTC Toolkit 5.0.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 // Setup the default behaviour to forward the calls to the fake repository.
33 .WillByDefault([this](const DataPointPath& path, const std::type_info& type) {
35 });
36 ON_CALL(*this, DeleteDataPointLegacy).WillByDefault([this](const DataPointPath& path) {
38 });
40 .WillByDefault([this](const DataPointPath& path) -> const std::type_info& {
42 });
43 ON_CALL(*this, GetDataPointSizeLegacy).WillByDefault([this](const DataPointPath& path) {
45 });
46 ON_CALL(*this, DataPointExistsLegacy).WillByDefault([this](const DataPointPath& path) {
48 });
49 ON_CALL(*this, GetChildrenLegacy).WillByDefault([this](const DataPointPath& path) {
51 });
52 ON_CALL(*this, SendReadRequest).WillByDefault([this](const ReadRequest& request) {
54 });
55 ON_CALL(*this, SendWriteRequest).WillByDefault([this](const WriteRequest& request) {
57 });
58 }
59
61 MOCK_METHOD(void, CreateDataPoint, (const DataPointPath&, const std::type_info&), (override));
62 MOCK_METHOD(void, DeleteDataPointLegacy, (const DataPointPath&), (override));
63 MOCK_METHOD(const std::type_info&,
65 (const DataPointPath&),
66 (const override));
67 MOCK_METHOD(std::size_t, GetDataPointSizeLegacy, (const DataPointPath&), (const override));
68 MOCK_METHOD(bool, DataPointExistsLegacy, (const DataPointPath&), (const override));
69 MOCK_METHOD((std::pair<PathList, PathList>),
71 (const DataPointPath&),
72 (const override));
73 MOCK_METHOD(Response, SendReadRequest, (const ReadRequest&), (const override));
75
83
84protected:
86 for (const auto& request : requests) {
87 if (request.type() == typeid(detail::CreateRequest<std::byte>)) {
88 const auto& req = std::any_cast<const detail::CreateRequest<std::byte>&>(request);
89 CreateDataPointRequest(req.path);
90 } else if (request.type() == typeid(detail::CreateRequest<char>)) {
91 const auto& req = std::any_cast<const detail::CreateRequest<char>&>(request);
92 CreateDataPointRequest(req.path);
93 } else if (request.type() == typeid(detail::CreateRequest<RtcBool>)) {
94 const auto& req = std::any_cast<const detail::CreateRequest<RtcBool>&>(request);
95 CreateDataPointRequest(req.path);
96 } else if (request.type() == typeid(detail::CreateRequest<RtcInt8>)) {
97 const auto& req = std::any_cast<const detail::CreateRequest<RtcInt8>&>(request);
98 CreateDataPointRequest(req.path);
99 } else if (request.type() == typeid(detail::CreateRequest<RtcInt16>)) {
100 const auto& req = std::any_cast<const detail::CreateRequest<RtcInt16>&>(request);
101 CreateDataPointRequest(req.path);
102 } else if (request.type() == typeid(detail::CreateRequest<RtcInt32>)) {
103 const auto& req = std::any_cast<const detail::CreateRequest<RtcInt32>&>(request);
104 CreateDataPointRequest(req.path);
105 } else if (request.type() == typeid(detail::CreateRequest<RtcInt64>)) {
106 const auto& req = std::any_cast<const detail::CreateRequest<RtcInt64>&>(request);
107 CreateDataPointRequest(req.path);
108 } else if (request.type() == typeid(detail::CreateRequest<RtcUInt8>)) {
109 const auto& req = std::any_cast<const detail::CreateRequest<RtcUInt8>&>(request);
110 CreateDataPointRequest(req.path);
111 } else if (request.type() == typeid(detail::CreateRequest<RtcUInt16>)) {
112 const auto& req = std::any_cast<const detail::CreateRequest<RtcUInt16>&>(request);
113 CreateDataPointRequest(req.path);
114 } else if (request.type() == typeid(detail::CreateRequest<RtcUInt32>)) {
115 const auto& req = std::any_cast<const detail::CreateRequest<RtcUInt32>&>(request);
116 CreateDataPointRequest(req.path);
117 } else if (request.type() == typeid(detail::CreateRequest<RtcUInt64>)) {
118 const auto& req = std::any_cast<const detail::CreateRequest<RtcUInt64>&>(request);
119 CreateDataPointRequest(req.path);
120 } else if (request.type() == typeid(detail::CreateRequest<RtcFloat>)) {
121 const auto& req = std::any_cast<const detail::CreateRequest<RtcFloat>&>(request);
122 CreateDataPointRequest(req.path);
123 } else if (request.type() == typeid(detail::CreateRequest<RtcDouble>)) {
124 const auto& req = std::any_cast<const detail::CreateRequest<RtcDouble>&>(request);
125 CreateDataPointRequest(req.path);
126 } else if (request.type() == typeid(detail::CreateRequest<RtcString>)) {
127 const auto& req = std::any_cast<const detail::CreateRequest<RtcString>&>(request);
128 CreateDataPointRequest(req.path);
129 } else if (request.type() == typeid(detail::DeleteRequest)) {
130 const auto& req = std::any_cast<const detail::DeleteRequest&>(request);
131 DeleteDataPointRequest(req.path);
132 } else if (request.type() == typeid(detail::ReadMetaDataRequest)) {
133 const auto& req = std::any_cast<const detail::ReadMetaDataRequest&>(request);
134 GetDataPointTypeRequest(req.path);
135 GetDataPointSizeRequest(req.path);
136 } else if (request.type() == typeid(detail::ExistsRequest)) {
137 const auto& req = std::any_cast<const detail::ExistsRequest&>(request);
138 DataPointExistsRequest(req.path);
139 } else if (request.type() == typeid(detail::ReadRequest<std::byte>)) {
140 const auto& req = std::any_cast<const detail::ReadRequest<std::byte>&>(request);
141 ReceivedReadRequest(req.path);
142 } else if (request.type() == typeid(detail::ReadRequest<char>)) {
143 const auto& req = std::any_cast<const detail::ReadRequest<char>&>(request);
144 ReceivedReadRequest(req.path);
145 } else if (request.type() == typeid(detail::ReadRequest<RtcBool>)) {
146 const auto& req = std::any_cast<const detail::ReadRequest<RtcBool>&>(request);
147 ReceivedReadRequest(req.path);
148 } else if (request.type() == typeid(detail::ReadRequest<RtcInt8>)) {
149 const auto& req = std::any_cast<const detail::ReadRequest<RtcInt8>&>(request);
150 ReceivedReadRequest(req.path);
151 } else if (request.type() == typeid(detail::ReadRequest<RtcInt16>)) {
152 const auto& req = std::any_cast<const detail::ReadRequest<RtcInt16>&>(request);
153 ReceivedReadRequest(req.path);
154 } else if (request.type() == typeid(detail::ReadRequest<RtcInt32>)) {
155 const auto& req = std::any_cast<const detail::ReadRequest<RtcInt32>&>(request);
156 ReceivedReadRequest(req.path);
157 } else if (request.type() == typeid(detail::ReadRequest<RtcInt64>)) {
158 const auto& req = std::any_cast<const detail::ReadRequest<RtcInt64>&>(request);
159 ReceivedReadRequest(req.path);
160 } else if (request.type() == typeid(detail::ReadRequest<RtcUInt8>)) {
161 const auto& req = std::any_cast<const detail::ReadRequest<RtcUInt8>&>(request);
162 ReceivedReadRequest(req.path);
163 } else if (request.type() == typeid(detail::ReadRequest<RtcUInt16>)) {
164 const auto& req = std::any_cast<const detail::ReadRequest<RtcUInt16>&>(request);
165 ReceivedReadRequest(req.path);
166 } else if (request.type() == typeid(detail::ReadRequest<RtcUInt32>)) {
167 const auto& req = std::any_cast<const detail::ReadRequest<RtcUInt32>&>(request);
168 ReceivedReadRequest(req.path);
169 } else if (request.type() == typeid(detail::ReadRequest<RtcUInt64>)) {
170 const auto& req = std::any_cast<const detail::ReadRequest<RtcUInt64>&>(request);
171 ReceivedReadRequest(req.path);
172 } else if (request.type() == typeid(detail::ReadRequest<RtcFloat>)) {
173 const auto& req = std::any_cast<const detail::ReadRequest<RtcFloat>&>(request);
174 ReceivedReadRequest(req.path);
175 } else if (request.type() == typeid(detail::ReadRequest<RtcDouble>)) {
176 const auto& req = std::any_cast<const detail::ReadRequest<RtcDouble>&>(request);
177 ReceivedReadRequest(req.path);
178 } else if (request.type() == typeid(detail::ReadRequest<RtcString>)) {
179 const auto& req = std::any_cast<const detail::ReadRequest<RtcString>&>(request);
180 ReceivedReadRequest(req.path);
181 } else if (request.type() == typeid(detail::WriteRequest<std::byte>)) {
182 const auto& req = std::any_cast<const detail::WriteRequest<std::byte>&>(request);
183 ReceivedWriteRequest(req.path);
184 } else if (request.type() == typeid(detail::WriteRequest<char>)) {
185 const auto& req = std::any_cast<const detail::WriteRequest<char>&>(request);
186 ReceivedWriteRequest(req.path);
187 } else if (request.type() == typeid(detail::WriteRequest<RtcBool>)) {
188 const auto& req = std::any_cast<const detail::WriteRequest<RtcBool>&>(request);
189 ReceivedWriteRequest(req.path);
190 } else if (request.type() == typeid(detail::WriteRequest<RtcInt8>)) {
191 const auto& req = std::any_cast<const detail::WriteRequest<RtcInt8>&>(request);
192 ReceivedWriteRequest(req.path);
193 } else if (request.type() == typeid(detail::WriteRequest<RtcInt16>)) {
194 const auto& req = std::any_cast<const detail::WriteRequest<RtcInt16>&>(request);
195 ReceivedWriteRequest(req.path);
196 } else if (request.type() == typeid(detail::WriteRequest<RtcInt32>)) {
197 const auto& req = std::any_cast<const detail::WriteRequest<RtcInt32>&>(request);
198 ReceivedWriteRequest(req.path);
199 } else if (request.type() == typeid(detail::WriteRequest<RtcInt64>)) {
200 const auto& req = std::any_cast<const detail::WriteRequest<RtcInt64>&>(request);
201 ReceivedWriteRequest(req.path);
202 } else if (request.type() == typeid(detail::WriteRequest<RtcUInt8>)) {
203 const auto& req = std::any_cast<const detail::WriteRequest<RtcUInt8>&>(request);
204 ReceivedWriteRequest(req.path);
205 } else if (request.type() == typeid(detail::WriteRequest<RtcUInt16>)) {
206 const auto& req = std::any_cast<const detail::WriteRequest<RtcUInt16>&>(request);
207 ReceivedWriteRequest(req.path);
208 } else if (request.type() == typeid(detail::WriteRequest<RtcUInt32>)) {
209 const auto& req = std::any_cast<const detail::WriteRequest<RtcUInt32>&>(request);
210 ReceivedWriteRequest(req.path);
211 } else if (request.type() == typeid(detail::WriteRequest<RtcUInt64>)) {
212 const auto& req = std::any_cast<const detail::WriteRequest<RtcUInt64>&>(request);
213 ReceivedWriteRequest(req.path);
214 } else if (request.type() == typeid(detail::WriteRequest<RtcFloat>)) {
215 const auto& req = std::any_cast<const detail::WriteRequest<RtcFloat>&>(request);
216 ReceivedWriteRequest(req.path);
217 } else if (request.type() == typeid(detail::WriteRequest<RtcDouble>)) {
218 const auto& req = std::any_cast<const detail::WriteRequest<RtcDouble>&>(request);
219 ReceivedWriteRequest(req.path);
220 } else if (request.type() == typeid(detail::WriteRequest<RtcString>)) {
221 const auto& req = std::any_cast<const detail::WriteRequest<RtcString>&>(request);
222 ReceivedWriteRequest(req.path);
223 }
224 }
226 }
227};
228
229} // namespace rtctk::componentFramework::test
230
231#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: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 Response SendReadRequest(const ReadRequest &request) const
Sends a request to read data from the repository.
Definition repositoryIf.cpp:773
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: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
Implementation of an in-memory fake repository for testing.
Definition fakeRepository.hpp:26
BatchResponse ProcessRequests(const RequestList &requests) override
Definition fakeRepository.cpp:445
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:85
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