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
17#include "sen/core/base/uuid.h"
21
22// std
23#include <chrono>
24#include <filesystem>
25#include <memory>
26#include <string>
27
29{
30
32{
33public:
34 TempDir(): path_(std::filesystem::temp_directory_path() / ("db_test_" + getRandomPathPostFix()))
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:
58 static std::string getRandomPathPostFix() { return sen::UuidRandomGenerator()().toString(); }
59
60private:
61 std::filesystem::path path_;
62};
63
64class TestObjImpl: public db_test::TestObjBase
65{
66public:
67 SEN_NOCOPY_NOMOVE(TestObjImpl)
68 using TestObjBase::TestObjBase;
69 ~TestObjImpl() override = default;
70 using TestObjBase::valueChanged;
71};
72
74{
75 std::shared_ptr<TestObjImpl> object; // NOLINT(misc-non-private-member-variables-in-classes)
76 sen::kernel::TestComponent component; // NOLINT(misc-non-private-member-variables-in-classes)
77 std::unique_ptr<sen::kernel::TestKernel> kernel; // NOLINT(misc-non-private-member-variables-in-classes)
78
80 {
81 object = std::make_shared<TestObjImpl>("testObj", sen::VarMap {});
82 component.onInit(
84 {
85 auto source = api.getSource("local.test");
86 source->add(object);
87 return sen::kernel::done();
88 });
89 component.onRun([](auto& api) { return api.execLoop(std::chrono::seconds(1), []() {}); });
90 kernel = std::make_unique<sen::kernel::TestKernel>(&component);
91 kernel->step();
92 }
93};
94
95class OtherObjImpl: public db_test::OtherObjBase
96{
97public:
98 SEN_NOCOPY_NOMOVE(OtherObjImpl)
99 using OtherObjBase::OtherObjBase;
100 ~OtherObjImpl() override = default;
101};
102
104{
105 std::shared_ptr<TestObjImpl> testObject; // NOLINT(misc-non-private-member-variables-in-classes)
106 std::shared_ptr<OtherObjImpl> otherObject; // NOLINT(misc-non-private-member-variables-in-classes)
107 sen::kernel::TestComponent component; // NOLINT(misc-non-private-member-variables-in-classes)
108 std::unique_ptr<sen::kernel::TestKernel> kernel; // NOLINT(misc-non-private-member-variables-in-classes)
109
111 {
112 testObject = std::make_shared<TestObjImpl>("testObj", sen::VarMap {});
113 otherObject = std::make_shared<OtherObjImpl>("otherObj", sen::VarMap {});
114 component.onInit(
116 {
117 auto source = api.getSource("local.test");
118 source->add(testObject);
119 source->add(otherObject);
120 return sen::kernel::done();
121 });
122 component.onRun([](auto& api) { return api.execLoop(std::chrono::seconds(1), []() {}); });
123 kernel = std::make_unique<sen::kernel::TestKernel>(&component);
124 kernel->step();
125 }
126};
127} // namespace sen::db::test
128
129#endif // SEN_DB_TEST_HELPERS_H
Definition uuid.h:215
Definition db_test_helpers.h:96
~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:65
~TestObjImpl() override=default
What can be done when initializing a component.
Definition component_api.h:235
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
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:56
STL namespace.
std::unique_ptr< sen::kernel::TestKernel > kernel
Definition db_test_helpers.h:108
DualClassSetup()
Definition db_test_helpers.h:110
sen::kernel::TestComponent component
Definition db_test_helpers.h:107
std::shared_ptr< OtherObjImpl > otherObject
Definition db_test_helpers.h:106
std::shared_ptr< TestObjImpl > testObject
Definition db_test_helpers.h:105
sen::kernel::TestComponent component
Definition db_test_helpers.h:76
std::unique_ptr< sen::kernel::TestKernel > kernel
Definition db_test_helpers.h:77
std::shared_ptr< TestObjImpl > object
Definition db_test_helpers.h:75
SingleClassSetup()
Definition db_test_helpers.h:79