26#include <boost/algorithm/string.hpp>
51 contents (vector<string>
const& strings)
59 return boost::algorithm::to_lower_copy(src);
126 .matchElement ([](
GenNode const& spec,
string const& elm) ->
bool
128 return caseInsensitiveEqual(elm, spec.
data.
get<
string>());
130 .assignElement ([](
string& target,
GenNode const& spec) ->
bool
132 target = spec.
data.
get<
string>();
139 .onLocalChange ([&]()
161 CHECK (
"a, c, d, c" == contents(
subject_));
169 CHECK (
"a, c, D, C" == contents(
subject_));
180 CHECK (
"a, b, D, c" == contents(
subject_));
186 CHECK (
"a, b, D, c" == contents(
subject_));
A handle to allow for safe »remote implantation« of an unknown subclass into a given opaque InPlaceBu...
SUB & emplace(SUB &&implementation)
move-construct an instance of a subclass into the opaque buffer
generic builder to apply a diff description to a given target data structure.
void consume(DIFF &&diff)
Marker or capability interface: an otherwise not further disclosed data structure,...
static Builder< TreeMutator > build()
DSL: start building a custom adapted tree mutator, where the operations are tied by closures or wrapp...
std::vector< string > subject_
void buildMutator(TreeMutator::Handle buff) override
rig the test class itself to receive a diff mutation.
Generic Message with an embedded diff, to describe changes to model elements.
const GenNode VAL_D_UPPER
string lowerCase(string src)
bool caseInsensitiveEqual(string a, string b)
const GenNode VAL_C_UPPER
Implementation namespace for support and library code.
Test runner and basic definitions for tests.
string join(COLL &&coll, string const &delim=", ")
enumerate a collection's contents, separated by delimiter.
bool isnil(lib::time::Duration const &dur)
Simplistic test class runner.
#define LAUNCHER(_TEST_CLASS_, _GROUPS_)
generic data element node within a tree
Opaque message to effect a structural change on a target, which is likewise only known in an abstract...
static const Ref END
symbolic ID ref "_END_"
Concrete implementation to apply structural changes to hierarchical data structures.
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...