RTC Toolkit 5.0.0
Loading...
Searching...
No Matches
repositoryIfTestSuiteLegacy.hpp
Go to the documentation of this file.
1
13#ifndef RTCTK_COMPONENTFRAMEWORK_TEST_REPOSITORYIFTESTSUITELEGACY_HPP
14#define RTCTK_COMPONENTFRAMEWORK_TEST_REPOSITORYIFTESTSUITELEGACY_HPP
15
16#include <boost/filesystem.hpp>
17#include <ciiLogManager.hpp>
18#include <gtest/gtest.h>
19
21
23
26using rtctk::componentFramework::operator""_dppath;
27
79template <typename T>
80class RepositoryIfTestSuiteLegacy : public testing::Test {
81public:
82 void SetUp() override {
84 }
85
86 void TearDown() override {
88 }
89
99 template <class U>
100 std::shared_ptr<U> CreateRepository();
101
112 template <class U>
113 void CleanupRepository(std::shared_ptr<U>& adapter) {
114 // Do nothing by default.
115 }
116
117protected:
118 std::shared_ptr<T> m_adapter;
119};
120
122
123// Cppcheck fails to parse the following line.
124// cppcheck-suppress syntaxError
126 RepositoryIf* adapter = this->m_adapter.get();
127 adapter->CreateDataPoint<std::string>("/name"_dppath);
128 EXPECT_TRUE(adapter->DataPointExists("/name"_dppath));
129 adapter->CreateDataPoint<int32_t>("/abc/int32"_dppath);
130 EXPECT_TRUE(adapter->DataPointExists("/abc/int32"_dppath));
131 adapter->CreateDataPoint<double>("/abc/double"_dppath);
132 EXPECT_TRUE(adapter->DataPointExists("/abc/double"_dppath));
133 adapter->CreateDataPoint<std::vector<int32_t>>("/xyz/vector"_dppath);
134 EXPECT_TRUE(adapter->DataPointExists("/xyz/vector"_dppath));
135 adapter->CreateDataPoint<MatrixBuffer<int32_t>>("/xyz/matrix"_dppath);
136 EXPECT_TRUE(adapter->DataPointExists("/xyz/matrix"_dppath));
137 adapter->DeleteDataPoint("/name"_dppath);
138 EXPECT_FALSE(adapter->DataPointExists("/name"_dppath));
139 adapter->DeleteDataPoint("/abc/int32"_dppath);
140 EXPECT_FALSE(adapter->DataPointExists("/abc/int32"_dppath));
141 adapter->DeleteDataPoint("/abc/double"_dppath);
142 EXPECT_FALSE(adapter->DataPointExists("/abc/double"_dppath));
143 adapter->DeleteDataPoint("/xyz/vector"_dppath);
144 EXPECT_FALSE(adapter->DataPointExists("/xyz/vector"_dppath));
145 adapter->DeleteDataPoint("/xyz/matrix"_dppath);
146 EXPECT_FALSE(adapter->DataPointExists("/xyz/matrix"_dppath));
147}
148
150 // Make sure the GetDataPointType method returns the same types as were used during creation.
151 RepositoryIf* adapter = this->m_adapter.get();
152
153 adapter->CreateDataPoint<std::string>("/datapoint"_dppath);
154 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(std::string));
155 adapter->DeleteDataPoint("/datapoint"_dppath);
156
157 adapter->CreateDataPoint<int32_t>("/datapoint"_dppath);
158 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(int32_t));
159 adapter->DeleteDataPoint("/datapoint"_dppath);
160
161 adapter->CreateDataPoint<int64_t>("/datapoint"_dppath);
162 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(int64_t));
163 adapter->DeleteDataPoint("/datapoint"_dppath);
164
165 adapter->CreateDataPoint<float>("/datapoint"_dppath);
166 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(float));
167 adapter->DeleteDataPoint("/datapoint"_dppath);
168
169 adapter->CreateDataPoint<double>("/datapoint"_dppath);
170 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(double));
171 adapter->DeleteDataPoint("/datapoint"_dppath);
172
173 adapter->CreateDataPoint<std::vector<int32_t>>("/datapoint"_dppath);
174 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(std::vector<int32_t>));
175 adapter->DeleteDataPoint("/datapoint"_dppath);
176
177 adapter->CreateDataPoint<std::vector<int64_t>>("/datapoint"_dppath);
178 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(std::vector<int64_t>));
179 adapter->DeleteDataPoint("/datapoint"_dppath);
180
181 adapter->CreateDataPoint<std::vector<float>>("/datapoint"_dppath);
182 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(std::vector<float>));
183 adapter->DeleteDataPoint("/datapoint"_dppath);
184
185 adapter->CreateDataPoint<std::vector<double>>("/datapoint"_dppath);
186 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(std::vector<double>));
187 adapter->DeleteDataPoint("/datapoint"_dppath);
188
189 adapter->CreateDataPoint<MatrixBuffer<int32_t>>("/datapoint"_dppath);
190 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(MatrixBuffer<int32_t>));
191 adapter->DeleteDataPoint("/datapoint"_dppath);
192
193 adapter->CreateDataPoint<MatrixBuffer<int64_t>>("/datapoint"_dppath);
194 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(MatrixBuffer<int64_t>));
195 adapter->DeleteDataPoint("/datapoint"_dppath);
196
197 adapter->CreateDataPoint<MatrixBuffer<float>>("/datapoint"_dppath);
198 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(MatrixBuffer<float>));
199 adapter->DeleteDataPoint("/datapoint"_dppath);
200
201 adapter->CreateDataPoint<MatrixBuffer<double>>("/datapoint"_dppath);
202 EXPECT_EQ(adapter->GetDataPointType("/datapoint"_dppath), typeid(MatrixBuffer<double>));
203 adapter->DeleteDataPoint("/datapoint"_dppath);
204}
205
207 // Make sure the GetDataPointSize method returns the appropriate results.
208 RepositoryIf* adapter = this->m_adapter.get();
209
210 adapter->CreateDataPoint<std::string>("/datapoint"_dppath);
211 ASSERT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, std::string("abcdefg")); });
212 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), size_t(7));
213 adapter->DeleteDataPoint("/datapoint"_dppath);
214
215 adapter->CreateDataPoint<int32_t>("/datapoint"_dppath);
216 ASSERT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, int32_t(123)); });
217 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), sizeof(int32_t));
218 adapter->DeleteDataPoint("/datapoint"_dppath);
219
220 adapter->CreateDataPoint<int64_t>("/datapoint"_dppath);
221 ASSERT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, int64_t(234)); });
222 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), sizeof(int64_t));
223 adapter->DeleteDataPoint("/datapoint"_dppath);
224
225 adapter->CreateDataPoint<float>("/datapoint"_dppath);
226 ASSERT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, float(3.45)); });
227 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), sizeof(float));
228 adapter->DeleteDataPoint("/datapoint"_dppath);
229
230 adapter->CreateDataPoint<double>("/datapoint"_dppath);
231 ASSERT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, double(4.56)); });
232 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), sizeof(double));
233 adapter->DeleteDataPoint("/datapoint"_dppath);
234
235 adapter->CreateDataPoint<std::vector<int32_t>>("/datapoint"_dppath);
236 ASSERT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, std::vector<int32_t>{1, 2, 3}); });
237 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), size_t(3));
238 adapter->DeleteDataPoint("/datapoint"_dppath);
239
240 adapter->CreateDataPoint<std::vector<int64_t>>("/datapoint"_dppath);
242 { adapter->SetDataPoint("/datapoint"_dppath, std::vector<int64_t>{2, 3, 4, 5}); });
243 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), size_t(4));
244 adapter->DeleteDataPoint("/datapoint"_dppath);
245
246 adapter->CreateDataPoint<std::vector<float>>("/datapoint"_dppath);
248 adapter->SetDataPoint("/datapoint"_dppath, std::vector<float>{3.4, 4.5, 5.6, 6.7, 7.8});
249 });
250 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), size_t(5));
251 adapter->DeleteDataPoint("/datapoint"_dppath);
252
253 adapter->CreateDataPoint<std::vector<double>>("/datapoint"_dppath);
255 { adapter->SetDataPoint("/datapoint"_dppath, std::vector<double>{1.2, 2.4, 3.6}); });
256 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), size_t(3));
257 adapter->DeleteDataPoint("/datapoint"_dppath);
258
259 adapter->CreateDataPoint<MatrixBuffer<int32_t>>("/datapoint"_dppath);
261 { adapter->SetDataPoint("/datapoint"_dppath, MatrixBuffer<int32_t>(2, 2, {1, 2, 3, 4})); });
262 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), size_t(4));
263 adapter->DeleteDataPoint("/datapoint"_dppath);
264
265 adapter->CreateDataPoint<MatrixBuffer<int64_t>>("/datapoint"_dppath);
267 adapter->SetDataPoint("/datapoint"_dppath, MatrixBuffer<int64_t>(2, 3, {2, 3, 4, 5, 6, 7}));
268 });
269 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), size_t(6));
270 adapter->DeleteDataPoint("/datapoint"_dppath);
271
272 adapter->CreateDataPoint<MatrixBuffer<float>>("/datapoint"_dppath);
274 adapter->SetDataPoint("/datapoint"_dppath, MatrixBuffer<float>(2, 2, {1.2, 2.3, 3.4, 4.5}));
275 });
276 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), size_t(4));
277 adapter->DeleteDataPoint("/datapoint"_dppath);
278
279 adapter->CreateDataPoint<MatrixBuffer<double>>("/datapoint"_dppath);
281 adapter->SetDataPoint("/datapoint"_dppath,
282 MatrixBuffer<double>(3, 2, {2.4, 3.5, 4.6, 5.7, 6.8, 7.9}));
283 });
284 EXPECT_EQ(adapter->GetDataPointSize("/datapoint"_dppath), size_t(6));
285 adapter->DeleteDataPoint("/datapoint"_dppath);
286}
287
289 // Check that a datapoint can be written without exceptions and that the same value can be
290 // read back.
291 RepositoryIf* adapter = this->m_adapter.get();
292
293 adapter->CreateDataPoint<std::string>("/datapoint"_dppath);
294 EXPECT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, std::string("test string")); });
295 EXPECT_EQ(adapter->GetDataPoint<std::string>("/datapoint"_dppath), std::string("test string"));
296 adapter->DeleteDataPoint("/datapoint"_dppath);
297
298 adapter->CreateDataPoint<int32_t>("/datapoint"_dppath);
299 EXPECT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, int32_t(123)); });
300 EXPECT_EQ(adapter->GetDataPoint<int32_t>("/datapoint"_dppath), int32_t(123));
301 adapter->DeleteDataPoint("/datapoint"_dppath);
302
303 adapter->CreateDataPoint<int64_t>("/datapoint"_dppath);
304 EXPECT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, int64_t(234)); });
305 EXPECT_EQ(adapter->GetDataPoint<int64_t>("/datapoint"_dppath), int64_t(234));
306 adapter->DeleteDataPoint("/datapoint"_dppath);
307
308 adapter->CreateDataPoint<float>("/datapoint"_dppath);
309 EXPECT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, float(3.45)); });
310 EXPECT_EQ(adapter->GetDataPoint<float>("/datapoint"_dppath), float(3.45));
311 adapter->DeleteDataPoint("/datapoint"_dppath);
312
313 adapter->CreateDataPoint<double>("/datapoint"_dppath);
314 EXPECT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, double(4.56)); });
315 EXPECT_EQ(adapter->GetDataPoint<double>("/datapoint"_dppath), double(4.56));
316 adapter->DeleteDataPoint("/datapoint"_dppath);
317
318 adapter->CreateDataPoint<std::vector<int32_t>>("/datapoint"_dppath);
319 EXPECT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, std::vector<int32_t>{1, 2, 3}); });
320 // Note that the round brackets, i.e. (...), are necessary around std::vector to avoid
321 // compilation errors.
322 EXPECT_EQ(adapter->GetDataPoint<std::vector<int32_t>>("/datapoint"_dppath),
323 (std::vector<int32_t>{1, 2, 3}));
324 adapter->DeleteDataPoint("/datapoint"_dppath);
325
326 adapter->CreateDataPoint<std::vector<int64_t>>("/datapoint"_dppath);
327 EXPECT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, std::vector<int64_t>{2, 3, 4}); });
328 EXPECT_EQ(adapter->GetDataPoint<std::vector<int64_t>>("/datapoint"_dppath),
329 (std::vector<int64_t>{2, 3, 4}));
330 adapter->DeleteDataPoint("/datapoint"_dppath);
331
332 adapter->CreateDataPoint<std::vector<float>>("/datapoint"_dppath);
334 { adapter->SetDataPoint("/datapoint"_dppath, std::vector<float>{1.2, 2.3, 3.4}); });
335 EXPECT_EQ(adapter->GetDataPoint<std::vector<float>>("/datapoint"_dppath),
336 (std::vector<float>{1.2, 2.3, 3.4}));
337 adapter->DeleteDataPoint("/datapoint"_dppath);
338
339 adapter->CreateDataPoint<std::vector<double>>("/datapoint"_dppath);
341 { adapter->SetDataPoint("/datapoint"_dppath, std::vector<double>{2.4, 3.6, 4.8}); });
342 EXPECT_EQ(adapter->GetDataPoint<std::vector<double>>("/datapoint"_dppath),
343 (std::vector<double>{2.4, 3.6, 4.8}));
344 adapter->DeleteDataPoint("/datapoint"_dppath);
345
346 adapter->CreateDataPoint<MatrixBuffer<int32_t>>("/datapoint"_dppath);
348 { adapter->SetDataPoint("/datapoint"_dppath, MatrixBuffer<int32_t>(2, 2, {1, 2, 3, 4})); });
349 // Note that the round brackets, i.e. (...), are necessary around MatrixBuffer to avoid
350 // compilation errors.
351 EXPECT_EQ(adapter->GetDataPoint<MatrixBuffer<int32_t>>("/datapoint"_dppath),
352 (MatrixBuffer<int32_t>(2, 2, {1, 2, 3, 4})));
353 adapter->DeleteDataPoint("/datapoint"_dppath);
354
355 adapter->CreateDataPoint<MatrixBuffer<int64_t>>("/datapoint"_dppath);
357 { adapter->SetDataPoint("/datapoint"_dppath, MatrixBuffer<int64_t>(2, 2, {5, 6, 7, 8})); });
358 EXPECT_EQ(adapter->GetDataPoint<MatrixBuffer<int64_t>>("/datapoint"_dppath),
359 (MatrixBuffer<int64_t>(2, 2, {5, 6, 7, 8})));
360 adapter->DeleteDataPoint("/datapoint"_dppath);
361
362 adapter->CreateDataPoint<MatrixBuffer<float>>("/datapoint"_dppath);
364 adapter->SetDataPoint("/datapoint"_dppath, MatrixBuffer<float>(2, 2, {1.2, 2.3, 3.4, 4.5}));
365 });
366 EXPECT_EQ(adapter->GetDataPoint<MatrixBuffer<float>>("/datapoint"_dppath),
367 (MatrixBuffer<float>(2, 2, {1.2, 2.3, 3.4, 4.5})));
368 adapter->DeleteDataPoint("/datapoint"_dppath);
369
370 adapter->CreateDataPoint<MatrixBuffer<double>>("/datapoint"_dppath);
372 adapter->SetDataPoint("/datapoint"_dppath,
373 MatrixBuffer<double>(2, 2, {6.7, 7.8, 8.9, 9.1}));
374 });
375 EXPECT_EQ(adapter->GetDataPoint<MatrixBuffer<double>>("/datapoint"_dppath),
376 (MatrixBuffer<double>(2, 2, {6.7, 7.8, 8.9, 9.1})));
377 adapter->DeleteDataPoint("/datapoint"_dppath);
378}
379
381 // Check that a datapoint can be checked for existance without exceptions and that the answer
382 // is consistent.
383 RepositoryIf* adapter = this->m_adapter.get();
384
385 adapter->CreateDataPoint<std::string>("/datapoint"_dppath);
386 EXPECT_NO_THROW({ adapter->SetDataPoint("/datapoint"_dppath, std::string("test string")); });
387 EXPECT_EQ(adapter->GetDataPoint<std::string>("/datapoint"_dppath), std::string("test string"));
388
389 bool exists = false;
390 EXPECT_NO_THROW({ exists = adapter->DataPointExists("/datapoint"_dppath); });
391 EXPECT_EQ(exists, true);
392
393 adapter->DeleteDataPoint("/datapoint"_dppath);
394 EXPECT_NO_THROW({ exists = adapter->DataPointExists("/datapoint"_dppath); });
395 EXPECT_EQ(exists, false);
396
397 adapter->CreateDataPoint<std::string>("/datapoint/test"_dppath);
399 { adapter->SetDataPoint("/datapoint/test"_dppath, std::string("test string")); });
400 EXPECT_EQ(adapter->GetDataPoint<std::string>("/datapoint/test"_dppath),
401 std::string("test string"));
402
403 EXPECT_NO_THROW({ exists = adapter->DataPointExists("/datapoint/test"_dppath); });
404 EXPECT_EQ(exists, true);
405 EXPECT_NO_THROW({ exists = adapter->DataPointExists("/datapoint"_dppath); });
406 EXPECT_EQ(exists, false);
407 EXPECT_NO_THROW({ exists = adapter->DataPointExists("/datapoint/test/data"_dppath); });
408 EXPECT_EQ(exists, false);
409
410 adapter->DeleteDataPoint("/datapoint/test"_dppath);
411 EXPECT_NO_THROW({ exists = adapter->DataPointExists("/datapoint/test"_dppath); });
412 EXPECT_EQ(exists, false);
413 EXPECT_NO_THROW({ exists = adapter->DataPointExists("/datapoint"_dppath); });
414 EXPECT_EQ(exists, false);
415}
416
423
424} // namespace rtctk::componentFramework::test
425
426#endif // RTCTK_COMPONENTFRAMEWORK_TEST_REPOSITORYIFTESTSUITELEGACY_HPP
A buffer class representing 2D matrix data.
Definition matrixBuffer.hpp:28
Abstract interface providing basic read and write facilities to a repository.
Definition repositoryIf.hpp:104
void CreateDataPoint(const DataPointPath &path)
Creates a new datapoint in the repository.
Definition repositoryIf.ipp:1696
A test suite for performing acceptance tests of a RepositoryIf implementation.
Definition repositoryIfTestSuiteLegacy.hpp:80
void TearDown() override
Definition repositoryIfTestSuiteLegacy.hpp:86
std::shared_ptr< U > CreateRepository()
Constructs a new instance of a repository adapter that derives from RepositoryIf.
std::shared_ptr< T > m_adapter
Definition repositoryIfTestSuiteLegacy.hpp:118
void SetUp() override
Definition repositoryIfTestSuiteLegacy.hpp:82
void CleanupRepository(std::shared_ptr< U > &adapter)
A cleanup function that is invoked before destroying a repository adapter of a given type.
Definition repositoryIfTestSuiteLegacy.hpp:113
Definition fakeClock.cpp:15
TYPED_TEST_SUITE_P(RepositoryIfTestSuiteLegacy)
TYPED_TEST_P(RepositoryIfTestSuiteLegacy, DataPointCreationAndDeletion)
Definition repositoryIfTestSuiteLegacy.hpp:125
REGISTER_TYPED_TEST_SUITE_P(RepositoryIfTestSuiteLegacy, DataPointCreationAndDeletion, TypesAreReturnedCorrectly, SizesAreReturnedCorrectly, DataPointWriteAndRead, DataPointExistanceConsistency)
elt::mal::future< std::string > InjectReqRepEvent(StateMachineEngine &engine)
Definition malEventInjector.hpp:23
Header file for RepositoryIf and related base classes.