WIP: dream up a conveninence interface

This commit is contained in:
Fischlurch 2017-08-11 19:28:16 +02:00
parent a0040fe6ab
commit 6ee8737a17

View file

@ -124,8 +124,8 @@ namespace test{
run (Arg) run (Arg)
{ {
demonstrate_standardUsage(); demonstrate_standardUsage();
verify_diagnostics();
verify_builder(); verify_builder();
verify_diagnostics();
demonstrate_treeApplication(); demonstrate_treeApplication();
} }
@ -226,16 +226,70 @@ namespace test{
void void
verify_diagnostics() verify_builder()
{ {
UNIMPLEMENTED("add toString decorator"); DiffMessage diffMsg{ins(TYPE_X)
,set(ATTRIB1)
,del(CHILD_T)};
CHECK (!isnil (diffMsg));
CHECK (ins(TYPE_X) == *diffMsg);
CHECK (set(ATTRIB1) == *++diffMsg);
CHECK (del(CHILD_T) == *++diffMsg);
CHECK (isnil (++diffMsg));
VERIFY_ERROR(ITER_EXHAUST, *diffMsg);
// likewise works with a std::initializer_list
diffMsg = DiffMessage{{ins(TYPE_X)
,set(ATTRIB1)
,del(CHILD_T)}
};
CHECK (!isnil (diffMsg));
CHECK (ins(TYPE_X) == *diffMsg);
CHECK (set(ATTRIB1) == *++diffMsg);
CHECK (del(CHILD_T) == *++diffMsg);
CHECK (isnil (++diffMsg));
// even passing any suitable iterable works
diffMsg = DiffMessage{snapshot({ins(TYPE_X)
,set(ATTRIB1)
,del(CHILD_T)})
};
CHECK (!isnil (diffMsg));
CHECK (ins(TYPE_X) == *diffMsg);
CHECK (set(ATTRIB1) == *++diffMsg);
CHECK (del(CHILD_T) == *++diffMsg);
CHECK (isnil (++diffMsg));
// really anything iterable...
std::vector<DiffStep> steps;
CHECK (isnil (steps));
append_all(snapshot({ins(TYPE_X)
,set(ATTRIB1)
,del(CHILD_T)}), steps);
diffMsg = DiffMessage{steps};
CHECK (!isnil (diffMsg));
CHECK (ins(TYPE_X) == *diffMsg);
CHECK (set(ATTRIB1) == *++diffMsg);
CHECK (del(CHILD_T) == *++diffMsg);
CHECK (isnil (++diffMsg));
} }
void void
verify_builder() verify_diagnostics()
{ {
UNIMPLEMENTED("a builder function to simplify tests"); UNIMPLEMENTED("add toString decorator");
} }