8#ifndef SEN_LIBS_KERNEL_TEST_INTEGRATION_TRANSPORT_HELPERS_H
9#define SEN_LIBS_KERNEL_TEST_INTEGRATION_TRANSPORT_HELPERS_H
17#include "test_helpers/test_helpers.stl.h"
29#include <spdlog/logger.h>
40#include <unordered_map>
51[[nodiscard]]
inline bool eq(T a, T b)
56 return eq(a.get(), b.get());
59 if constexpr (std::is_floating_point_v<T>)
61 constexpr T eps = 1e-3;
62 return std::fabs(a - b) < eps;
68template <
typename PropType>
69[[nodiscard]]
inline bool checkProp(std::promise<TestResult>& promise,
70 const std::string& propName,
74 if (!
eq(value, expectation))
77 err.append(
"Incorrect value of ");
79 promise.set_value(TestResult(err));
86[[nodiscard]]
inline bool checkMember(std::promise<TestResult>& promise,
const std::string& memberName,
bool isOk)
93 std::string err =
"Member ";
94 err.append(memberName);
95 err.append(
" adaptation failed.");
96 promise.set_value(TestResult(err));
103 return std::all_of(objects.begin(), objects.end(), [state](
const T* obj) { return obj->getState() == state; });
117 std::shared_ptr<sen::Subscription<StatefulObjectInterface>> objectsSub_;
118 std::unordered_map<sen::ObjectId, sen::ConnectionGuard> guardsMap_;
119 std::shared_ptr<spdlog::logger> logger_;
137 std::shared_ptr<spdlog::logger> logger_;
157 std::shared_ptr<sen::ObjectSource> bus_;
158 std::shared_ptr<sen::Subscription<ListenerInterface>> listenersSub_;
159 std::unordered_map<sen::ObjectId, sen::ConnectionGuard> guardsMap_;
160 std::array<bool, 5U> actionFlags_ = {
false,
false,
false,
false,
false};
181 std::shared_ptr<sen::ObjectSource> bus_;
182 std::shared_ptr<sen::Subscription<PublisherInterface>> publisherSub_;
183 std::unordered_map<sen::ObjectId, sen::ConnectionGuard> guardsMap_;
184 std::array<bool, 5U> checkFlags_ = {
false,
false,
false,
false,
false};
Here we define a set of template meta-programming helpers to let the compiler take some decisions bas...
User-facing kernel functions.
Definition component_api.h:217
API for objects when registered.
Definition component_api.h:407
What can be done while a component is running.
Definition component_api.h:469
void registered(sen::kernel::RegistrationApi &api) override
ListenerImpl(std::string name, const sen::VarMap &args)
void update(sen::kernel::RunApi &runApi) override
void registered(sen::kernel::RegistrationApi &api) override
ProcessTerminatorImpl(std::string name, const sen::VarMap &args)
void update(sen::kernel::RunApi &runApi) override
void registered(sen::kernel::RegistrationApi &api) override
PublisherImpl(std::string name, const sen::VarMap &args)
StateFulObjectImpl(std::string name, const sen::VarMap &args)
void registered(sen::kernel::RegistrationApi &api) override
spdlog::logger * getLogger() const
sen::kernel::KernelApi * getApi() const
std::conditional_t< std::is_arithmetic_v< T >||shouldBePassedByValueV< T >, T, AddConstRef< T > > MaybeRef
returns 'const T&' or 'T' depending on the type
Definition class_helpers.h:46
std::map< std::string, Var, std::less<> > VarMap
A map of vars to represent structures.
Definition var.h:107
Definition reader_writer.h:19
bool eq(T a, T b)
Definition helpers.h:51
bool checkProp(std::promise< TestResult > &promise, const std::string &propName, sen::MaybeRef< PropType > value, sen::MaybeRef< PropType > expectation)
Definition helpers.h:69
bool allObjectsWithState(const std::list< T * > &objects, const ConnectionState state)
Definition helpers.h:101
bool checkMember(std::promise< TestResult > &promise, const std::string &memberName, bool isOk)
Definition helpers.h:86
return false if T has not an 'using ValueType' or a 'typedef ValueType'
Definition class_helpers.h:51