diff options
author | Jacques Lucke <jacques@blender.org> | 2020-06-30 18:59:33 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2020-06-30 19:18:48 +0300 |
commit | 613f62d15ce1851a8b7017013e9cced1009ad431 (patch) | |
tree | 2ca4befbd04b2bc1644eae653fe5204bd30658b2 /tests | |
parent | d92e5f895058e3756795aa070a6977c647ff08f8 (diff) |
Functions: add two more customizable multi-functions
Diffstat (limited to 'tests')
-rw-r--r-- | tests/gtests/functions/FN_multi_function_network_test.cc | 7 | ||||
-rw-r--r-- | tests/gtests/functions/FN_multi_function_test.cc | 60 |
2 files changed, 56 insertions, 11 deletions
diff --git a/tests/gtests/functions/FN_multi_function_network_test.cc b/tests/gtests/functions/FN_multi_function_network_test.cc index 2b2cb62716c..a5fe3c4fb07 100644 --- a/tests/gtests/functions/FN_multi_function_network_test.cc +++ b/tests/gtests/functions/FN_multi_function_network_test.cc @@ -26,9 +26,8 @@ namespace fn { TEST(multi_function_network, Test1) { - CustomFunction_SI_SO<int, int> add_10_fn("add 10", [](int value) { return value + 10; }); - CustomFunction_SI_SI_SO<int, int, int> multiply_fn("multiply", - [](int a, int b) { return a * b; }); + CustomMF_SI_SO<int, int> add_10_fn("add 10", [](int value) { return value + 10; }); + CustomMF_SI_SI_SO<int, int, int> multiply_fn("multiply", [](int a, int b) { return a * b; }); MFNetwork network; @@ -171,7 +170,7 @@ class CreateRangeFunction : public MultiFunction { TEST(multi_function_network, Test2) { - CustomFunction_SI_SO<int, int> add_3_fn("add 3", [](int value) { return value + 3; }); + CustomMF_SI_SO<int, int> add_3_fn("add 3", [](int value) { return value + 3; }); ConcatVectorsFunction concat_vectors_fn; AppendFunction append_fn; diff --git a/tests/gtests/functions/FN_multi_function_test.cc b/tests/gtests/functions/FN_multi_function_test.cc index 12fa17b0d07..903c385ea67 100644 --- a/tests/gtests/functions/FN_multi_function_test.cc +++ b/tests/gtests/functions/FN_multi_function_test.cc @@ -219,10 +219,10 @@ TEST(multi_function, GenericAppendFunction) EXPECT_EQ(vectors_ref[3][0], 1); } -TEST(multi_function, CustomFunction_SI_SO) +TEST(multi_function, CustomMF_SI_SO) { - CustomFunction_SI_SO<std::string, uint> fn("strlen", - [](const std::string &str) { return str.size(); }); + CustomMF_SI_SO<std::string, uint> fn("strlen", + [](const std::string &str) { return str.size(); }); Array<std::string> strings = {"hello", "world", "test", "another test"}; Array<uint> sizes(strings.size(), 0); @@ -241,9 +241,9 @@ TEST(multi_function, CustomFunction_SI_SO) EXPECT_EQ(sizes[3], 12); } -TEST(multi_function, CustomFunction_SI_SI_SO) +TEST(multi_function, CustomMF_SI_SI_SO) { - CustomFunction_SI_SI_SO<int, int, int> fn("mul", [](int a, int b) { return a * b; }); + CustomMF_SI_SI_SO<int, int, int> fn("mul", [](int a, int b) { return a * b; }); Array<int> values_a = {4, 6, 8, 9}; int value_b = 10; @@ -264,9 +264,36 @@ TEST(multi_function, CustomFunction_SI_SI_SO) EXPECT_EQ(outputs[3], 90); } -TEST(multi_function, CustomFunction_SM) +TEST(multi_function, CustomMF_SI_SI_SI_SO) { - CustomFunction_SM<std::string> fn("AddSuffix", [](std::string &value) { value += " test"; }); + CustomMF_SI_SI_SI_SO<int, std::string, bool, uint> fn{ + "custom", + [](int a, const std::string &b, bool c) { return (uint)((uint)a + b.size() + (uint)c); }}; + + Array<int> values_a = {5, 7, 3, 8}; + Array<std::string> values_b = {"hello", "world", "another", "test"}; + Array<bool> values_c = {true, false, false, true}; + Array<uint> outputs(values_a.size(), 0); + + MFParamsBuilder params(fn, values_a.size()); + params.add_readonly_single_input(values_a.as_span()); + params.add_readonly_single_input(values_b.as_span()); + params.add_readonly_single_input(values_c.as_span()); + params.add_uninitialized_single_output(outputs.as_mutable_span()); + + MFContextBuilder context; + + fn.call({1, 2, 3}, params, context); + + EXPECT_EQ(outputs[0], 0); + EXPECT_EQ(outputs[1], 12); + EXPECT_EQ(outputs[2], 10); + EXPECT_EQ(outputs[3], 13); +} + +TEST(multi_function, CustomMF_SM) +{ + CustomMF_SM<std::string> fn("AddSuffix", [](std::string &value) { value += " test"; }); Array<std::string> values = {"a", "b", "c", "d", "e"}; @@ -284,5 +311,24 @@ TEST(multi_function, CustomFunction_SM) EXPECT_EQ(values[4], "e"); } +TEST(multi_function, CustomMF_Constant) +{ + CustomMF_Constant<int> fn{42}; + + Array<int> outputs(4, 0); + + MFParamsBuilder params(fn, outputs.size()); + params.add_uninitialized_single_output(outputs.as_mutable_span()); + + MFContextBuilder context; + + fn.call({0, 2, 3}, params, context); + + EXPECT_EQ(outputs[0], 42); + EXPECT_EQ(outputs[1], 0); + EXPECT_EQ(outputs[2], 42); + EXPECT_EQ(outputs[3], 42); +} + } // namespace fn } // namespace blender |