diff --git a/src/lib/test/run.hpp b/src/lib/test/run.hpp index 527c1d222..123362ca7 100644 --- a/src/lib/test/run.hpp +++ b/src/lib/test/run.hpp @@ -36,8 +36,8 @@ #ifndef TESTHELPER_RUN_H #define TESTHELPER_RUN_H -#include "steam/common.hpp" -#include "include/logging.h" +#include "lib/error.hpp" +#include "lib/random.hpp" #include "lib/test/suite.hpp" #include "lib/util.hpp" @@ -62,8 +62,11 @@ namespace test { class Test { public: - virtual ~Test() {} - virtual void run(Arg arg) = 0; + virtual ~Test() = default; + virtual void run(Arg arg) = 0; + + void seedRand(); + lib::Random makeRandGen(); }; @@ -72,7 +75,7 @@ namespace test { class Launcher { public: - virtual ~Launcher() {} + virtual ~Launcher() = default; virtual shared_ptr makeInstance() =0; }; diff --git a/src/lib/test/suite.cpp b/src/lib/test/suite.cpp index cb13cf310..89a3b4456 100644 --- a/src/lib/test/suite.cpp +++ b/src/lib/test/suite.cpp @@ -27,13 +27,12 @@ -#include "include/logging.h" -#include "lib/hash-standard.hpp" +#include "lib/error.hpp" #include "lib/format-cout.hpp" #include "lib/test/suite.hpp" #include "lib/test/run.hpp" #include "lib/cmdline.hpp" -#include "lib/error.hpp" +#include "lib/random.hpp" #include "lib/util.hpp" #include @@ -55,6 +54,7 @@ namespace test { using util::isnil; using util::contains; using util::typeStr; + using lib::Random; typedef map TestMap; typedef shared_ptr PTestMap; @@ -192,6 +192,21 @@ namespace test { } + void + Test::seedRand() + { + UNIMPLEMENTED ("draw a new random seed from a common nucleus, and re-seed the default-Gen"); + } + + + Random + Test::makeRandGen() + { + UNIMPLEMENTED ("build a dedicated new RandomGen, seeded from the default-Gen"); + } + + + /** run all testcases contained in this Suite. * The first argument in the commandline, if present, * will select one single testcase with a matching ID. @@ -244,10 +259,13 @@ namespace test { /** print to stdout an enumeration of all testcases in this suite, - * in a format suitable for use with Cehteh's ./test.sh + * in a format suitable for use with Cehteh's ./test.sh + * @todo this function war rarely used and is kind of broken by the fact + * that Nobug-assertions terminate the program instead of throwing, + * rendering the feature to integrate output mostly useless. */ void - Suite::describe () + Suite::describe() { lib::Cmdline noCmdline(""); PTestMap tests = testcases.getGroup(groupID_); diff --git a/src/vault/gear/load-controller.hpp b/src/vault/gear/load-controller.hpp index d040a1067..519e6ea56 100644 --- a/src/vault/gear/load-controller.hpp +++ b/src/vault/gear/load-controller.hpp @@ -90,7 +90,8 @@ //#include "vault/gear/block-flow.hpp" //#include "vault/gear/activity-lang.hpp" //#include "lib/symbol.hpp" -#include "lib/nocopy.hpp" +#include "lib/time/timevalue.hpp" +#include "lib/nocopy.hpp" #include "lib/util.hpp" #include "lib/format-cout.hpp" diff --git a/tests/core/steam/engine/testframe-test.cpp b/tests/core/steam/engine/testframe-test.cpp index 7ccf884d7..baa6bfbdb 100644 --- a/tests/core/steam/engine/testframe-test.cpp +++ b/tests/core/steam/engine/testframe-test.cpp @@ -30,6 +30,7 @@ #include "lib/util.hpp" #include +#include #include using test::Test; diff --git a/tests/library/ios-savepoint-test.cpp b/tests/library/ios-savepoint-test.cpp index ca982ea1d..3625a9cfe 100644 --- a/tests/library/ios-savepoint-test.cpp +++ b/tests/library/ios-savepoint-test.cpp @@ -29,6 +29,7 @@ #include "lib/format-cout.hpp" #include "lib/ios-savepoint.hpp" +#include #include diff --git a/tests/library/meta/meta-utils-test.cpp b/tests/library/meta/meta-utils-test.cpp index db14c6d00..ca5946b56 100644 --- a/tests/library/meta/meta-utils-test.cpp +++ b/tests/library/meta/meta-utils-test.cpp @@ -25,6 +25,7 @@ */ +#include "lib/symbol.hpp" #include "lib/test/run.hpp" #include "lib/meta/util.hpp" #include "lib/meta/typelist.hpp" diff --git a/tests/library/meta/type-demangling-test.cpp b/tests/library/meta/type-demangling-test.cpp index 3257b0900..9c0fb6d04 100644 --- a/tests/library/meta/type-demangling-test.cpp +++ b/tests/library/meta/type-demangling-test.cpp @@ -25,6 +25,7 @@ */ +#include "lib/symbol.hpp" #include "lib/test/run.hpp" #include "lib/meta/util.hpp" diff --git a/tests/library/multifact-test.cpp b/tests/library/multifact-test.cpp index b716c0878..66ef0c697 100644 --- a/tests/library/multifact-test.cpp +++ b/tests/library/multifact-test.cpp @@ -32,6 +32,7 @@ #include #include +#include #include @@ -42,7 +43,8 @@ namespace test{ using boost::lexical_cast; using util::isSameObject; using util::isnil; - + + using std::shared_ptr; using std::function; using std::string; using std::bind; diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index c94c4d4cd..f73c40ae4 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -14781,9 +14781,7 @@ - - - +

...merke @@ -15005,9 +15003,7 @@ - - - +

...und das heißt. @@ -16596,9 +16592,7 @@ - - - +

brauche ein aktuelles Modell-Element @@ -18879,9 +18873,7 @@ - - - +

wenn, dann muß man das dynamisch implementieren... @@ -21603,9 +21595,7 @@ - - - +

fragt sich von wem wir dieses Hookable für einen andern Typ bekommen @@ -25914,9 +25904,7 @@ - - - +

abstrahiert den Zugang zum zugehörigen Widget @@ -57123,9 +57111,9 @@ - + - + @@ -57248,8 +57236,7 @@ - - + @@ -57259,8 +57246,7 @@ damit wird klar: das aktuelle SeedNucleus-Interface is zunächst gut genug (KISS)

- -
+
@@ -57297,8 +57283,8 @@ - - + + @@ -57325,7 +57311,7 @@ - + @@ -57408,6 +57394,24 @@ + + + + + + + + + + + + + + + + + + @@ -91852,8 +91856,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
nun den Umbau anzugehen

- - +
@@ -91925,8 +91928,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
der Header sollte optional sein (und hinter den Daten liegen), aber die Gegenwart eines Headers sollte explizit erkennbar sein

- - +
@@ -138181,8 +138183,7 @@ std::cout << tmpl.render({"what", "World"}) << s 2015-04-16

- -
+ @@ -138196,8 +138197,7 @@ std::cout << tmpl.render({"what", "World"}) << s »Simple C++« Dimitrij Mijoski  2021-11

- - +
@@ -138208,8 +138208,7 @@ std::cout << tmpl.render({"what", "World"}) << s Letztlich werde ich aus der Diskussion zu diesem Aspekt nicht klug. Zumindest aber sind nicht alle möglichen Ergebniszahlen sofort zu Beginn gleich wahrscheinlich; es wird auch immer wieder ein Zusammenhang impliziert mit dem Umfang des internal state, der beim Mersenne-Twister extrem groß ist (624 int). Festzuhalten bleibt, daß ein PRNG eine gweisse predictability haben kann, und das heißt, man sollte sich niemals auf das Auftreten / nicht-auftreten bestimmter Zahlen verlassen. Die Eigenschaften zeigen sich erst im statistischen Durchschnitt. Will man eine echte Zufallszahl, muß man eine echte Zufallszahl nehmen

- - +
@@ -138219,8 +138218,7 @@ std::cout << tmpl.render({"what", "World"}) << s ...das heißt, nur wenn man tatsächlich mit 624 ints seeded, erreicht man alle möglichen Sequenzen. Wobei aber bereits zwei ints (2^64) für die meisten praktischen Probleme mehr als genug sein sollte; problematisch wird das nur bei Simulationen und Lösungssuche durch Monte-Carlo.

- -
+
@@ -138230,8 +138228,7 @@ std::cout << tmpl.render({"what", "World"}) << s ...darauf wird nirgends hingeweisen, und es gibt ein Interface, um einen Allokator einzuführen. Kritisiert wird auch generell das Interface für std::seed_seq — die Stichhaltigkeit dieser Kritik kann ich nicht beurteilen (anders als daß es nicht „einfach“ ist)

- -
+
@@ -138242,8 +138239,7 @@ std::cout << tmpl.render({"what", "World"}) << s Es läuft darauf hinaus, den Mersenne-Twister in Form von std::mt19937 als »default« zu verwenden. Und der ist langsam, braucht viel Speicher und ist kompliziert zu seeden. Außerdem sind die gebotenen Distributions-Funktionen allesamt nicht portabel (sondern implementation-defined). Leider werden dann in der Diskussion (Reddit, Stackoverflow) diverse Favoriten genannt, für die es dann stets auch wieder (ohne tiefere Expertise schwer nachprüfbare) Einwände gibt. Die einzige Alternative, gegen die niemand wirklich etwas einzuwenden hatte (außer daß es angeblich modernere / schnellere / coolere Alternativen gäbe) ist der allseits bekannte Jenkins jsf32

- - +
@@ -143271,8 +143267,7 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo ...und zwar für den Fall, daß jemand eine in-sich geschlossene Quelldatei aus dem Projekt heraus kopiert; alle Hinweise direkt in der Datei erhöhen die Wahrscheinlichkeit, daß die Lizenzinformation nicht verlorengeht. Hinweise über Haftungsausschluß und wo man die Lizenz bekommt sind nur eine Empfehlung und haben keine rechtliche Wirkung. Diese ensteht durch die Veröffentlichung, und dazu genügt ein Statement im Root des Quellbaumes. Diese Einschätzung geht sogar aus den Hinweisen im Appendix der GPL selber hervor. Auch auf den Seiten der FSF wird zwar stark nahegelegt, den kopletten Präambel-Text einzufügen, aber es handelt sich daber ohne jeden Zweifel nur um eine Empfehlung

- - + @@ -143282,8 +143277,7 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo Wenn dieser Claim in jeder Quelldatei eigens gepflegt wird, erhöht das die Sicherheit der Verbindung von Copyright und Lizensierung. Allerdings auch nur, wenn dieser Claim korrekt ist. Es genügt, den Zeitpunkt der allerersten signifikanten Schöpfung und Veröffentlichung aufzuführen, denn alle weiteren Beiträge sind dann bereits durch die GPL gedeckt. Empfohlen wird, spätere signifikante Beiträge gesondert mit Jahreszahl aufzuführen. Jahresbereiche sind nur sinnvoll, wenn in jedem der eingeschlossenen Jahre tatsächlich etwas beigetragen wurde.

- -
+
@@ -143293,8 +143287,7 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo Notwendig wäre das nicht, aber hilfreich, wenn die Datei herausgelöst wird. Es genügt ein Hinweis auf die exakte Form der Lizenz. Man kenn "this Program" durch den expliziten Namen ersetzen. Man kann dazu noch auf die COPYING-Datei verweisen. Alle weiteren Infos, z.B. ein Haftungsausschluß sind nur empfohlen und ändern nicht die rechtliche Wirkung der Lizenz, unter der veröffentlicht wurde

- -
+
@@ -143338,8 +143331,7 @@ unsigned int ThreadIdAsInt = *static_cast<unsigned int*>(static_cast<vo */

- - +