builder module

namespace cauldron
template <class Object, class... Value>
class Builder
#include <builder.h>

Strategy which generates Object instances with constructor arguments generated from corresponding strategies.

Note
Object should have appropriate constructor so types and order of passed strategies agree with types and order of constructor parameters or compile-time error will arise.
Template Parameters
  • Object: type of objects generated by strategy.

Inherits from cauldron::CloneHelper< Object, Builder< Object, Value... > >

Public Functions

Builder(const cauldron::Strategy<Value>&... strategy)

Parameters
  • strategy: strategy to generate constructor arguments from.

Builder(const Builder<Object, Value...> &builder)

Default copy constructor doesn’t fit since we’re using std::unique_ptr as class members which is not copyable.

Object operator()() const

Generates pseudo-random Object instance.

Private Functions

template <std::size_t... Indices>
Object produce(const std::tuple<std::unique_ptr<cauldron::Strategy<Value>>...> &strategies, std::index_sequence<Indices...>) const

Helper function for unpacking Builder::strategies_ tuple into variadic Strategy instances.

Object produce(const std::unique_ptr<cauldron::Strategy<Value>>&... strategy) const

Helper function for producing values from variadic Strategy instances.

std::tuple<std::unique_ptr<cauldron::Strategy<Value>>...> clone_strategies() const
template <std::size_t... Indices>
std::tuple<std::unique_ptr<cauldron::Strategy<Value>>...> clone_strategies(const std::tuple<std::unique_ptr<cauldron::Strategy<Value>>...> &strategies, std::index_sequence<Indices...>) const

Helper function for unpacking Builder::strategies_ tuple into variadic Strategy instances.

std::tuple<std::unique_ptr<cauldron::Strategy<Value>>...> clone_strategies(const std::unique_ptr<cauldron::Strategy<Value>>&... strategy) const

Helper function for cloning variadic Strategy instances.

Private Members

std::tuple<std::unique_ptr<cauldron::Strategy<Value>>...> strategies_