lumiera_/tests/core/vault/engine/dummy-job.hpp
Ichthyostega e33689e5d6 Job-Planning: verify and complete the build-up of mock structures (see #1294)
The prototypical setup of data structures and test support components
is largely complete by now — with the exception of the `MockDispatcher`,
which will be completed while moving to the next steps pertaining the
setup of a frame dispatch pipeline.

 * the existing `DummyJob` was augmented to allow verification of
   association between Job and `JobTicket`
 * the existing implementation of `JobTicket` was verified and augmented
   to allow coverage of the whole usage cycle
 * a `MockJobTicket` was implemented on top, which can be generated
   from a symbolical test specification (rather than from the real
   Fixture data structure)
 * a complete `MockSegmentation` was developed, allowing to establish
   all the aforementioned data structures without an actual backing
   Render Engine. Moreover, `MockSegmentation` can be generated
   from the aforementioned symbolic test specification.
 * as part of this work, an algorithm to split an existing Segmentation
   and to splice in new segments was developed and verified
2023-05-24 03:38:12 +02:00

74 lines
2.3 KiB
C++

/*
DUMMY-JOB.hpp - diagnostic job for unit tests
Copyright (C) Lumiera.org
2013, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/** @file dummy-job.hpp
** Unit test helper to generate dummy render jobs.
** Render Jobs generated from this setup will not actually perform
** any action, other than recording this invocation and the used
** parameters into a map table managed behind the scenes. Using
** the provided query function, it is possible to probe for such
** an invocation and to extract the recorded parameter data.
**
** This setup is used both for stand-alone tests, which just require
** "some job", but also as part of a complete hierarchy of mocked
** data structures related to frame job dispatch and invocation
** @see mock-dispatcher.hpp
** @see MockSupport_test
**
*/
#ifndef VAULT_ENGINE_DUMMY_JOB_H
#define VAULT_ENGINE_DUMMY_JOB_H
#include "vault/engine/job.h"
#include "lib/time/timevalue.hpp"
namespace vault{
namespace engine {
using lib::time::Time;
/**
* Test helper: generate test dummy jobs with built-in diagnostics.
* Each invocation of such a dummy job will be logged internally
* and can be investigated and verified afterwards.
*/
struct DummyJob
{
static Job build(); ///< uses random job definition values
static Job build (Time nominalTime, int additionalKey);
static bool was_invoked (Job const& job);
static Time invocationTime (Job const& job);
static Time invocationNominalTime (Job const& job);
static int invocationAdditionalKey (Job const& job);
static JobClosure& getFunctor();
};
}} // namespace vault::engine
#endif