After this extended excursion to lift the internals of Node invocation to the use of structured and typed data (notably the invocation parameters), the »Playback Vertical Slice« continues to push ahead towards the goal of integration. The existing code has been re-oriented and some aspects of node invocation have been reworked in a prototyping effort, which (in part though the aforementioned rework) is meanwhile on a good path to lead to a consolidated final version. * ✔ building a simple Render Node works now with the revamped code * 🔁invoking this simple Node ''should be just one step away'' (since all parts are known to work) * ⌛ the next step would then be to build a Node outfitted with a ''Parameter Functor'', which is the new concept introduced by recent changes * ⌛ this should then get us at the point to take the hurdle of invoking one of our **Random Test** functions as a Render Node
115 lines
2.9 KiB
C++
115 lines
2.9 KiB
C++
/*
|
||
NodeBuilder(Test) - creation and setup of render nodes
|
||
|
||
Copyright (C)
|
||
2024, Hermann Vosseler <Ichthyostega@web.de>
|
||
|
||
**Lumiera** 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. See the file COPYING for further details.
|
||
|
||
* *****************************************************************/
|
||
|
||
/** @file node-builder-test.cpp
|
||
** Unit test \ref NodeBuilder_test demonstrates how to build render nodes.
|
||
*/
|
||
|
||
|
||
#include "lib/test/run.hpp"
|
||
#include "steam/engine/node-builder.hpp"
|
||
//#include "lib/util.hpp"
|
||
|
||
|
||
using std::string;
|
||
|
||
|
||
namespace steam {
|
||
namespace engine{
|
||
namespace test {
|
||
|
||
|
||
|
||
|
||
/***************************************************************//**
|
||
* @test creating and configuring various kinds of Render Nodes.
|
||
*/
|
||
class NodeBuilder_test : public Test
|
||
{
|
||
virtual void
|
||
run (Arg)
|
||
{
|
||
build_simpleNode();
|
||
build_Node_fixedParam();
|
||
build_Node_dynamicParam();
|
||
build_connectedNodes();
|
||
build_ParamNode();
|
||
}
|
||
|
||
|
||
/** @test TODO build a simple output-only Render Node
|
||
* @todo WIP 12/24 🔁 define ⟶ implement
|
||
*/
|
||
void
|
||
build_simpleNode()
|
||
{
|
||
auto fun = [](uint* buff){ *buff = LIFE_AND_UNIVERSE_4EVER; };
|
||
|
||
ProcNode node{prepareNode("Test")
|
||
.preparePort()
|
||
.invoke("fun()", fun)
|
||
.completePort()
|
||
.build()};
|
||
|
||
CHECK (watch(node).isSrc());
|
||
CHECK (watch(node).ports().size() == 1);
|
||
}
|
||
|
||
|
||
/** @test TODO build a Node with a fixed invocation parameter
|
||
* @todo WIP 12/24 🔁 define ⟶ implement
|
||
*/
|
||
void
|
||
build_Node_fixedParam()
|
||
{
|
||
UNIMPLEMENTED ("build node with fixed param");
|
||
}
|
||
|
||
|
||
/** @test TODO build a Node with dynamically generated parameter
|
||
* @todo WIP 12/24 define ⟶ implement
|
||
*/
|
||
void
|
||
build_Node_dynamicParam()
|
||
{
|
||
UNIMPLEMENTED ("build node with param-functor");
|
||
}
|
||
|
||
|
||
/** @test TODO build a chain with two connected Nodes
|
||
* @todo WIP 12/24 define ⟶ implement
|
||
*/
|
||
void
|
||
build_connectedNodes()
|
||
{
|
||
UNIMPLEMENTED ("build two linked nodes");
|
||
}
|
||
|
||
|
||
/** @test TODO
|
||
* @todo WIP 12/24 define ⟶ implement
|
||
*/
|
||
void
|
||
build_ParamNode()
|
||
{
|
||
UNIMPLEMENTED ("build ParamNode + follow-up-Node");
|
||
}
|
||
};
|
||
|
||
|
||
/** Register this test class... */
|
||
LAUNCHER (NodeBuilder_test, "unit node");
|
||
|
||
|
||
|
||
}}} // namespace steam::engine::test
|