Library: verify DataSrc binding for Map
This commit is contained in:
parent
597d8191c7
commit
4c4ae0691c
2 changed files with 197 additions and 17 deletions
|
|
@ -42,6 +42,7 @@ using std::regex_search;
|
|||
using std::smatch;
|
||||
using util::_Fmt;
|
||||
using util::join;
|
||||
using lib::diff::MakeRec;
|
||||
|
||||
|
||||
namespace lib {
|
||||
|
|
@ -455,6 +456,66 @@ for} tail...
|
|||
void
|
||||
verify_Map_binding()
|
||||
{
|
||||
MapS data{{"a","5"}
|
||||
,{"i","p,q,r"}
|
||||
,{"i.p.a","11"}
|
||||
,{"i.q.a","22"}
|
||||
,{"i.q.aa","222"}};
|
||||
|
||||
auto binding = bindDataSource (data);
|
||||
CHECK (meta::typeStr(binding) == "TextTemplate::DataSource<map<string, string>, void>"_expect );
|
||||
CHECK ( binding.contains("a"));
|
||||
CHECK (not binding.contains("b"));
|
||||
CHECK (binding.retrieveContent("a") == "5"_expect );
|
||||
CHECK (binding.retrieveContent("i") == "p,q,r"_expect );
|
||||
CHECK (binding.retrieveContent("i.q.aa") == "222"_expect );
|
||||
CHECK (not binding.isNested());
|
||||
|
||||
auto it = binding.getSequence("i");
|
||||
CHECK (it);
|
||||
CHECK (*it == "i.p."_expect );
|
||||
CHECK (meta::typeStr(it) == "IterExplorer<IterableDecorator<string, CheckedCore<iter_explorer::Transformer<iter_explorer::BaseAdapter<RegexSearchIter>, string> > > >"_expect );
|
||||
|
||||
auto subBind = binding.openContext(it);
|
||||
CHECK (subBind.isNested());
|
||||
CHECK ((meta::is_same<decltype(binding),decltype(subBind)>()));
|
||||
CHECK ( subBind.contains("a"));
|
||||
CHECK (not subBind.contains("b"));
|
||||
CHECK (not subBind.contains("aa"));
|
||||
CHECK ( subBind.contains("i"));
|
||||
CHECK (subBind.retrieveContent("i") == "p,q,r"_expect );
|
||||
CHECK (subBind.retrieveContent("a") == "11"_expect );
|
||||
|
||||
++it;
|
||||
CHECK (it);
|
||||
CHECK (*it == "i.q."_expect );
|
||||
|
||||
// Note: existing sub-ctx is not automatically linked to the Iterator
|
||||
CHECK (subBind.retrieveContent("a") == "11"_expect );
|
||||
// ...rather need to open a new sub-ctx explicitly
|
||||
subBind = binding.openContext(it);
|
||||
CHECK (subBind.isNested());
|
||||
CHECK (subBind.contains("a"));
|
||||
CHECK (subBind.contains("aa"));
|
||||
CHECK (subBind.retrieveContent("a") == "22"_expect );
|
||||
CHECK (subBind.retrieveContent("aa") == "222"_expect);
|
||||
CHECK (subBind.retrieveContent("i.p.a") == "11"_expect );
|
||||
CHECK (subBind.retrieveContent("i.q.a") == "22"_expect );
|
||||
|
||||
++it;
|
||||
CHECK (it);
|
||||
CHECK (*it == "i.r."_expect );
|
||||
|
||||
subBind = binding.openContext(it);
|
||||
CHECK ( subBind.contains("a"));
|
||||
CHECK (not subBind.contains("aa"));
|
||||
CHECK (subBind.retrieveContent("a") == "5"_expect );
|
||||
CHECK (subBind.retrieveContent("i.p.a") == "11"_expect );
|
||||
CHECK (subBind.retrieveContent("i.q.a") == "22"_expect );
|
||||
|
||||
++it;
|
||||
CHECK (isnil (it));
|
||||
VERIFY_ERROR (ITER_EXHAUST, *it);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -464,6 +525,106 @@ for} tail...
|
|||
void
|
||||
verify_ETD_binding()
|
||||
{
|
||||
auto root = MakeRec()
|
||||
.set("a", 5)
|
||||
.set("i", MakeRec()
|
||||
.scope( MakeRec()
|
||||
.set("a", 11)
|
||||
.genNode()
|
||||
, MakeRec()
|
||||
.set("a", 22)
|
||||
.set("aa", 222)
|
||||
.genNode()
|
||||
))
|
||||
.genNode();
|
||||
SHOW_EXPR(root)
|
||||
auto binding = bindDataSource (root);
|
||||
SHOW_TYPE(decltype(binding))
|
||||
SHOW_EXPR(meta::typeStr(binding))
|
||||
SHOW_EXPR(binding.contains("a"))
|
||||
SHOW_EXPR(binding.contains("b"))
|
||||
SHOW_EXPR(binding.retrieveContent("a"))
|
||||
SHOW_EXPR(binding.retrieveContent("i"))
|
||||
#if false /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
SHOW_EXPR(binding.retrieveContent("i.q.aa"))
|
||||
SHOW_EXPR(binding.isNested())
|
||||
CHECK (meta::typeStr(binding) == "TextTemplate::DataSource<map<string, string>, void>"_expect );
|
||||
CHECK ( binding.contains("a"));
|
||||
CHECK (not binding.contains("b"));
|
||||
CHECK (binding.retrieveContent("a") == "5"_expect );
|
||||
CHECK (binding.retrieveContent("i") == "p,q,r"_expect );
|
||||
CHECK (binding.retrieveContent("i.q.aa") == "222"_expect );
|
||||
CHECK (not binding.isNested());
|
||||
|
||||
auto it = binding.getSequence("i");
|
||||
SHOW_EXPR(meta::typeStr(it))
|
||||
SHOW_EXPR(bool(it))
|
||||
SHOW_EXPR(*it)
|
||||
CHECK (it);
|
||||
CHECK (*it == "i.p."_expect );
|
||||
CHECK (meta::typeStr(it) == "IterExplorer<IterableDecorator<string, CheckedCore<iter_explorer::Transformer<iter_explorer::BaseAdapter<RegexSearchIter>, string> > > >"_expect );
|
||||
|
||||
auto subBind = binding.openContext(it);
|
||||
SHOW_EXPR(meta::typeStr(subBind))
|
||||
SHOW_EXPR(bool(std::is_same<decltype(binding),decltype(subBind)>()))
|
||||
SHOW_EXPR(subBind.isNested())
|
||||
SHOW_EXPR(subBind.contains("a"))
|
||||
SHOW_EXPR(subBind.contains("b"))
|
||||
SHOW_EXPR(subBind.contains("aa"))
|
||||
SHOW_EXPR(subBind.contains("i"))
|
||||
SHOW_EXPR(subBind.retrieveContent("i"))
|
||||
SHOW_EXPR(subBind.retrieveContent("a"))
|
||||
CHECK (subBind.isNested());
|
||||
CHECK ((meta::is_same<decltype(binding),decltype(subBind)>()));
|
||||
CHECK ( subBind.contains("a"));
|
||||
CHECK (not subBind.contains("b"));
|
||||
CHECK (not subBind.contains("aa"));
|
||||
CHECK ( subBind.contains("i"));
|
||||
CHECK (subBind.retrieveContent("i") == "p,q,r"_expect );
|
||||
CHECK (subBind.retrieveContent("a") == "11"_expect );
|
||||
++it;
|
||||
SHOW_EXPR(bool(it))
|
||||
SHOW_EXPR(*it)
|
||||
CHECK (it);
|
||||
CHECK (*it == "i.q."_expect );
|
||||
SHOW_EXPR(subBind.retrieveContent("a"))
|
||||
CHECK (subBind.retrieveContent("a") == "11"_expect );
|
||||
subBind = binding.openContext(it);
|
||||
SHOW_EXPR(subBind.isNested())
|
||||
SHOW_EXPR(subBind.contains("a"))
|
||||
SHOW_EXPR(subBind.contains("aa"))
|
||||
SHOW_EXPR(subBind.retrieveContent("a"))
|
||||
SHOW_EXPR(subBind.retrieveContent("aa"))
|
||||
SHOW_EXPR(subBind.retrieveContent("i.p.a"))
|
||||
SHOW_EXPR(subBind.retrieveContent("i.q.a"))
|
||||
CHECK (subBind.isNested());
|
||||
CHECK (subBind.contains("a"));
|
||||
CHECK (subBind.contains("aa"));
|
||||
CHECK (subBind.retrieveContent("a") == "22"_expect );
|
||||
CHECK (subBind.retrieveContent("aa") == "222"_expect);
|
||||
CHECK (subBind.retrieveContent("i.p.a") == "11"_expect );
|
||||
CHECK (subBind.retrieveContent("i.q.a") == "22"_expect );
|
||||
++it;
|
||||
SHOW_EXPR(bool(it))
|
||||
CHECK (it);
|
||||
SHOW_EXPR(*it)
|
||||
CHECK (*it == "i.r."_expect );
|
||||
subBind = binding.openContext(it);
|
||||
SHOW_EXPR(subBind.contains("a"))
|
||||
SHOW_EXPR(subBind.contains("aa"))
|
||||
SHOW_EXPR(subBind.retrieveContent("a"))
|
||||
SHOW_EXPR(subBind.retrieveContent("i.p.a"))
|
||||
SHOW_EXPR(subBind.retrieveContent("i.q.a"))
|
||||
CHECK ( subBind.contains("a"));
|
||||
CHECK (not subBind.contains("aa"));
|
||||
CHECK (subBind.retrieveContent("a") == "5"_expect );
|
||||
CHECK (subBind.retrieveContent("i.p.a") == "11"_expect );
|
||||
CHECK (subBind.retrieveContent("i.q.a") == "22"_expect );
|
||||
++it;
|
||||
SHOW_EXPR(bool(it))
|
||||
CHECK (isnil (it));
|
||||
VERIFY_ERROR (ITER_EXHAUST, *it);
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -113535,9 +113535,9 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<node CREATED="1711331469327" ID="ID_1328551681" MODIFIED="1711331478314" TEXT="Ebene-2 : Keys zusammensetzen"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1711335652300" ID="ID_1349211278" MODIFIED="1711335681237" TEXT="Test">
|
||||
<arrowlink COLOR="#d00f57" DESTINATION="ID_1713123157" ENDARROW="Default" ENDINCLINATION="104;-13;" ID="Arrow_ID_413173793" STARTARROW="None" STARTINCLINATION="-338;-54;"/>
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<node COLOR="#338800" CREATED="1711335652300" ID="ID_1349211278" MODIFIED="1711560321006" TEXT="Test">
|
||||
<arrowlink COLOR="#0f4ed0" DESTINATION="ID_1713123157" ENDARROW="Default" ENDINCLINATION="192;-30;" ID="Arrow_ID_413173793" STARTARROW="None" STARTINCLINATION="-485;165;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -113947,27 +113947,32 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1711508533490" ID="ID_1740637248" MODIFIED="1711508536658" TEXT="Test">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1711508533490" ID="ID_1740637248" MODIFIED="1711560355372" TEXT="Test">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#ff00cb" CREATED="1711508538010" ID="ID_1041108883" MODIFIED="1711508554635" TEXT="puh....">
|
||||
<font NAME="SansSerif" SIZE="11"/>
|
||||
<icon BUILTIN="smiley-neutral"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711508556799" ID="ID_681566820" MODIFIED="1711508573324" TEXT="erst mal schrittweise herantasten...">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711508602973" ID="ID_1154919226" MODIFIED="1711508628990" TEXT="einen Beispiel-Daten-Kontext bereitstellen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1711508556799" ID="ID_681566820" MODIFIED="1711560360996" TEXT="erst mal schrittweise herantasten...">
|
||||
<arrowlink COLOR="#236cc2" DESTINATION="ID_778488140" ENDARROW="Default" ENDINCLINATION="97;-12;" ID="Arrow_ID_1117346354" STARTARROW="None" STARTINCLINATION="67;272;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1711508602973" ID="ID_1154919226" MODIFIED="1711560365246" TEXT="einen Beispiel-Daten-Kontext bereitstellen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711508585131" ID="ID_1692560421" MODIFIED="1711508628990" TEXT="die DataSource explizit erzeugen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1711508585131" ID="ID_1692560421" MODIFIED="1711560367785" TEXT="die DataSource explizit erzeugen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711508631813" ID="ID_464128354" MODIFIED="1711508654315" TEXT="die Zugriffsmethoden durchspielen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1711508631813" ID="ID_464128354" MODIFIED="1711560375265" TEXT="die Zugriffsmethoden durchspielen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711508645715" ID="ID_1542705162" MODIFIED="1711508654315" TEXT="dann weiter zur Iteration">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1711560334047" ID="ID_101340479" MODIFIED="1711560352394" STYLE="fork" TEXT="brauche dedizierten String-Renderer">
|
||||
<font NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -114067,12 +114072,26 @@ std::cout << tmpl.render({"what", "World"}) << s
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1710793522467" ID="ID_1713123157" MODIFIED="1710793546412" TEXT="verify_Map_binding">
|
||||
<linktarget COLOR="#d00f57" DESTINATION="ID_1713123157" ENDARROW="Default" ENDINCLINATION="104;-13;" ID="Arrow_ID_413173793" SOURCE="ID_1349211278" STARTARROW="None" STARTINCLINATION="-338;-54;"/>
|
||||
<node COLOR="#338800" CREATED="1710793522467" ID="ID_1713123157" MODIFIED="1711560321006" TEXT="verify_Map_binding">
|
||||
<linktarget COLOR="#0f4ed0" DESTINATION="ID_1713123157" ENDARROW="Default" ENDINCLINATION="192;-30;" ID="Arrow_ID_413173793" SOURCE="ID_1349211278" STARTARROW="None" STARTINCLINATION="-485;165;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1711560219750" ID="ID_1483659926" MODIFIED="1711560279366" TEXT="Map explizit bauen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1711560226369" ID="ID_11952279" MODIFIED="1711560281334" TEXT="DataSrc explizit erzeugen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1711560235266" ID="ID_1820876835" MODIFIED="1711560282509" TEXT="alle DataSrc-Methoden durchspielen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1710793547451" ID="ID_778488140" MODIFIED="1711560211460" TEXT="verify_ETD_binding">
|
||||
<linktarget COLOR="#236cc2" DESTINATION="ID_778488140" ENDARROW="Default" ENDINCLINATION="97;-12;" ID="Arrow_ID_1117346354" SOURCE="ID_681566820" STARTARROW="None" STARTINCLINATION="67;272;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1711560265587" ID="ID_1134491764" MODIFIED="1711560277302" TEXT="alles völlig analog wie beim Map-Binding">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1710793547451" ID="ID_778488140" MODIFIED="1710793552697" TEXT="verify_ETD_binding">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1711560243235" ID="ID_415632339" MODIFIED="1711560257453" TEXT="ein Template damit instantieren"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue