41 using mobject::ModelPort;
42 using lumiera::error::LUMIERA_ERROR_LOGIC;
99 .attrib(
"start",
Time{0,10})
100 .attrib(
"after",
Time{0,20})
104 .attrib(
"start",
Time{0,20})
109 JobTicket& ticket0 = dispatcher.getJobTicketFor (portIDX, -
Time{0,5});
110 JobTicket& ticket1 = dispatcher.getJobTicketFor (portIDX,
Time{0,15});
111 JobTicket& ticket2 = dispatcher.getJobTicketFor (portIDX,
Time{0,25});
113 CHECK ( ticket0.empty());
114 CHECK (not ticket1.empty());
115 CHECK (not ticket2.empty());
123 CHECK (
Time(0,15) == job1.parameter.nominalTime);
124 CHECK (23 == job1.parameter.invoKey.part.a);
126 CHECK (
Time(0,25) == job2.parameter.nominalTime);
127 CHECK (45 == job2.parameter.invoKey.part.a);
145 auto [port,sink] = dispatcher.getDummyConnection(1);
148 auto pipeline = dispatcher.forCalcStream (timings)
149 .timeRange(
Time{200,0},
Time{300,0})
153 CHECK (not isnil (pipeline));
154 CHECK (5 == pipeline.currFrameNr());
156 Job job = pipeline.buildJob();
157 CHECK (
Time(200,0) == job.parameter.nominalTime);
158 CHECK (555 == job.parameter.invoKey.part.a);
161 CHECK (not isnil (pipeline));
162 CHECK (6 == pipeline.currFrameNr());
163 job = pipeline.buildJob();
164 CHECK (
Time(240,0) == job.parameter.nominalTime);
165 CHECK (555 == job.parameter.invoKey.part.a);
168 CHECK (7 == pipeline.currFrameNr());
169 job = pipeline.buildJob();
170 CHECK (
Time(280,0) == job.parameter.nominalTime);
173 CHECK (isnil (pipeline));
size_t resolveModelPort(ModelPort modelPort) override
translate a generic ModelPort spec into the specific index number applicable at the Timeline referred...
Mock data structures to support implementation testing of render job planning and frame dispatch...
Framerate specified as frames per second.
Generic frame timing specification.
A mocked frame Dispatcher setup without any backing model.
#define VERIFY_ERROR(ERROR_ID, ERRONEOUS_STATEMENT)
Macro to verify that a statement indeed raises an exception.
play::test::DummyOutputLink getDummyConnection(uint index)
The faked builder/playback setup provides some preconfigured ModelPort and corresponding DataSink han...
Steam-Layer implementation namespace root.
structural asset corresponding to the part of the model forming a processing pipe for generating medi...
Lumiera's internal time value datatype.
Abstract Base Class for all testcases.
Simplistic test class runner.
void seedRand()
draw a new random seed from a common nucleus, and re-seed the default-Gen.
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...
static PPipe query(string const &properties)
convenience shortcut for retrieving default configured pipes
Handle designating a point within the model, where actually output data can be pulled.
static bool isNopJob(Job const &)
Offset measures a distance in time.
How to define a timing specification or constraint.
Individual frame rendering task, forwarding to a closure.
a family of time value like entities and their relationships.
static const FrameRate PAL
predefined constant for PAL framerate
execution plan for pulling a specific exit node.
Job createJobFor(Time nominalTime)
Core operation: build a concrete render job based on this blueprint.