Invocation: draft a scheme how to provide dummy-operations

After the actual processing functions are defined,
the "next level" of test framework building is to find a way
how these bare bone operations can be used easily from a test
with the goal to ''build and invoke a Render-Node''
 * we need some descriptor
 * the bare bone operation must be packaged into an ''Invocation-Adapter''
 * we need some means to configure variants of the setup
This commit is contained in:
Fischlurch 2024-11-28 23:41:56 +01:00
parent ec0c14e129
commit d80966c1fb
4 changed files with 223 additions and 53 deletions

View file

@ -18,6 +18,7 @@
#include "lib/test/run.hpp"
#include "lib/hash-combine.hpp"
#include "lib/test/test-helper.hpp"
#include "steam/engine/test-rand-ontology.hpp" ///////////TODO
#include "lib/test/diagnostic-output.hpp"/////////////////TODO
#include "lib/iter-zip.hpp"
@ -76,6 +77,8 @@ namespace test {
processing_manipulateMultichan();
processing_manipulateFrame();
processing_combineFrames();
testRand_simpleUsage();
}
@ -263,6 +266,19 @@ namespace test {
CHECK ( i1Buff->isValid());
CHECK (*i1Buff == *oBuff); // second invocation exactly reproduced data from first invocation
}
/** @test demonstrate simple usage of test-render setup
* - access the TestRandOntology as singleton
* - create a Spec record
*/
void
testRand_simpleUsage()
{
auto spec = testRand().setupGenerator();
SHOW_EXPR(spec.PROTO);
CHECK (spec.PROTO == "generate-TestFrame"_expect);
}
};

View file

@ -159,5 +159,11 @@ namespace test {
/* =========== Test-Rand-Ontology ================ */
/** Storage for the Singleton-Accessor/Factory */
lib::Depend<TestRandOntology> testRand;
}}} // namespace steam::engine::test

View file

@ -21,7 +21,10 @@
#include "lib/error.hpp"
#include "lib/symbol.hpp"
#include "lib/depend.hpp"
#include "lib/nocopy.hpp"
#include "lib/format-string.hpp"
#include "steam/engine/testframe.hpp"
#include <array>
@ -33,6 +36,8 @@ namespace engine{
namespace test {
using std::string;
using lib::Literal;
using util::_Fmt;
/** produce sequences of frames with (reproducible) random data */
void generateFrame (TestFrame* buff, size_t frameNr =0, uint flavour =0);
@ -81,15 +86,37 @@ namespace test {
{
public:
struct Spec;
~TestRandOntology() = default;
TestRandOntology() = default;
Spec setupGenerator (string qual ="");
private:
};
struct TestRandOntology::Spec
: util::Cloneable
{
const string PROTO;
/** */
Spec (Literal kind
,Literal type
)
: PROTO{_Fmt{"%s-%s"} % kind % type}
{ }
};
inline TestRandOntology::Spec
TestRandOntology::setupGenerator (string qual)
{
Spec spec{"generate","TestFrame"};
return spec;
}
/** Singleton accessor */
extern lib::Depend<TestRandOntology> testRand;

View file

@ -20281,9 +20281,7 @@
<node CREATED="1480694675624" ID="ID_1512443419" MODIFIED="1557498707223" TEXT="Einstiegspunkt"/>
<node CREATED="1480694679232" ID="ID_1344733448" MODIFIED="1557498707223">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
sets f&#252;r <b>eine feste</b>&#160;session::Timeline
@ -20689,9 +20687,7 @@
<node CREATED="1569797018132" ID="ID_609962345" MODIFIED="1573241988838" STYLE="fork" TEXT="w&#xe4;hrend der Lebensdauer erlaubt es dieses Element in der Anzeige zu repositionieren"/>
<node CREATED="1569797689767" ID="ID_454948151" MODIFIED="1576282358096" STYLE="fork" TEXT="kann Kind-ViewHooked relativ zum platzierten Element erzeugen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
d.h. das durch dieses ViewHooked eingef&#252;gte Element definiert auch ein lokales Koordinatensystem.
@ -21099,9 +21095,7 @@
<node CREATED="1575217494446" ID="ID_1143595794" MODIFIED="1575217521744" TEXT="Implementiere: ViewHookable&lt;TrackBody&gt;::getChildHookable&lt;Clip&gt;(TrackBody elm)"/>
<node CREATED="1575217549604" ID="ID_280485004" MODIFIED="1575217592722" TEXT="ViewHookable&lt;TrackBody&gt; ist de-facto selber ein TrackBody">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
n&#228;mlich der Vater-TrackBody
@ -21806,9 +21800,7 @@
<icon BUILTIN="yes"/>
<node CREATED="1575062659140" ID="ID_1145995477" MODIFIED="1576282358092" TEXT="im Regelfall ist die Umordnung erfolgreich">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
es gibt keinen prinzipiellen Grund, warum sie scheitern k&#246;nnte
@ -22937,9 +22929,7 @@
<node CREATED="1480778511086" ID="ID_1612105579" MODIFIED="1518487921082" TEXT="keine Checks im Code"/>
<node CREATED="1480778532907" ID="ID_1167492250" MODIFIED="1576282358079">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
funktioniert <i>fast immer</i>
@ -24678,9 +24668,7 @@
<node CREATED="1583435204373" ID="ID_741511380" MODIFIED="1583435220824" TEXT="sie rekurieren mit Insider-Wissen auf den Visitor zur&#xfc;ck"/>
<node CREATED="1583435311207" ID="ID_146344730" MODIFIED="1583435342779" TEXT="aber die DisplayEvaluation ist selbst der Visitor">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
insofern f&#228;llt die doppelte Abstraktion und indirektion hier weg
@ -28420,9 +28408,7 @@
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1677630791167" ID="ID_235578795" MODIFIED="1677630834401" TEXT="in der Tat: CairoContext::user_to_device_distance() &#xd83e;&#xdc32; 1"/>
<node COLOR="#5b280f" CREATED="1677718481581" ID="ID_655908718" MODIFIED="1677775837317" TEXT="sicherheitshalber aber doch mit einarbeiten">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
ich wei&#223; einfach nicht, unter welchen Umst&#228;nden dann doch mal ein anderer Faktor als 1.0 im gegebenen CairoContext vorliegt; und wenn das dann passiert, w&#228;re das ein ziemlich obskures Fehlverhalten und man wird dann nicht ohne Weiteres die richtige Stelle finden, um diesen Korrekturfaktor einzubringen...
@ -34833,9 +34819,7 @@
</node>
<node CREATED="1479601925938" ID="ID_22286545" MODIFIED="1557498707231">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
das lokale Element mu&#223; nur als View <i>fungieren</i>
@ -38925,9 +38909,7 @@
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1624113834120" ID="ID_783305795" MODIFIED="1624114136410">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Stand: funktioniert &#8213; ist aber <i>halbfertig</i>
@ -40464,9 +40446,7 @@
</node>
<node CREATED="1671324422426" ID="ID_1192793970" MODIFIED="1671324572988">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Zoom-Metrik verwendet <b>integer-Br&#252;che</b>
@ -41124,9 +41104,7 @@
<node CREATED="1667757241668" ID="ID_149215399" MODIFIED="1667757383608" TEXT="zu jedem gegebenen Nenner &gt; 1..."/>
<node CREATED="1667757251446" ID="ID_1048380323" MODIFIED="1667759097045">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
l&#228;&#223;t sich ein &#187;<b>unbeherrschbarer Summand</b>&#171; konstruieren
@ -41925,9 +41903,7 @@
</node>
<node CREATED="1669508094694" ID="ID_1971396713" MODIFIED="1669508365178" TEXT="konsistentes Verhalten ist aber schwer aufrecht zu erhalten">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
und zwar dann, wenn auch noch die Window-Parameter extrem sind &#8212; dann sieht die Lage ziemlich hoffnungslos aus
@ -42232,9 +42208,7 @@
</node>
<node CREATED="1670529398909" ID="ID_1760275990" MODIFIED="1670529444484" TEXT="kann nicht durch weitere Beschr&#xe4;nkungen gel&#xf6;st werden">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
sofern wir &#252;berhaupt relevant gro&#223;e Zeitspannen zulassen wollen
@ -42494,9 +42468,7 @@
</node>
<node CREATED="1670617722212" ID="ID_552344182" MODIFIED="1670618342028">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
<u>und <b>redundant</b></u>: macht nicht <font face="Monospaced" color="#461bac">conformWindowToMetric()</font>&#160; inzwischen genau dassselbe??
@ -87664,6 +87636,33 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</body>
</html></richcontent>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1732848588139" ID="ID_1339048946" MODIFIED="1732848721402" TEXT="m&#xf6;gliche Struktur zeichnet sich ab....">
<linktarget COLOR="#b8d9ff" DESTINATION="ID_1339048946" ENDARROW="Default" ENDINCLINATION="946;68;" ID="Arrow_ID_1341126818" SOURCE="ID_645445153" STARTARROW="None" STARTINCLINATION="-962;-118;"/>
<icon BUILTIN="idea"/>
<node CREATED="1732848726473" HGAP="27" ID="ID_77516810" MODIFIED="1732848845170" TEXT="es k&#xf6;nnte eine meta-DSL werden..." VSHIFT="-2">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...mit der man im Test sagen kann
</p>
<ul>
<li>
ich m&#246;chte diese Art von Processing
</li>
<li>
mit diesen Datentypen
</li>
<li>
und diesen Varianten / Qualifiern
</li>
</ul>
</body>
</html>
</richcontent>
</node>
<node CREATED="1732849768862" HGAP="36" ID="ID_611920770" MODIFIED="1732849785352" TEXT="man erzeugt jeweils einen Spec-Record" VSHIFT="-9"/>
</node>
</node>
<node CREATED="1730850551731" HGAP="22" ID="ID_569300878" MODIFIED="1732762660137" TEXT="processing functions" VSHIFT="-16">
<node COLOR="#338800" CREATED="1730862521858" ID="ID_1019281023" MODIFIED="1730862530365" TEXT="processing_generateFrame">
@ -89066,7 +89065,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<linktarget COLOR="#961457" DESTINATION="ID_1119707110" ENDARROW="Default" ENDINCLINATION="989;-28;" ID="Arrow_ID_1007029324" SOURCE="ID_339209474" STARTARROW="None" STARTINCLINATION="894;52;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719967803009" ID="ID_1698494454" MODIFIED="1719968250669" TEXT="&#x27f9; die Reihenfolge der Lead-Pulls mu&#xdf; vom Builder w&#xe4;hlbar sein">
<linktarget COLOR="#5e5e77" DESTINATION="ID_1698494454" ENDARROW="Default" ENDINCLINATION="-306;13;" ID="Arrow_ID_151141126" SOURCE="ID_172436088" STARTARROW="None" STARTINCLINATION="597;43;"/>
<linktarget COLOR="#5e5e77" DESTINATION="ID_1698494454" ENDARROW="Default" ENDINCLINATION="-306;13;" ID="Arrow_ID_151141126" SOURCE="ID_172436088" STARTARROW="None" STARTINCLINATION="610;45;"/>
<icon BUILTIN="yes"/>
</node>
</node>
@ -93435,8 +93434,20 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
&#10233; als n&#228;chstes mu&#223; aus aus den Manipulationen eine <i>richtige Funktion</i>&#160;gemacht werden
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<node CREATED="1732847891400" ID="ID_1815158658" MODIFIED="1732847907714" TEXT="diese mu&#xdf; man an den Node-Builder geben k&#xf6;nnen"/>
<node CREATED="1732847908806" ID="ID_1488872244" MODIFIED="1732847919105" TEXT="d.h. es handelt sich um einen InvocationAdapter"/>
<node CREATED="1732847920538" ID="ID_387028601" MODIFIED="1732847954724" TEXT="siehe NodeLinkage_test">
<node COLOR="#4b226e" CREATED="1732847956256" ID="ID_1871592043" MODIFIED="1732847990907" TEXT="(soweit implementiert)">
<font ITALIC="true" NAME="SansSerif" SIZE="11"/>
</node>
<node COLOR="#4b226e" CREATED="1732847959287" ID="ID_392065997" MODIFIED="1732847990907" TEXT="hatte erst mal einen Dummy-Placeholder verwendet">
<font NAME="SansSerif" SIZE="9"/>
</node>
<node BACKGROUND_COLOR="#9a785f" COLOR="#fefac9" CREATED="1732848013992" ID="ID_941625824" MODIFIED="1732848555405" TEXT="&#x27f9; Leit-Aufgabe &#xd83d;&#xdca1;">
<arrowlink COLOR="#fefbd6" DESTINATION="ID_645445153" ENDARROW="Default" ENDINCLINATION="132;-992;" ID="Arrow_ID_141565539" STARTARROW="None" STARTINCLINATION="-379;55;"/>
</node>
</node>
</node>
</node>
</node>
@ -93457,13 +93468,25 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728785502988" ID="ID_1973895762" MODIFIED="1729962183043" TEXT="Prototyping-1">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728785502988" HGAP="66" ID="ID_1973895762" MODIFIED="1732848541775" TEXT="Prototyping-1" VSHIFT="6">
<linktarget COLOR="#ed384d" DESTINATION="ID_1973895762" ENDARROW="Default" ENDINCLINATION="-1324;220;" ID="Arrow_ID_95845616" SOURCE="ID_623146928" STARTARROW="None" STARTINCLINATION="481;51;"/>
<linktarget COLOR="#ff6936" DESTINATION="ID_1973895762" ENDARROW="Default" ENDINCLINATION="-884;1900;" ID="Arrow_ID_208548527" SOURCE="ID_694989290" STARTARROW="None" STARTINCLINATION="369;22;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1728787061205" ID="ID_1090922930" MODIFIED="1728787084161" TEXT="das wird jetzt der &#xbb;Butter-bei-die-Fische&#xab;-Testfall">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
<node COLOR="#435e98" CREATED="1728785801255" ID="ID_11974610" MODIFIED="1729983023889" TEXT="eine Node tats&#xe4;chlch bauen k&#xf6;nnen">
<font NAME="SansSerif" SIZE="9"/>
</node>
<node BACKGROUND_COLOR="#f2d8ab" COLOR="#c51d01" CREATED="1728785801255" ID="ID_367879586" MODIFIED="1732847002993" TEXT="eine Node tats&#xe4;chlich aufrufen k&#xf6;nnen">
<font NAME="SansSerif" SIZE="9"/>
</node>
<node BACKGROUND_COLOR="#f2d8ab" COLOR="#c51d01" CREATED="1728785801255" ID="ID_983145807" MODIFIED="1732847002993" TEXT="ein Netzwerk von Nodes tats&#xe4;chlich verschalten k&#xf6;nnen">
<font NAME="SansSerif" SIZE="9"/>
</node>
<node BACKGROUND_COLOR="#f2d8ab" COLOR="#c51d01" CREATED="1728785801255" ID="ID_388950409" MODIFIED="1732847002993" TEXT="belegen da&#xdf; Funktionen in richtiger Reihenfolge aufgerufen wurden">
<font NAME="SansSerif" SIZE="9"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1728785663035" ID="ID_1585637379" MODIFIED="1728785801243" TEXT="Integration des einfachst-m&#xf6;glichen Builder-Terms">
<linktarget COLOR="#b60103" DESTINATION="ID_1585637379" ENDARROW="Default" ENDINCLINATION="-1157;-58;" ID="Arrow_ID_1730193164" SOURCE="ID_797574499" STARTARROW="None" STARTINCLINATION="1290;69;"/>
@ -93522,7 +93545,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#338800" CREATED="1728785882504" ID="ID_607531791" MODIFIED="1730682058719" TEXT="Spec aus dem Turnout">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1729986405645" ID="ID_1710935234" MODIFIED="1730774358145" TEXT="Spec der umschlie&#xdf;enden ProcNode">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1729986405645" ID="ID_1710935234" LINK="#ID_355149059" MODIFIED="1732847806724" TEXT="Spec der umschlie&#xdf;enden ProcNode">
<arrowlink COLOR="#666a8d" DESTINATION="ID_1032840307" ENDARROW="Default" ENDINCLINATION="312;27;" ID="Arrow_ID_1338984517" STARTARROW="None" STARTINCLINATION="158;-13;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#c8c0b6" CREATED="1730762304054" HGAP="25" ID="ID_1617701375" MODIFIED="1730774167902" VSHIFT="10">
@ -93696,8 +93719,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
Stelle eine Hash-Kette her, die jeweils &#8222;quer&#8220; &#252;ber die Datenpunkte in benachbarten Frames l&#228;uft. Ein &#187;param&#171;-Wert dient als Seed und k&#246;nnte sp&#228;ter vom Node-Hash genommen werden. Dann wird der jeweilige original-Datenwert eingehasht und durch das Ergebnis der Kette ersetzt.
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1732761976785" ID="ID_996613214" MODIFIED="1732762002294" TEXT="als in-place-Manipulation im Quellbuffer realisiert">
<icon BUILTIN="idea"/>
@ -93714,8 +93736,18 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node COLOR="#435e98" CREATED="1730828077684" ID="ID_1553228902" MODIFIED="1732716867457" TEXT="combineFrames"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1730827961401" ID="ID_927640003" MODIFIED="1730827975594" TEXT="die Test-Ontology als Singleton zug&#xe4;nglich machen">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1730827961401" ID="ID_927640003" MODIFIED="1732850157901" TEXT="die Test-Ontology als Singleton zug&#xe4;nglich machen">
<linktarget COLOR="#a22b81" DESTINATION="ID_927640003" ENDARROW="Default" ENDINCLINATION="-258;14;" ID="Arrow_ID_1285815765" SOURCE="ID_1082730570" STARTARROW="None" STARTINCLINATION="-1;-82;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1732853002765" ID="ID_260815942" MODIFIED="1732854695185" TEXT="im NodeDevel_test durchspielen">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1732854705823" ID="ID_717127160" MODIFIED="1732854731110" TEXT="Spec erzeugen">
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1732854717102" ID="ID_1427510641" MODIFIED="1732854731110" TEXT="einen Deskriptor-String mitgeben">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1730900496156" ID="ID_744198194" MODIFIED="1732762744509" TEXT="erweiterte Verifikationen f&#xfc;r den TestFrame">
<icon BUILTIN="button_ok"/>
@ -93754,6 +93786,74 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1732848067281" HGAP="40" ID="ID_645445153" MODIFIED="1732848718039" VSHIFT="61">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
Leit-Aufrabe f&#252;r die &#187;<u>Test-Ontology</u>&#171;
</p>
<p>
&#10233; <b>Generator-Funktion</b>&#160;bauen &#10232;
</p>
</body>
</html></richcontent>
<arrowlink COLOR="#b8d9ff" DESTINATION="ID_1339048946" ENDARROW="Default" ENDINCLINATION="946;68;" ID="Arrow_ID_1341126818" STARTARROW="None" STARTINCLINATION="-962;-118;"/>
<linktarget COLOR="#fefbd6" DESTINATION="ID_645445153" ENDARROW="Default" ENDINCLINATION="132;-992;" ID="Arrow_ID_141565539" SOURCE="ID_941625824" STARTARROW="None" STARTINCLINATION="-379;55;"/>
<icon BUILTIN="yes"/>
<node CREATED="1732848272446" ID="ID_1888092204" MODIFIED="1732848282878" TEXT="erzeugt einen Testframe gem&#xe4;&#xdf; Frame-Nr"/>
<node CREATED="1732848286020" ID="ID_1229073795" MODIFIED="1732848311699" TEXT="k&#xf6;nnte einen Qualifier haben &#x27f9; Flavour oder Channel"/>
<node CREATED="1732848322393" ID="ID_904385784" MODIFIED="1732848338384" TEXT="fertig nutzbar verpackt in einen InvocationAdapter"/>
<node CREATED="1732848351311" ID="ID_564914161" MODIFIED="1732848360278" TEXT="passende Proc-Spec dazu generiert"/>
<node CREATED="1732848367449" ID="ID_1665642381" MODIFIED="1732848390626" TEXT="Meta-DSL-Syntax">
<node CREATED="1732848391901" ID="ID_161442799" MODIFIED="1732848394081" TEXT="um diese Funktionalit&#xe4;t von der TestOntology zu bekommen"/>
<node CREATED="1732848404100" ID="ID_412406962" MODIFIED="1732848418102" TEXT="um die Details jeweils f&#xfc;r den Test festlegen zu k&#xf6;nnen"/>
<node CREATED="1732851509904" ID="ID_1521688119" MODIFIED="1732851514487" TEXT="Zugang">
<node CREATED="1732852305680" ID="ID_287924135" MODIFIED="1732852314460" TEXT="Singleton: ja-oder-nein?">
<node CREATED="1732852354690" ID="ID_1234883653" MODIFIED="1732852482549" TEXT="ich m&#xf6;chte m&#xf6;glichst einfache Notation">
<node CREATED="1732852490913" ID="ID_1832802846" MODIFIED="1732852750411" TEXT="testRand().setupGenerator()"/>
<node CREATED="1732852884356" ID="ID_1379533680" MODIFIED="1732852900941" TEXT="spec.makFun()"/>
<node CREATED="1732852902020" ID="ID_1457479589" MODIFIED="1732852911088" TEXT="spec.describe()"/>
</node>
<node CREATED="1732852316640" ID="ID_1235378820" MODIFIED="1732852475237" TEXT="k&#xf6;nnte &#xc4;rger mit verschlepptem State geben...">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
dann w&#252;rd ich's halt nicht machen.....
</p>
<p>
Jetzt mal ehrlich: auch eine Library kann korrumpierten internen State haben &#8212; und man sorgt eben daf&#252;r, da&#223; das m&#246;glichst nicht passieren kann, indem man defensiv vorgeht.
</p>
<p>
</p>
<p>
Schlu&#223;folgerung &#10233; alle spezielle Test-Konfiguration geh&#246;rt dann eben in Spec-Instanzen
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1732852858632" ID="ID_1472126123" MODIFIED="1732852878481" TEXT="also &#x27f9; lib::Depend&lt;TestRandOntology&gt;"/>
</node>
<node CREATED="1732852914680" ID="ID_148140590" MODIFIED="1732852953326" TEXT="Spec : fester Record-Typ">
<node CREATED="1732852965976" ID="ID_860409494" MODIFIED="1732852970924" TEXT="hat universelle Felder"/>
<node CREATED="1732852971614" ID="ID_1895406819" MODIFIED="1732852976331" TEXT="alles Public"/>
<node CREATED="1732852977368" ID="ID_1396802326" MODIFIED="1732852989122" TEXT="Varianten dann als smart-ptr"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1732850100584" HGAP="9" ID="ID_307851990" MODIFIED="1732850117651" TEXT="Implementierung" VSHIFT="21">
<icon BUILTIN="forward"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1732850119989" ID="ID_1082730570" MODIFIED="1732850174103" TEXT="Setup TestRand-Ontology">
<arrowlink COLOR="#a22b81" DESTINATION="ID_927640003" ENDARROW="Default" ENDINCLINATION="-258;14;" ID="Arrow_ID_1285815765" STARTARROW="None" STARTINCLINATION="-1;-82;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1732850184292" ID="ID_1540586352" MODIFIED="1732850191087" TEXT="Spec-Record aufbauen">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1728785502988" ID="ID_1772786102" MODIFIED="1729962174596" TEXT="Prototyping-2">
<linktarget COLOR="#ff6936" DESTINATION="ID_1772786102" ENDARROW="Default" ENDINCLINATION="-884;1900;" ID="Arrow_ID_132570707" SOURCE="ID_115515850" STARTARROW="None" STARTINCLINATION="82;4;"/>
<icon BUILTIN="hourglass"/>
@ -93898,7 +93998,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1719968160956" ID="ID_1900536063" MODIFIED="1719968167375" TEXT="schlie&#xdf;t Array-Auff&#xe4;cherung ein"/>
</node>
<node CREATED="1719968107352" ID="ID_172436088" MODIFIED="1719968261181" TEXT="Reihenfolge der rekursiven pull()-Aufrufe">
<arrowlink COLOR="#5e5e77" DESTINATION="ID_1698494454" ENDARROW="Default" ENDINCLINATION="-306;13;" ID="Arrow_ID_151141126" STARTARROW="None" STARTINCLINATION="597;43;"/>
<arrowlink COLOR="#5e5e77" DESTINATION="ID_1698494454" ENDARROW="Default" ENDINCLINATION="-306;13;" ID="Arrow_ID_151141126" STARTARROW="None" STARTINCLINATION="610;45;"/>
</node>
<node CREATED="1719968185473" ID="ID_1239704157" MODIFIED="1719968217280" TEXT="ein bestimmtes Resultat-BuffHandle wird weitergegeben und nicht geschlossen"/>
</node>
@ -94024,7 +94124,28 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</html></richcontent>
</node>
</node>
<node CREATED="1729985279723" ID="ID_151767070" MODIFIED="1730487909948" TEXT="die IDs der Vorl&#xe4;ufer gehen (geeignet) mit ein" VSHIFT="7"/>
<node CREATED="1729985279723" ID="ID_151767070" MODIFIED="1730487909948" TEXT="die IDs der Vorl&#xe4;ufer gehen (geeignet) mit ein" VSHIFT="7">
<node CREATED="1732847644458" ID="ID_1974038856" MODIFIED="1732847820091">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
das ist dann aber die <i>NodeSpec</i>
</p>
</body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
nicht das reine <i>NodeSymbol</i>
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1732847720160" ID="ID_767620063" LINK="#ID_1605389357" MODIFIED="1732847776920" TEXT="diese gibt abgek&#xfc;rzte Charakterisierung der Connectivity"/>
</node>
</node>
<node CREATED="1730488249706" ID="ID_459312416" MODIFIED="1730488264756" TEXT="jeder Turnout tr&#xe4;gt...">
<node CREATED="1730488278894" ID="ID_1176414993" MODIFIED="1730678310374" TEXT="eine Port-Spec">