Invocation: consider minimal test setup and verification
__Analysis__: what kind of verifications are sensible to employ to cover building, wiring and invocation of render nodes? Notably, a test should cover requirements and observable functionality, while ''avoiding direct hard coupling to implementation internals...'' __Draft__: the most simple node builder invocation conceivable...
This commit is contained in:
parent
bb9d0107cd
commit
4df4ff2792
6 changed files with 568 additions and 43 deletions
|
|
@ -203,8 +203,8 @@ namespace engine {
|
|||
template<class POL>
|
||||
class PortBuilderRoot
|
||||
: protected NodeBuilder<POL>
|
||||
, util::MoveOnly
|
||||
{
|
||||
public:
|
||||
NodeBuilder<POL>
|
||||
completePort()
|
||||
{
|
||||
|
|
@ -318,8 +318,10 @@ namespace engine {
|
|||
} // slice away the subclass
|
||||
|
||||
private:
|
||||
PortBuilder(_Par&& base)
|
||||
template<typename FUN>
|
||||
PortBuilder(_Par&& base, FUN&& fun)
|
||||
: _Par{move(base)}
|
||||
, weavingBuilder_{forward<FUN> (fun)}
|
||||
{ }
|
||||
|
||||
friend class PortBuilderRoot<POL>;
|
||||
|
|
@ -332,7 +334,7 @@ namespace engine {
|
|||
PortBuilderRoot<POL>::invoke (FUN&& fun)
|
||||
{
|
||||
using WeavingBuilder_FUN = WeavingBuilder<POL, manifoldSiz<FUN>(), FUN>;
|
||||
return PortBuilder<POL, WeavingBuilder_FUN>{move(*this)};
|
||||
return PortBuilder<POL, WeavingBuilder_FUN>{move(*this), forward<FUN> (fun)};
|
||||
}
|
||||
/*
|
||||
template<class POL>
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ namespace engine {
|
|||
manifoldSiz()
|
||||
{
|
||||
using _F = _ProcFun<FUN>;
|
||||
auto bound = std::max (_F::FAN_I, _F::FAN_O);
|
||||
auto constexpr bound = std::max (_F::FAN_I, _F::FAN_O);
|
||||
static_assert (bound <= 10,
|
||||
"Limitation of template instances exceeded");
|
||||
return bound < 3? bound
|
||||
|
|
|
|||
|
|
@ -70,6 +70,9 @@ namespace test {
|
|||
build_connected_nodes()
|
||||
{
|
||||
auto con = prepareNode()
|
||||
.preparePort()
|
||||
.invoke(dummyOp)
|
||||
.completePort()
|
||||
.build();
|
||||
UNIMPLEMENTED ("build render nodes linked into a connectivity network");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,12 +31,24 @@
|
|||
|
||||
#include "steam/engine/testframe.hpp"
|
||||
|
||||
#include <array>
|
||||
|
||||
|
||||
namespace steam {
|
||||
namespace engine{
|
||||
namespace test {
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Dummy / Placeholder
|
||||
using SoloArg = std::array<char*, 1>;
|
||||
/** @todo a placeholder operation to wire a prototypical render node
|
||||
*/
|
||||
inline void
|
||||
dummyOp (SoloArg in, SoloArg out)
|
||||
{
|
||||
UNIMPLEMENTED ("a sincerely nonsensical operation");
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Dummy / Placeholder
|
||||
/**
|
||||
* A fake _Domain Ontology_ to describe mocked »render operations« on
|
||||
* dummy data frames filled with random numbers.
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ namespace test {
|
|||
|
||||
/******************************************************************//**
|
||||
* @test demonstrate simple access to random number generation,
|
||||
* as well as the setup of controlled random number sequences.
|
||||
* as well as the setup of controlled random number sequences.
|
||||
* @see random.hpp
|
||||
*/
|
||||
class Random_test : public Test
|
||||
|
|
|
|||
|
|
@ -8017,9 +8017,7 @@
|
|||
</node>
|
||||
<node CREATED="1508539633800" ID="ID_471699110" MODIFIED="1576282358122" TEXT="coverDepth (Zahl)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Tiefe, bis zu der dieser Pfad gedeckt ist.
|
||||
|
|
@ -8032,9 +8030,7 @@
|
|||
</node>
|
||||
<node CREATED="1508539644775" ID="ID_186144507" MODIFIED="1576282358121" TEXT="[optional] explizite Coverage">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
heap-allozierter expliziter Pfad.
|
||||
|
|
@ -8120,9 +8116,7 @@
|
|||
<node CREATED="1509476185182" ID="ID_613038974" MODIFIED="1509476196153" TEXT="Callback über den Baum transportieren"/>
|
||||
<node CREATED="1509476197413" ID="ID_768936647" MODIFIED="1514328778025">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Ha! das ist eine <b>Monade</b>!!!!!1!11!
|
||||
|
|
@ -8194,9 +8188,7 @@
|
|||
</node>
|
||||
<node CREATED="1509501086314" ID="ID_1462237553" MODIFIED="1509501086314">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Das heißt, wir müssen ihn bereits im Aufrufkontext bereit liegen haben
|
||||
|
|
@ -8335,9 +8327,7 @@
|
|||
<linktarget COLOR="#80c6b3" DESTINATION="ID_1499495468" ENDARROW="Default" ENDINCLINATION="-1812;12745;" ID="Arrow_ID_673178727" SOURCE="ID_1502143527" STARTARROW="None" STARTINCLINATION="4133;-10665;"/>
|
||||
<node CREATED="1510341374332" ID="ID_483481416" MODIFIED="1511572072346" TEXT="naja...">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
mathematische Monaden sind viel mehr...
|
||||
|
|
@ -8615,9 +8605,7 @@
|
|||
<node CREATED="1510940088149" ID="ID_791410014" MODIFIED="1512797263192" TEXT="S muß nicht speziell vorbereitet sein (nur konstruierbar)"/>
|
||||
<node CREATED="1510940199342" ID="ID_1423687617" MODIFIED="1512797263192" TEXT="man zahlt immer den Overhead für den Stack im Baum-Explorer">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...selbst wenn man ihn für eine triviale Implementierung
|
||||
|
|
@ -9000,9 +8988,7 @@
|
|||
<node CREATED="1512262291085" FOLDED="true" ID="ID_1532344112" MODIFIED="1512926193413" TEXT="für jeden Layer">
|
||||
<node CREATED="1512262299476" ID="ID_102544445" MODIFIED="1512262325001">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
TreeExplorer per <i>slicing move</i> entfernen
|
||||
|
|
@ -9992,9 +9978,7 @@
|
|||
</node>
|
||||
<node CREATED="1512769199597" ID="ID_1928524017" MODIFIED="1512769227486">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Stichwort: <b>virtual base offset</b>
|
||||
|
|
@ -11956,9 +11940,7 @@
|
|||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1514339665248" ID="ID_1142507602" MODIFIED="1514339776889" TEXT="low-level-Operation">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<ul>
|
||||
<li>
|
||||
|
|
@ -15701,9 +15683,7 @@
|
|||
</node>
|
||||
<node CREATED="1523746704479" ID="ID_462392796" MODIFIED="1576282358111" TEXT="...und das ist ausgeschlossen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
<u>Policy</u>: Unit-Tests dürfen keine GTK-Abhängigkeit haben
|
||||
|
|
@ -48991,9 +48971,7 @@
|
|||
</node>
|
||||
<node CREATED="1457120439360" ID="ID_1972741688" MODIFIED="1576282358009" TEXT="ID match ist Aufgabe der Implementierung">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
das ist der wesentliche Kniff,
|
||||
|
|
@ -85785,6 +85763,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1713823944920" ID="ID_1929417005" MODIFIED="1713823954451" TEXT="Node muß Verschaltungs-API bieten"/>
|
||||
<node CREATED="1713823999457" ID="ID_1445622002" MODIFIED="1713824007500" TEXT="Steuerbarkeit per TurnoutSystem"/>
|
||||
<node CREATED="1713824070968" ID="ID_1427325952" MODIFIED="1713824271145" TEXT="Struktur TurnoutSystem ableiten"/>
|
||||
<node CREATED="1728764677697" ID="ID_1857199136" MODIFIED="1728764933507" TEXT="Modell-Struktur-Verifizierbarkeit">
|
||||
<arrowlink COLOR="#873d58" DESTINATION="ID_1876650367" ENDARROW="Default" ENDINCLINATION="-604;-28;" ID="Arrow_ID_1732704985" STARTARROW="None" STARTINCLINATION="325;29;"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719186374543" ID="ID_1706482104" MODIFIED="1719277437612" TEXT="Test-Ontologie aufbauen">
|
||||
<arrowlink COLOR="#ff2400" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="-136;-44;" ID="Arrow_ID_1657525718" STARTARROW="None" STARTINCLINATION="101;9;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
@ -85823,6 +85804,11 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719625209413" ID="ID_1847666799" MODIFIED="1719625223372" TEXT="per NodeLinkage_test herausfinden...">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1728764748678" ID="ID_1876650367" MODIFIED="1728765008297" TEXT="geeignete Ankerpunkte für Assertions etablieren">
|
||||
<arrowlink COLOR="#ef0066" DESTINATION="ID_475636936" ENDARROW="Default" ENDINCLINATION="-1187;-101;" ID="Arrow_ID_426827896" STARTARROW="None" STARTINCLINATION="859;48;"/>
|
||||
<linktarget COLOR="#873d58" DESTINATION="ID_1876650367" ENDARROW="Default" ENDINCLINATION="-604;-28;" ID="Arrow_ID_1732704985" SOURCE="ID_1857199136" STARTARROW="None" STARTINCLINATION="325;29;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1719625243183" ID="ID_1479244509" MODIFIED="1719625248360" TEXT="über Weiterungen nachdenken">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
|
|
@ -89209,8 +89195,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
Die Indirektion ist nur notwendig, wenn es einen für den Benutzer sichtbaren Lebenszyklus-Zustand gibt; andernfalls gilt es lediglich als Service-Konfiguration und der Client kann sich direkte Referenzen für die verwendeten Services ziehen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1728694014136" ID="ID_1610313761" MODIFIED="1728694227860" TEXT="hier für die Render-Engine nicht relevant">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -89255,8 +89240,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
da es offensichtlicher ist, und zwischen Konstruktor und den von diesem erzeugten Services keine architektonische Trennung besteht
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -89662,6 +89646,517 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728764786662" ID="ID_475636936" MODIFIED="1728765035215" TEXT="Test/Verifizierbarkeit der Resultate">
|
||||
<linktarget COLOR="#ef0066" DESTINATION="ID_475636936" ENDARROW="Default" ENDINCLINATION="-1187;-101;" ID="Arrow_ID_426827896" SOURCE="ID_1876650367" STARTARROW="None" STARTINCLINATION="859;48;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1728768899761" ID="ID_533220304" MODIFIED="1728769142319" TEXT="insgesamt: vor allem das Berechnungsergebnis prüfen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Hier droht die typische Falle des white-box-Testing: daß man auf Implementierungsdetails abstellt — was ganz besonders gefährlich wird, wenn die Implementierung erwartbar eine hohe Kohäsivität aufweist. Daher sollte der Hauptfokus darauf gereichtet sein, eine <b>Test-Ontologie</b>  aufzubauen, vermöge deren der erfolgte Berechnungsvorgang präzise ausgeleuchtet werden kann.
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1728765067388" ID="ID_1708286207" MODIFIED="1728765109597" TEXT="für eine Node...">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728765130912" ID="ID_1032840307" MODIFIED="1728765140930" TEXT="die Identität feststellen können">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728765172917" ID="ID_33308294" MODIFIED="1728765183676" TEXT="Zahl der Leads und Ports prüfen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1728769243429" ID="ID_1535113263" MODIFIED="1728769249651" TEXT="für einen Port...">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728769266173" ID="ID_664281474" MODIFIED="1728769290143" TEXT="die Identität der gebundenen Funktion feststellen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728769319538" ID="ID_1257287659" MODIFIED="1728769363223" TEXT="eine reproduzierbare symbolische Aufruf-Spec erheben">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1728771335267" ID="ID_1094389177" MODIFIED="1728771344519" TEXT="insgesamt....">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728771345748" ID="ID_286542606" MODIFIED="1728772561734" TEXT="reproduzierbare pseudo-Random-Eingabedaten">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1728776765371" ID="ID_530339700" MODIFIED="1728776784584" TEXT="Basis: der TestFrame">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1728776965140" ID="ID_1948564901" MODIFIED="1728776972015" TEXT="geschaffen bereits 2011-11-01"/>
|
||||
<node CREATED="1728777073629" ID="ID_1232418525" MODIFIED="1728777087836">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
siehe <b><font face="Monospaced">TestFrame_test</font></b>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1728778030637" ID="ID_450784295" MODIFIED="1728778047012" TEXT="hat eine fixierte Größe von 1k (+Metadata)"/>
|
||||
<node CREATED="1728777455066" ID="ID_1238676043" MODIFIED="1728777545746" TEXT="Inhalt reproduzierbar, geordnet nach Channel and Seq-No">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
es gibt nur einen festen Seed-Mechanismus, der auf der Kanal- und Sequenz-Nummer beruht
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1728777897375" ID="ID_560401601" MODIFIED="1728777958502">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
kann Lifecycle markieren als <font color="#563c31">CREATED, EMITTED, DISCARDED</font>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1728778080366" ID="ID_1631642281" MODIFIED="1728778216760" TEXT="kann Konsistenz und damit Korruption erkennen"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1728777587128" ID="ID_939285679" MODIFIED="1728786873689" TEXT="fehlt bisher">
|
||||
<linktarget COLOR="#943e5b" DESTINATION="ID_939285679" ENDARROW="Default" ENDINCLINATION="-1142;-205;" ID="Arrow_ID_1632825391" SOURCE="ID_1372116679" STARTARROW="None" STARTINCLINATION="722;48;"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728778245232" ID="ID_1565084791" MODIFIED="1728780108303" TEXT="ein kontrollierbarer Seeding-Mechanismus">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1728777747523" ID="ID_179758750" MODIFIED="1728781968593" TEXT="verwendet bisher boost::random">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node COLOR="#5b280f" CREATED="1728777754828" ID="ID_722014986" MODIFIED="1728781295002" TEXT="sollte vielleicht das inzwischen geschaffene lib::Random verwenden?">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
bringt nicht wirklich was, aber zumindest sollte std::random mit kompatiblem Generator verwendet werden
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
</node>
|
||||
<node CREATED="1728781231984" ID="ID_283829609" MODIFIED="1728781974281" TEXT="wünschenswert">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728780706437" ID="ID_1189363469" MODIFIED="1728781989516" TEXT="der Runtime-Basis-Seed sollte kontrollierbar sein">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...also zumindest eine globale Variable, die auslesbar und zuweisbar ist.
|
||||
</p>
|
||||
<p>
|
||||
Es fehlt ja generell noch ein Framework für Zufallswerte in Tests, so daß jeder Test seinen definiten Seed bekommt, welcher zwar normalerweise zufällig, ansonsten aber feststellbar und reproduzierbar sein sollte
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728781144210" ID="ID_51267004" MODIFIED="1728781989516" TEXT="Standard Generator-Sequenzen auf jeder Stufe sind unabhängig hierarchisch">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Das sind sie bereits in der bestehenden Implementierung, und das Prinzip ist auch bereits gut genug; allerdings sollten wir das Schema von std::random verwenden, d.h. jeweils einen Generator und darauf aufbauend eine Distribution
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1728778599970" ID="ID_360776020" MODIFIED="1728778748251" TEXT="Layout und Alignment könnten besser sein">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Das Daten-Array liegt nicht am Anfang, und ist deshalb plattform/implementierungsabhängig aligned; das erschwert auch die direkte Interpretation eines Datenblocks als TestFrame....
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1728778765874" ID="ID_1342398369" MODIFIED="1728778778502" TEXT="der Metadatenblock sollte am Ende sein"/>
|
||||
<node CREATED="1728778790871" ID="ID_92579679" MODIFIED="1728779021706" TEXT="Metadaten sollten optional sein">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
....und damit sollte man jede beliebige Speicherlocation als Testframe interpretieren können, ohne diese zu korrumpieren; das impliziert auch, daß der behandelnde Code erkennen kann, ob ein Metadatenblock überhaupt angelegt wurde — und wenn das nicht der Fall ist, sollte auch niemals implizit in den Speicher geschrieben werden
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1728779023048" ID="ID_1104714285" MODIFIED="1728779233787" TEXT="man sollte die Prüfsumme explizit markieren können">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Dabei ist die Prüfsumme ein verknüpfter Hash, und man sollte diese jederzeit berechnen können; jedoch ein regulär erstellter TestFrame sollte die Prüfsumme explizit speichern, und auch für beliebigen Dateninhalt sollte sich die Prüfsumme explizit markiern (speichern) lassen, denn damit werden auch weitergehende Berechnungen auf den Daten möglich, die vom initialen Seed abweichen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728778477601" ID="ID_1156423837" MODIFIED="1728778494727" TEXT="direkter Zugang zu den Daten / Iteration">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728778256504" ID="ID_602872488" MODIFIED="1728778284412" TEXT="Hash-Prüfsumme">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1728779390394" ID="ID_1699887806" MODIFIED="1728779648647" TEXT="damit weitere Zustände">
|
||||
<node CREATED="1728779817892" ID="ID_1916046984" MODIFIED="1728779971755" TEXT="isSane">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
<b>neue Bedeutung</b>: es ist ein TestFrame mit erkennbarem Metadatenblock (auch wenn ansonsten keine der Prüfsummen mit den Daten zusammenpaßt); es sollte recht unwahrscheinlich sein, daß ein zufälliger Datenblock diesen Test besteht.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1728779408099" ID="ID_186109727" MODIFIED="1728779644910" TEXT="isValid">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Es ist ein TestFrame mit gültigem Metadaten-Block, und die dort gespeicherte Prüfsumme wird durch die Daten bestätigt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1728779415747" ID="ID_135096780" MODIFIED="1728779750157" TEXT="isPristine">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
entspricht dem bisherigen isSane() — d.h. isValid() aber zusätzlich passen die Daten auf die gespeicherte distinction, und das heißt, die Daten wurden vom Standard-Schema erzeugt und nicht weiter bearbeitet
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1728777012173" ID="ID_1724213978" MODIFIED="1728777061393" TEXT="bisher sporadisch verwendet für Buffer-Handling-Tests">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
testframe.hpp (/zLumi/tests/core/steam/engine)
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
buffer-metadata-test.cpp (/zLumi/tests/core/steam/engine)
|
||||
</li>
|
||||
<li>
|
||||
buffer-provider-protocol-test.cpp (/zLumi/tests/core/steam/engine)
|
||||
</li>
|
||||
<li>
|
||||
diagnostic-output-slot.hpp (/zLumi/tests/core/steam/play)
|
||||
</li>
|
||||
<li>
|
||||
output-slot-protocol-test.cpp (/zLumi/tests/core/steam/play)
|
||||
</li>
|
||||
<li>
|
||||
testframe.cpp (/zLumi/tests/core/steam/engine)
|
||||
</li>
|
||||
<li>
|
||||
testframe-test.cpp (/zLumi/tests/core/steam/engine)
|
||||
</li>
|
||||
<li>
|
||||
test-rand-ontology.hpp (/zLumi/tests/core/steam/engine)
|
||||
</li>
|
||||
<li>
|
||||
tracking-heap-block-provider-test.cpp (/zLumi/tests/core/steam/engine)
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728771355851" ID="ID_1533221865" MODIFIED="1728772550469" TEXT="Berechnungsweg komplett deterministic and pure">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<ul>
|
||||
<li>
|
||||
hängt nur von den Eingabedaten ab
|
||||
</li>
|
||||
<li>
|
||||
für jeden Pixel auch durch Direktaufruf der Berechnung reproduzierbar
|
||||
</li>
|
||||
<li>
|
||||
(optional) in jedem Schritt mit einer Instanz-ID verknüpfbar
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1728782135051" ID="ID_391399838" MODIFIED="1728782152864" TEXT="Standard-»Operationen« (in der Test-Ontology)">
|
||||
<node CREATED="1728782215620" ID="ID_571179061" MODIFIED="1728782226782" TEXT="unär, binär, ... N-är"/>
|
||||
<node CREATED="1728782276193" ID="ID_151408357" MODIFIED="1728782369538" TEXT="die Berechnung selber ist eine Hashverknüpfung (boost hash_combine)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...das bedeutet, sie läuft auf size_t (oder was dann letztlich die Wortbreite sein wird für Lumiera Hash-Vorgänge) und sie ist <b>nicht kommutativ<i> </i></b>in den Argumenten
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1728782252204" ID="ID_757336693" MODIFIED="1728782549197" TEXT="es wird ein uniformer Seed-Wert für jeden Datenpunkt mit injiziert">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Jeder Funktionsaufruf ist „gefärbt“, aber ansonsten äquivalent. Das heißt, ein fester Parameterwert fließt mit in die Berechnung jedes einzelnen Datenpunktes, und dieser Wert ist an den jeweiligen Aufruf gebunden wird, wodurch auch eine Kette gleichartiger Aufrufe in der Reihenfolge unterscheidbar gemacht werden kann.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1728782874164" ID="ID_1997651851" MODIFIED="1728783179058" TEXT="dieser Seed, zusammen mit den Kenndaten, bildet eine reproduzierbare Identität">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...zwar handelt es sich stets nur um eine Hash-Verknüpfung, aber die Arität (und ggfs. später auch noch ein Array-Wertiger Input) kommen als Steuerparameter hinzu. Diese Parameter können als lesbarer Spec-String ausgegeben werden, und in einen Hash eingerechnet werden, der dann die Funktion markiert und unterscheidbar macht. Wenn ein Seed explizit angegeben wird, dann fließt er zusätzlich mit ein, und markiert außerdem auch die Berechnung an jedem Datenpunkt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1728783188923" ID="ID_1138350224" MODIFIED="1728783420787" TEXT="der Seed könnte später wie ein Automations-Parameterwert eingebracht werden">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...später, wenn ich abschließend geklärt habe, wie Automation funktionieren soll. Derzeit denke ich, daß solche Funktions-Parameter in einem Tree-walk vor dem eigentlichen pull() der Invocation gesetzt werden, also über das Turnout-System. Speziell für die Test-Ontology könnte man hier auch eine Node-ID oder einen Node-Struktur-Hash einfließen lassen (wobei mit jetzt aber nicht klar ist, ob diese Idee für das Testen überhaupt von Nutzen ist)
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1728782162715" ID="ID_647461586" MODIFIED="1728783566268" TEXT="Berechnung unabhängig pro Datenpunkt">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Ich will also eine laterale Vermischung der Daten vermeiden; erst über die Prüfsumme des Ergebnis-Datenblocks werden die einzelnen Datenpunkte zusammengeführt; theoretisch wäre es dadurch sogar möglich, die Korruption einzelner Datenpunkte zu erkennen, indem man die intendierte Berechnungskette explizit gecodet nochmal ausführt und dann die Ergebnisdaten vergleicht.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1728783585707" ID="ID_288581450" MODIFIED="1728783674793" TEXT="für jede Berechnung gibt es eine human-readable spec">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Also einen String, der die Operation mit Parametrisierung und Seed darstellt. Aufbauend darauf läßt sich dann auch eine Node-Spec generieren
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728772511968" ID="ID_1684753208" MODIFIED="1728772544309" TEXT="EventLog zuschaltbar für jeden Schritt">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1728783687904" ID="ID_1950844233" MODIFIED="1728783803478" TEXT="die Behandlung soll im Kontext zuschaltbar sein">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
d.h. das EventLog liegt in einem Singleton, und wenn es da ist, dann hinterläßt jeder Funktionsaufruf einen Log-Eintrag, so daß sich der gesamte Berechnungsweg mit allen Aufruf-Reihenfolgen nachvollziehen und verifizieren läßt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728785502988" ID="ID_1973895762" MODIFIED="1728785648725" TEXT="Prototyping-1">
|
||||
<linktarget COLOR="#ed384d" DESTINATION="ID_1973895762" ENDARROW="Default" ENDINCLINATION="-1324;220;" ID="Arrow_ID_95845616" SOURCE="ID_623146928" STARTARROW="None" STARTINCLINATION="481;51;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1728787061205" ID="ID_1090922930" MODIFIED="1728787084161" TEXT="das wird jetzt der »Butter-bei-die-Fische«-Testfall">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1728785663035" ID="ID_1585637379" MODIFIED="1728785801243" TEXT="Integration des einfachst-möglichen Builder-Terms">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785697448" ID="ID_1129960489" MODIFIED="1728785739456" TEXT="kein Lead ≙ Generator-Node">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1728785719979" ID="ID_1934199369" MODIFIED="1728785743179" TEXT="frei stehende Dummy-Funktion verwenden">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#435e98" CREATED="1728787111148" ID="ID_1061748863" MODIFIED="1728787143959" TEXT="minimaler Node-Builder geht durch den Compiler">
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785768422" ID="ID_1775907930" MODIFIED="1728785783907" TEXT="ProcNode als Ergebnis bekommen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785785350" ID="ID_1997976250" MODIFIED="1728785795791" TEXT="1:1-Verdrahtung durchfürhen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1728785803611" ID="ID_1231385520" MODIFIED="1728785816791" TEXT="minimale Verifikationen aufbauen">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785829235" ID="ID_59153641" MODIFIED="1728785837551" TEXT="Zahl der Leads / Ports">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785840998" ID="ID_663732870" MODIFIED="1728785852800" TEXT="Funktions-ID generieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785867907" ID="ID_394739045" MODIFIED="1728785872687" TEXT="Spec generieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785876033" ID="ID_424140873" MODIFIED="1728785881465" TEXT="Spec der Funktion">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785882504" ID="ID_607531791" MODIFIED="1728785893760" TEXT="Spec aus dem Turnout">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1728786023206" ID="ID_827177241" MODIFIED="1728786051330" TEXT="Node-pull()">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728786069167" ID="ID_1584473368" MODIFIED="1728786088974" TEXT="Aufruf-Pfad durchimplementieren">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785939337" ID="ID_642847753" MODIFIED="1728785947978" TEXT="einfachste Berechnung direkt verifizieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1728785953219" ID="ID_1772786102" MODIFIED="1728785967294" TEXT="Prototyping-2">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1728786122944" ID="ID_1755127890" MODIFIED="1728786134527" TEXT="TestFrame und Frame-Nummern einführen">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728786146493" ID="ID_1993277373" MODIFIED="1728786261724" TEXT="Einstieg in das Turnout-System klären">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728786158476" ID="ID_287270915" MODIFIED="1728786258902" TEXT="Parameter definieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728786171058" ID="ID_1300765185" MODIFIED="1728786272700" TEXT="Buffer bereitstellen und entgegennehmen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1728786238817" ID="ID_318249772" MODIFIED="1728786266440" TEXT="Aufrufpfad auf TestFrame umstellen">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1728786202710" ID="ID_503859904" MODIFIED="1728786220493" TEXT="Berechnungs-Verifikation aufbauen">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728786300177" ID="ID_317306309" MODIFIED="1728786323798" TEXT="Formale Anordnung in der Test-Ontology festlegen">
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728786339907" ID="ID_1615772928" MODIFIED="1728786355508" TEXT="generische Funktion per hash_combine bereitstellen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728786359782" ID="ID_525505656" MODIFIED="1728786374933" TEXT="Spec und Seed generieren und verarbeiten">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728786385349" ID="ID_442258905" MODIFIED="1728786701217" TEXT="Umbau TestFrame">
|
||||
<arrowlink COLOR="#713558" DESTINATION="ID_257931093" ENDARROW="Default" ENDINCLINATION="-239;12;" ID="Arrow_ID_121875527" STARTARROW="None" STARTINCLINATION="-1098;-101;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1728786417609" ID="ID_1581017843" MODIFIED="1728786427298" TEXT="Test-Hilfsmittel: TestFrame">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728786430299" ID="ID_257931093" LINK="#ID_594112005" MODIFIED="1728786713175" TEXT="Refactoring für Node-Invocation (#1367 | #1372)">
|
||||
<linktarget COLOR="#713558" DESTINATION="ID_257931093" ENDARROW="Default" ENDINCLINATION="-239;12;" ID="Arrow_ID_121875527" SOURCE="ID_442258905" STARTARROW="None" STARTINCLINATION="-1098;-101;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1728786565516" ID="ID_1372116679" MODIFIED="1728786873689" TEXT="Überlegungen zum notwendigen Ausbau">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
TestFrame wurde zwar schon 2011 angelegt, soll nun (2024) aber auch die Basis für eine Test-Ontology werden; die Analyse ergab, daß die vorhandene Funktionalität hierfür lediglich maßvoll erweitert werden muß:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
das Datenlayout im Speicher sollte konsistenter sein
|
||||
</li>
|
||||
<li>
|
||||
wir brauchen einen dedizierten Metadaten-Block, der aber optional ist
|
||||
</li>
|
||||
<li>
|
||||
die Zufallsberechnung bleibt inhaltlich komplett gleich, aber wird umgestellt auf std::random
|
||||
</li>
|
||||
<li>
|
||||
zusätzlich wird noch eine Hashberechnung über die konkreten Datenwerte hinzugefügt
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<arrowlink COLOR="#943e5b" DESTINATION="ID_939285679" ENDARROW="Default" ENDINCLINATION="-1142;-205;" ID="Arrow_ID_1632825391" STARTARROW="None" STARTINCLINATION="722;48;"/>
|
||||
</node>
|
||||
<node CREATED="1728786907104" ID="ID_142347061" MODIFIED="1728786910403" TEXT="Umbauten">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728786911759" ID="ID_1026206450" MODIFIED="1728787040941" TEXT="Basis-Seed in globale Variable">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728786927964" ID="ID_1668223251" MODIFIED="1728787040942" TEXT="PRNG auf std::rand umstellen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728786946155" ID="ID_1878547941" MODIFIED="1728787040942" TEXT="Datenlayout und Alignment">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728787025826" ID="ID_1972770219" MODIFIED="1728787040943" TEXT="Accessor und Iteration">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728786962056" ID="ID_231763184" MODIFIED="1728787040943" TEXT="Verifikations-Methoden">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1728786973094" ID="ID_899991782" MODIFIED="1728786978286" TEXT="Datenprüfsumme"/>
|
||||
<node CREATED="1728786979373" ID="ID_772580400" MODIFIED="1728786987393" TEXT="Metadaten-Erkennung"/>
|
||||
<node CREATED="1728786988308" ID="ID_103079985" MODIFIED="1728786992576" TEXT="Prädikate">
|
||||
<node CREATED="1728779817892" ID="ID_882765451" MODIFIED="1728779971755" TEXT="isSane">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
<b>neue Bedeutung</b>: es ist ein TestFrame mit erkennbarem Metadatenblock (auch wenn ansonsten keine der Prüfsummen mit den Daten zusammenpaßt); es sollte recht unwahrscheinlich sein, daß ein zufälliger Datenblock diesen Test besteht.
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1728779408099" ID="ID_1517743638" MODIFIED="1728779644910" TEXT="isValid">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Es ist ein TestFrame mit gültigem Metadaten-Block, und die dort gespeicherte Prüfsumme wird durch die Daten bestätigt
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1728779415747" ID="ID_1413902264" MODIFIED="1728779750157" TEXT="isPristine">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
entspricht dem bisherigen isSane() — d.h. isValid() aber zusätzlich passen die Daten auf die gespeicherte distinction, und das heißt, die Daten wurden vom Standard-Schema erzeugt und nicht weiter bearbeitet
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1719968038589" HGAP="38" ID="ID_177982013" MODIFIED="1719968051367" TEXT="Feststellungen" VSHIFT="30">
|
||||
<icon BUILTIN="forward"/>
|
||||
|
|
@ -89820,6 +90315,19 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="help"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719964797735" ID="ID_742525092" MODIFIED="1719964805319" TEXT="minimale Repräsentation">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785389611" ID="ID_1739123990" MODIFIED="1728785407014" TEXT="durch einen Builder-Term">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785412252" ID="ID_840817870" MODIFIED="1728785425910" TEXT="mit Binden einer Processing-Function">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785339793" HGAP="96" ID="ID_1367192130" MODIFIED="1728785358620" TEXT="eine reine Quell-Node" VSHIFT="-13">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1728785462721" ID="ID_623146928" MODIFIED="1728785648725" TEXT="Prototyping des Aufrufs">
|
||||
<arrowlink COLOR="#ed384d" DESTINATION="ID_1973895762" ENDARROW="Default" ENDINCLINATION="-1324;220;" ID="Arrow_ID_95845616" STARTARROW="None" STARTINCLINATION="481;51;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1719185943913" ID="ID_393811539" MODIFIED="1719185992634" TEXT="was ist die Identität einer Node?">
|
||||
|
|
|
|||
Loading…
Reference in a new issue