diff options
author | Jacques Lucke <jacques@blender.org> | 2021-06-14 13:44:13 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-06-14 13:44:13 +0300 |
commit | dddcf1e9bbf4a6d1f4ff03eaf0cb7e9228b18ec5 (patch) | |
tree | c20defa7efd54c933d20a296abefe567909bb6c0 /source/blender/blenlib/tests/BLI_function_ref_test.cc | |
parent | 3b162b7c185d089e93d892169a458d552196b7b6 (diff) | |
parent | c9dc55301cd7903b7ef7c045d337ada29aa809a1 (diff) |
Merge branch 'master' into temp-compact-node-prototypetemp-compact-node-prototype
Diffstat (limited to 'source/blender/blenlib/tests/BLI_function_ref_test.cc')
-rw-r--r-- | source/blender/blenlib/tests/BLI_function_ref_test.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/source/blender/blenlib/tests/BLI_function_ref_test.cc b/source/blender/blenlib/tests/BLI_function_ref_test.cc index cdcbccc72e8..74f5014142c 100644 --- a/source/blender/blenlib/tests/BLI_function_ref_test.cc +++ b/source/blender/blenlib/tests/BLI_function_ref_test.cc @@ -99,4 +99,29 @@ TEST(function_ref, ReferenceAnotherFunctionRef) EXPECT_EQ(y(), 2); } +TEST(function_ref, CallSafe) +{ + FunctionRef<int()> f; + EXPECT_FALSE(f.call_safe().has_value()); + auto func = []() { return 10; }; + f = func; + EXPECT_TRUE(f.call_safe().has_value()); + EXPECT_EQ(*f.call_safe(), 10); + f = {}; + EXPECT_FALSE(f.call_safe().has_value()); + BLI_STATIC_ASSERT((std::is_same_v<decltype(f.call_safe()), std::optional<int>>), ""); +} + +TEST(function_ref, CallSafeVoid) +{ + FunctionRef<void()> f; + BLI_STATIC_ASSERT((std::is_same_v<decltype(f.call_safe()), void>), ""); + f.call_safe(); + int value = 0; + auto func = [&]() { value++; }; + f = func; + f.call_safe(); + EXPECT_EQ(value, 1); +} + } // namespace blender::tests |