Segmentation: draft simple mock-based setup for tests
- how to pass-in a specification given as GenNode - now this might be translated into a MockJobTicket allocated in the MockSegmentation Unimplemented: actually build the Segment with suitable start/end time
This commit is contained in:
parent
56405b2e2d
commit
a807705185
4 changed files with 90 additions and 18 deletions
|
|
@ -150,6 +150,16 @@ namespace test {
|
|||
SpecTuple(DummyJob::getFunctor(), 0, emptyPrereq));
|
||||
}
|
||||
|
||||
inline auto
|
||||
defineSimpleSpec (HashVal seed) /////////////////TODO collapse with defineBottomSpec() ??
|
||||
{
|
||||
auto emptyPrereq = lib::nilIterator<JobTicket&>();
|
||||
using Iter = decltype(emptyPrereq);
|
||||
using SpecTuple = std::tuple<JobFunctor&, HashVal, Iter>;
|
||||
return lib::singleValIterator(
|
||||
SpecTuple(DummyJob::getFunctor(), seed, emptyPrereq));
|
||||
}
|
||||
|
||||
}//(End)internal test helpers....
|
||||
|
||||
#if false /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #1221
|
||||
|
|
@ -169,9 +179,14 @@ namespace test {
|
|||
public:
|
||||
MockJobTicket()
|
||||
: JobTicket{defineBottomSpec()}
|
||||
{ };
|
||||
{ }
|
||||
|
||||
MockJobTicket (HashVal seed)
|
||||
: JobTicket{defineSimpleSpec (seed)}
|
||||
{ }
|
||||
|
||||
bool verify_associated (Job const&) const;
|
||||
static bool isAssociated (Job const&, JobTicket const&);
|
||||
private:
|
||||
};
|
||||
|
||||
|
|
@ -190,7 +205,11 @@ namespace test {
|
|||
MockSegmentation (std::initializer_list<GenNode> specs)
|
||||
: MockSegmentation{}
|
||||
{
|
||||
UNIMPLEMENTED ("populate mock sequence structure");
|
||||
for (auto& spec : specs)
|
||||
{
|
||||
auto seed = spec.retrieveAttribute<HashVal>("mark");
|
||||
tickets_.emplace_back (seed? *seed : HashVal(rand() % 1000));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -211,6 +230,19 @@ namespace test {
|
|||
and this->verifyInstance(functor, invoKey, nominalTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* convenience shortcut to perform [this test](\ref MockJobTicket::verify_associated)
|
||||
* on arbitrary JobTicket and Job instances.
|
||||
* @warning a positive test result however relies on some casting trickery and there is no
|
||||
* guarantee this test works if the JobTicket was not created from this mock framework.
|
||||
*/
|
||||
inline bool
|
||||
MockJobTicket::isAssociated (Job const& job, JobTicket const& ticket)
|
||||
{ // should work always, since storage is the same
|
||||
MockJobTicket const& backdoor = static_cast<MockJobTicket const&> (ticket);
|
||||
return backdoor.verify_associated (job);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}}} // namespace steam::engine::test
|
||||
|
|
|
|||
|
|
@ -139,11 +139,32 @@ namespace test {
|
|||
void
|
||||
verify_MockSegmentation()
|
||||
{
|
||||
MockSegmentation mockSeg;
|
||||
CHECK (1 == mockSeg.size());
|
||||
Time arbitraryTime = lib::test::randTime();
|
||||
JobTicket const& ticket = mockSeg[arbitraryTime].jobTicket();
|
||||
CHECK (util::isSameObject (ticket, JobTicket::NOP));
|
||||
FrameCoord coord;
|
||||
Time someTime = lib::test::randTime();
|
||||
coord.absoluteNominalTime = someTime;
|
||||
{
|
||||
MockSegmentation mockSeg;
|
||||
CHECK (1 == mockSeg.size());
|
||||
JobTicket const& ticket = mockSeg[someTime].jobTicket();
|
||||
CHECK (util::isSameObject (ticket, JobTicket::NOP));
|
||||
}
|
||||
{
|
||||
MockSegmentation mockSeg{MakeRec().genNode()};
|
||||
CHECK (1 == mockSeg.size());
|
||||
JobTicket const& ticket = mockSeg[someTime].jobTicket();
|
||||
CHECK (not util::isSameObject (ticket, JobTicket::NOP));
|
||||
|
||||
Job someJob = ticket.createJobFor(coord);
|
||||
CHECK (MockJobTicket::isAssociated (someJob, ticket));
|
||||
CHECK (not DummyJob::was_invoked (someJob));
|
||||
|
||||
someJob.triggerJob();
|
||||
CHECK (DummyJob::was_invoked (someJob));
|
||||
CHECK (RealClock::wasRecently (DummyJob::invocationTime (someJob)));
|
||||
CHECK (someTime == DummyJob::invocationNominalTime (someJob));
|
||||
}
|
||||
|
||||
|
||||
TODO ("cover details of MockSegmentation");
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ namespace test{
|
|||
auto o0 = MakeRec().genNode();
|
||||
auto o1 = MakeRec().genNode("νόμος");
|
||||
auto o2 = MakeRec().type("spam").genNode();
|
||||
auto o3 = MakeRec().attrib("Ψ", int64_t(42), "π", 3.14159265358979323846264338328).genNode("λόγος");
|
||||
auto o3 = MakeRec().attrib("Ψ", int64_t(42), "π", 3.14159265358979323846264338328).genNode("μάθησις");
|
||||
|
||||
CHECK (!o0.isNamed());
|
||||
CHECK (isnil(o0.data.get<Rec>()));
|
||||
|
|
@ -171,7 +171,7 @@ namespace test{
|
|||
CHECK (isnil(o2.data.get<Rec>()));
|
||||
|
||||
CHECK (o3.isNamed());
|
||||
CHECK ("λόγος" == o3.idi.getSym());
|
||||
CHECK ("μάθησις" == o3.idi.getSym());
|
||||
CHECK ("NIL" == o3.data.get<Rec>().getType());
|
||||
CHECK (GenNode("Ψ", int64_t(42)) == o3.data.get<Rec>().get("Ψ"));
|
||||
CHECK (42L == o3.data.get<Rec>().get("Ψ").data.get<int64_t>());
|
||||
|
|
|
|||
|
|
@ -69645,8 +69645,8 @@
|
|||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1681832899812" ID="ID_1664606019" MODIFIED="1682047865205" TEXT="GenNode-basierter Implementierungs-Kern">
|
||||
<linktarget COLOR="#fef7d1" DESTINATION="ID_1664606019" ENDARROW="Default" ENDINCLINATION="139;-4;" ID="Arrow_ID_1184218305" SOURCE="ID_581175494" STARTARROW="None" STARTINCLINATION="13;150;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681833031252" HGAP="29" ID="ID_1232985944" MODIFIED="1681833059957" TEXT="leer" VSHIFT="14">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1681833031252" HGAP="29" ID="ID_1232985944" MODIFIED="1682953126289" TEXT="leer" VSHIFT="14">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681833034545" ID="ID_1378629902" MODIFIED="1681833049605" TEXT="rekursiv mit Prerequisite">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
@ -69871,9 +69871,9 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682627654491" ID="ID_1371147624" MODIFIED="1682627673234" TEXT="Marker definieren und sichtbar machen">
|
||||
<node COLOR="#5b280f" CREATED="1682627654491" ID="ID_1371147624" MODIFIED="1682948581383" TEXT="Marker definieren und sichtbar machen">
|
||||
<linktarget COLOR="#48417c" DESTINATION="ID_1371147624" ENDARROW="Default" ENDINCLINATION="-48;56;" ID="Arrow_ID_1753796050" SOURCE="ID_1110039315" STARTARROW="None" STARTINCLINATION="-284;-8;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1682641810117" ID="ID_596391717" MODIFIED="1682641823784" TEXT="Problem: wie integieren?">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1682641827594" ID="ID_361324923" MODIFIED="1682641841154" TEXT="JobTicket selber hat keine VTable">
|
||||
|
|
@ -69971,6 +69971,10 @@
|
|||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682948593099" HGAP="-167" ID="ID_924000740" MODIFIED="1682948640643" STYLE="bubble" TEXT="stattdessen: verifizieren" VSHIFT="-5">
|
||||
<edge COLOR="#1d699e"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1682205189643" ID="ID_897564380" MODIFIED="1682205211467" TEXT="Problem: Umbau in JobTicket selber blockt">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
|
|
@ -69990,8 +69994,8 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682385376739" ID="ID_576604811" MODIFIED="1682385391451" TEXT="Mock-Implementierung">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1682385376739" ID="ID_576604811" MODIFIED="1682948833179" TEXT="Mock-Implementierung">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1682385392969" ID="ID_1317765253" MODIFIED="1682385456612" TEXT="Storage">
|
||||
<node CREATED="1682385491724" ID="ID_1049416610" MODIFIED="1682385544239" TEXT="JobTickets in eine Deque allozieren">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -70010,8 +70014,8 @@
|
|||
<node CREATED="1682385963140" ID="ID_1239158970" MODIFIED="1682385993315" TEXT="also MockSegmentation, MockJobTicket,..."/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682614081119" ID="ID_57760675" MODIFIED="1682614090109" TEXT="Interpretieren der jeweilgen Spec">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1682614081119" ID="ID_57760675" MODIFIED="1682948825902" TEXT="Interpretieren der jeweilgen Spec">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1682614092900" ID="ID_1252815318" MODIFIED="1682614105470" TEXT="Basis-Impl: ein Segment gibt es immer"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682614117409" ID="ID_1176991982" MODIFIED="1682614138327" TEXT="splitSplice() implementieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
@ -70019,10 +70023,25 @@
|
|||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682627621082" ID="ID_1110039315" MODIFIED="1682627678946" TEXT="ein Segment hinzufügen">
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1682627621082" ID="ID_1110039315" MODIFIED="1682948822157" TEXT="ein Segment hinzufügen">
|
||||
<arrowlink COLOR="#48417c" DESTINATION="ID_1371147624" ENDARROW="Default" ENDINCLINATION="-48;56;" ID="Arrow_ID_1753796050" STARTARROW="None" STARTINCLINATION="-284;-8;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682948783048" ID="ID_1811722913" MODIFIED="1682948817094" TEXT="leere Spec">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682948658996" ID="ID_1655049197" MODIFIED="1682948817094" TEXT="einfachste Spec">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682948807668" ID="ID_343017535" MODIFIED="1682948817095" TEXT="zusätzlich mit Marker">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682948677800" ID="ID_1669789277" MODIFIED="1682948685167" TEXT="zwei Segmente">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1682948692446" ID="ID_1376099012" MODIFIED="1682948701915" TEXT="disjunkt"/>
|
||||
<node CREATED="1682948687990" ID="ID_691398450" MODIFIED="1682948721008" TEXT="überlappend"/>
|
||||
<node CREATED="1682948709980" ID="ID_1056091678" MODIFIED="1682948718791" TEXT="verschachtelt"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1682385895644" ID="ID_89969390" MODIFIED="1682385902557" TEXT="Verifikation im Test unterstützen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue