rippled
Loading...
Searching...
No Matches
require.h
1#pragma once
2
3#include <test/jtx/requires.h>
4
5#include <functional>
6#include <vector>
7
8namespace xrpl {
9
10namespace detail {
11
12template <class Cond, class... Args>
13inline void
14require_args(test::jtx::requires_t& vec, Cond const& cond, Args const&... args)
15{
16 vec.push_back(cond);
17 if constexpr (sizeof...(args) > 0)
18 require_args(vec, args...);
19}
20
21} // namespace detail
22
23namespace test {
24namespace jtx {
25
27template <class... Args>
29required(Args const&... args)
30{
31 requires_t vec;
32 detail::require_args(vec, args...);
33 return [vec](Env& env) {
34 for (auto const& f : vec)
35 f(env);
36 };
37}
38
46{
47private:
49
50public:
51 template <class... Args>
52 require(Args const&... args) : cond_(required(args...))
53 {
54 }
55
56 void
57 operator()(Env&, JTx& jt) const
58 {
60 }
61};
62
63} // namespace jtx
64} // namespace test
65} // namespace xrpl
A transaction testing environment.
Definition Env.h:119
Check a set of conditions.
Definition require.h:46
void operator()(Env &, JTx &jt) const
Definition require.h:57
require(Args const &... args)
Definition require.h:52
T emplace_back(T... args)
void require_args(test::jtx::requires_t &vec, Cond const &cond, Args const &... args)
Definition require.h:14
std::function< void(Env &)> require_t
Definition requires.h:12
require_t required(Args const &... args)
Compose many condition functors into one.
Definition require.h:29
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
T push_back(T... args)
Execution context for applying a JSON transaction.
Definition JTx.h:25
requires_t require
Definition JTx.h:27