diff options
author | Abseil Team <absl-team@google.com> | 2023-12-28 12:03:13 (GMT) |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-12-28 12:04:00 (GMT) |
commit | dddb219c3eb96d7f9200f09b0a381f016e6b4562 (patch) | |
tree | d14468aafea76be949d6d380b6cb8f735b11de82 /googlemock/test | |
parent | 96eadf659fb75ecda943bd97413c71d4c17c4f43 (diff) | |
download | googletest-dddb219c3eb96d7f9200f09b0a381f016e6b4562.zip googletest-dddb219c3eb96d7f9200f09b0a381f016e6b4562.tar.gz googletest-dddb219c3eb96d7f9200f09b0a381f016e6b4562.tar.bz2 |
Accept move-only callables in `InvokeArguments`
PiperOrigin-RevId: 594223533
Change-Id: I491fae7d851d4e0df07fb3627416949071fec8d6
Diffstat (limited to 'googlemock/test')
-rw-r--r-- | googlemock/test/gmock-more-actions_test.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/googlemock/test/gmock-more-actions_test.cc b/googlemock/test/gmock-more-actions_test.cc index 9980f3b..16af689 100644 --- a/googlemock/test/gmock-more-actions_test.cc +++ b/googlemock/test/gmock-more-actions_test.cc @@ -85,6 +85,12 @@ struct UnaryFunctor { int operator()(bool x) { return x ? 1 : -1; } }; +struct UnaryMoveOnlyFunctor : UnaryFunctor { + UnaryMoveOnlyFunctor() = default; + UnaryMoveOnlyFunctor(const UnaryMoveOnlyFunctor&) = delete; + UnaryMoveOnlyFunctor(UnaryMoveOnlyFunctor&&) = default; +}; + const char* Binary(const char* input, short n) { return input + n; } // NOLINT int Ternary(int x, char y, short z) { return x + y + z; } // NOLINT @@ -698,12 +704,18 @@ TEST(InvokeArgumentTest, Function0) { EXPECT_EQ(1, a.Perform(std::make_tuple(2, &Nullary))); } -// Tests using InvokeArgument with a unary function. +// Tests using InvokeArgument with a unary functor. TEST(InvokeArgumentTest, Functor1) { Action<int(UnaryFunctor)> a = InvokeArgument<0>(true); // NOLINT EXPECT_EQ(1, a.Perform(std::make_tuple(UnaryFunctor()))); } +// Tests using InvokeArgument with a unary move-only functor. +TEST(InvokeArgumentTest, Functor1MoveOnly) { + Action<int(UnaryMoveOnlyFunctor)> a = InvokeArgument<0>(true); // NOLINT + EXPECT_EQ(1, a.Perform(std::make_tuple(UnaryMoveOnlyFunctor()))); +} + // Tests using InvokeArgument with a 5-ary function. TEST(InvokeArgumentTest, Function5) { Action<int(int (*)(int, int, int, int, int))> a = // NOLINT |