5#include "testing/testing.h"
28 const int a =
params.get_input<
int>(0);
29 const int b =
params.get_input<
int>(1);
49 *dst1_ =
params.get_input<
int>(0);
50 if (
int *value =
params.try_get_input_data_ptr_or_request<
int>(1)) {
62 : side_effect_nodes_(side_effect_nodes)
67 const Context & )
const override
69 return side_effect_nodes_;
73TEST(lazy_function, SimpleAdd)
78 add_fn,
nullptr,
nullptr, std::make_tuple(30, 5), std::make_tuple(&result));
82TEST(lazy_function, SideEffects)
97 graph.add_link(graph_input, add_node_1.
input(0));
98 graph.add_link(graph_input, add_node_2.
input(0));
99 graph.add_link(add_node_1.
output(0), store_node.
input(0));
100 graph.add_link(add_node_2.
output(0), store_node.
input(1));
102 const int value_10 = 10;
103 const int value_100 = 100;
107 graph.update_node_indices();
111 GraphExecutor executor_fn{
graph, {&graph_input}, {},
nullptr, &side_effect_provider,
nullptr};
113 executor_fn,
nullptr,
nullptr, std::make_tuple(5), std::make_tuple());
135 if (!
params.output_was_set(0)) {
136 if (
int *a =
params.try_get_input_data_ptr<
int>(0)) {
137 params.set_output(0, *a * 2);
140 if (!
params.output_was_set(1)) {
141 if (
int *
b =
params.try_get_input_data_ptr<
int>(1)) {
151 const int input_index = output_index;
156TEST(lazy_function, GraphWithCycle)
166 graph.add_link(input_socket, fn_node.
input(0));
169 graph.add_link(fn_node.
output(0), fn_node.
input(1));
170 graph.add_link(fn_node.
output(1), output_socket);
172 graph.update_node_indices();
174 GraphExecutor executor_fn{
graph, {&input_socket}, {&output_socket},
nullptr,
nullptr,
nullptr};
177 executor_fn,
nullptr,
nullptr, std::make_tuple(10), std::make_tuple(&result));
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
void BLI_task_scheduler_init(void)
static const CPPType & get()
Vector< Output > outputs_
bool allow_missing_requested_inputs_
const InputSocket & input(int index) const
const OutputSocket & output(int index) const
void execute_impl(Params ¶ms, const Context &) const override
void execute_impl(Params ¶ms, const Context &) const override
void possible_output_dependencies(const int output_index, FunctionRef< void(Span< int >)> fn) const override
PartialEvaluationTestFunction()
SimpleSideEffectProvider(Span< const FunctionNode * > side_effect_nodes)
Vector< const FunctionNode * > get_nodes_with_side_effects(const Context &) const override
StoreValueFunction(int *dst1, int *dst2)
void execute_impl(Params ¶ms, const Context &) const override
local_group_size(16, 16) .push_constant(Type b
TEST(lazy_function, SimpleAdd)
void execute_lazy_function_eagerly(const LazyFunction &fn, UserData *user_data, LocalUserData *local_user_data, std::tuple< Inputs... > inputs, std::tuple< Outputs *... > outputs)