Sen API
Sen Libraries
Loading...
Searching...
No Matches
db_test_helpers.h
Go to the documentation of this file.
1
2
3// === db_test_helpers.h ===============================================================================================
4// Sen Infrastructure
5// Released under the Apache License v2.0 (SPDX-License-Identifier Apache-2.0).
6// See the LICENSE.txt file for more information.
7// © Airbus SAS, Airbus Helicopters, and Airbus Defence and Space SAU/GmbH/SAS.
8// =====================================================================================================================
9
10#ifndef SEN_DB_TEST_HELPERS_H
11#define SEN_DB_TEST_HELPERS_H
12
13#include "stl/db_test_class.stl.h"
14
15// sen
20
21// std
22#include <chrono>
23#include <ctime>
24#include <filesystem>
25#include <memory>
26#include <string>
27
29{
30
32{
33public:
34 TempDir(): path_(std::filesystem::temp_directory_path() / ("db_test_" + std::to_string(std::time(nullptr))))
35 {
36 std::filesystem::create_directories(path_);
37 }
38
39 // prevent object copy and movable type
40 TempDir(const TempDir&) = delete;
41 TempDir& operator=(const TempDir&) = delete;
42
43 TempDir(TempDir&&) = delete;
45
47 {
48 if (std::filesystem::exists(path_))
49 {
50 std::filesystem::remove_all(path_);
51 }
52 }
53
54 [[nodiscard]] const std::filesystem::path& path() const { return path_; }
55
56private:
57 std::filesystem::path path_;
58};
59
60class TestObjImpl: public db_test::TestObjBase
61{
62public:
63 SEN_NOCOPY_NOMOVE(TestObjImpl)
64 using TestObjBase::TestObjBase;
65 ~TestObjImpl() override = default;
66 using TestObjBase::valueChanged;
67};
68
70{
71 std::shared_ptr<TestObjImpl> object; // NOLINT(misc-non-private-member-variables-in-classes)
72 sen::kernel::TestComponent component; // NOLINT(misc-non-private-member-variables-in-classes)
73 std::unique_ptr<sen::kernel::TestKernel> kernel; // NOLINT(misc-non-private-member-variables-in-classes)
74
76 {
77 object = std::make_shared<TestObjImpl>("testObj", sen::VarMap {});
78 component.onInit(
80 {
81 auto source = api.getSource("local.test");
82 source->add(object);
83 return sen::kernel::done();
84 });
85 component.onRun([](auto& api) { return api.execLoop(std::chrono::seconds(1), []() {}); });
86 kernel = std::make_unique<sen::kernel::TestKernel>(&component);
87 kernel->step();
88 }
89};
90
91class OtherObjImpl: public db_test::OtherObjBase
92{
93public:
94 SEN_NOCOPY_NOMOVE(OtherObjImpl)
95 using OtherObjBase::OtherObjBase;
96 ~OtherObjImpl() override = default;
97};
98
100{
101 std::shared_ptr<TestObjImpl> testObject; // NOLINT(misc-non-private-member-variables-in-classes)
102 std::shared_ptr<OtherObjImpl> otherObject; // NOLINT(misc-non-private-member-variables-in-classes)
103 sen::kernel::TestComponent component; // NOLINT(misc-non-private-member-variables-in-classes)
104 std::unique_ptr<sen::kernel::TestKernel> kernel; // NOLINT(misc-non-private-member-variables-in-classes)
105
107 {
108 testObject = std::make_shared<TestObjImpl>("testObj", sen::VarMap {});
109 otherObject = std::make_shared<OtherObjImpl>("otherObj", sen::VarMap {});
110 component.onInit(
112 {
113 auto source = api.getSource("local.test");
114 source->add(testObject);
115 source->add(otherObject);
116 return sen::kernel::done();
117 });
118 component.onRun([](auto& api) { return api.execLoop(std::chrono::seconds(1), []() {}); });
119 kernel = std::make_unique<sen::kernel::TestKernel>(&component);
120 kernel->step();
121 }
122};
123} // namespace sen::db::test
124
125#endif // SEN_DB_TEST_HELPERS_H
Definition db_test_helpers.h:92
~OtherObjImpl() override=default
const std::filesystem::path & path() const
Definition db_test_helpers.h:54
TempDir(TempDir &&)=delete
~TempDir()
Definition db_test_helpers.h:46
TempDir(const TempDir &)=delete
TempDir & operator=(const TempDir &)=delete
TempDir & operator=(TempDir &&)=delete
TempDir()
Definition db_test_helpers.h:34
Definition db_test_helpers.h:61
~TestObjImpl() override=default
What can be done when initializing a component.
Definition component_api.h:213
Convenience class for using lambdas instead of inheritance when defining test components.
Definition test_kernel.h:58
std::map< std::string, Var, std::less<> > VarMap
A map of vars to represent structures.
Definition var.h:107
@ time
Definition unit.h:34
Definition db_test_helpers.h:29
PassResult done()
Convenience helper for doing sen::Ok(sen::kernel::OpState {sen::kernel::OpFinished {}...
Definition component.h:25
Result< OpState, ExecError > PassResult
The result of operations that may be called multiple times.
Definition component_api.h:53
STL namespace.
std::unique_ptr< sen::kernel::TestKernel > kernel
Definition db_test_helpers.h:104
DualClassSetup()
Definition db_test_helpers.h:106
sen::kernel::TestComponent component
Definition db_test_helpers.h:103
std::shared_ptr< OtherObjImpl > otherObject
Definition db_test_helpers.h:102
std::shared_ptr< TestObjImpl > testObject
Definition db_test_helpers.h:101
sen::kernel::TestComponent component
Definition db_test_helpers.h:72
std::unique_ptr< sen::kernel::TestKernel > kernel
Definition db_test_helpers.h:73
std::shared_ptr< TestObjImpl > object
Definition db_test_helpers.h:71
SingleClassSetup()
Definition db_test_helpers.h:75