proxygen
InvokeTest.cpp File Reference

Go to the source code of this file.

Classes

class  InvokeTest
 

Namespaces

 x
 
 y
 
 z
 
 swappable
 

Functions

 TEST_F (InvokeTest, invoke)
 
 TEST_F (InvokeTest, invoke_result)
 
 TEST_F (InvokeTest, is_invocable)
 
 TEST_F (InvokeTest, is_invocable_r)
 
 TEST_F (InvokeTest, is_nothrow_invocable)
 
 TEST_F (InvokeTest, is_nothrow_invocable_r)
 
 TEST_F (InvokeTest, free_invoke)
 
 TEST_F (InvokeTest, free_invoke_result)
 
 TEST_F (InvokeTest, free_is_invocable)
 
 TEST_F (InvokeTest, free_is_invocable_r)
 
 TEST_F (InvokeTest, free_is_nothrow_invocable)
 
 TEST_F (InvokeTest, free_is_nothrow_invocable_r)
 
 TEST_F (InvokeTest, free_invoke_swap)
 
 TEST_F (InvokeTest, member_invoke)
 
 TEST_F (InvokeTest, member_invoke_result)
 
 TEST_F (InvokeTest, member_is_invocable)
 
 TEST_F (InvokeTest, member_is_invocable_r)
 
 TEST_F (InvokeTest, member_is_nothrow_invocable)
 
 TEST_F (InvokeTest, member_is_nothrow_invocable_r)
 

Function Documentation

TEST_F ( InvokeTest  ,
invoke   
)

Definition at line 92 of file InvokeTest.cpp.

References EXPECT_EQ, EXPECT_FALSE, EXPECT_TRUE, folly::invoke(), and folly::pushmi::__adl::noexcept().

92  {
93  Fn fn;
94 
96  EXPECT_FALSE(noexcept(folly::invoke(fn, 1, "2")));
97 
98  EXPECT_EQ('a', folly::invoke(fn, 1, 2));
99  EXPECT_EQ(17, folly::invoke(fn, 1, "2"));
100 
101  using FnA = char (Fn::*)(int, int);
102  using FnB = int volatile && (Fn::*)(int, char const*);
103  EXPECT_EQ('a', folly::invoke(static_cast<FnA>(&Fn::operator()), fn, 1, 2));
104  EXPECT_EQ(17, folly::invoke(static_cast<FnB>(&Fn::operator()), fn, 1, "2"));
105 }
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1922
requires E e noexcept(noexcept(s.error(std::move(e))))
constexpr auto invoke(F &&f, Args &&...args) noexcept(noexcept(static_cast< F && >(f)(static_cast< Args && >(args)...))) -> decltype(static_cast< F && >(f)(static_cast< Args && >(args)...))
Definition: Invoke.h:49
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
TEST_F ( InvokeTest  ,
invoke_result   
)

Definition at line 107 of file InvokeTest.cpp.

References EXPECT_TRUE, and value.

107  {
108  EXPECT_TRUE(
109  (std::is_same<char, folly::invoke_result_t<Fn, int, char>>::value));
110  EXPECT_TRUE(
111  (std::is_same<int volatile&&, folly::invoke_result_t<Fn, int, char*>>::
112  value));
113 }
typename invoke_result< F, Args... >::type invoke_result_t
Definition: Invoke.h:142
static const char *const value
Definition: Conv.cpp:50
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
TEST_F ( InvokeTest  ,
is_invocable   
)

Definition at line 115 of file InvokeTest.cpp.

References EXPECT_FALSE, and EXPECT_TRUE.

TEST_F ( InvokeTest  ,
is_invocable_r   
)

Definition at line 121 of file InvokeTest.cpp.

References EXPECT_FALSE, and EXPECT_TRUE.

TEST_F ( InvokeTest  ,
is_nothrow_invocable   
)
TEST_F ( InvokeTest  ,
is_nothrow_invocable_r   
)
TEST_F ( InvokeTest  ,
free_invoke   
)

Definition at line 139 of file InvokeTest.cpp.

References EXPECT_EQ, EXPECT_FALSE, EXPECT_TRUE, folly::pushmi::invoke, folly::pushmi::__adl::noexcept(), x_, and y_.

139  {
140  using traits = go_invoke_traits;
141 
142  x::Obj x_;
143  y::Obj y_;
144 
146  EXPECT_FALSE(noexcept(traits::invoke(y_, "hello")));
147 
148  EXPECT_EQ(3, traits::invoke(x_, 3));
149  EXPECT_EQ('a', traits::invoke(y_, "hello"));
150 }
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::invoke_fn invoke
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1922
requires E e noexcept(noexcept(s.error(std::move(e))))
int y_
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
int x_
TEST_F ( InvokeTest  ,
free_invoke_result   
)

Definition at line 152 of file InvokeTest.cpp.

References EXPECT_TRUE, and value.

152  {
153  using traits = go_invoke_traits;
154 
155  EXPECT_TRUE((std::is_same<int, traits::invoke_result_t<x::Obj, int>>::value));
156  EXPECT_TRUE((
157  std::is_same<char, traits::invoke_result_t<y::Obj, char const*>>::value));
158 }
static const char *const value
Definition: Conv.cpp:50
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
TEST_F ( InvokeTest  ,
free_is_invocable   
)

Definition at line 160 of file InvokeTest.cpp.

References EXPECT_FALSE, EXPECT_TRUE, and value.

160  {
161  using traits = go_invoke_traits;
162 
167 }
static const char *const value
Definition: Conv.cpp:50
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
TEST_F ( InvokeTest  ,
free_is_invocable_r   
)

Definition at line 169 of file InvokeTest.cpp.

References EXPECT_FALSE, EXPECT_TRUE, and value.

169  {
170  using traits = go_invoke_traits;
171 
176 }
static const char *const value
Definition: Conv.cpp:50
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
TEST_F ( InvokeTest  ,
free_is_nothrow_invocable   
)

Definition at line 178 of file InvokeTest.cpp.

References EXPECT_FALSE, EXPECT_TRUE, and value.

178  {
179  using traits = go_invoke_traits;
180 
185 }
static const char *const value
Definition: Conv.cpp:50
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
TEST_F ( InvokeTest  ,
free_is_nothrow_invocable_r   
)

Definition at line 187 of file InvokeTest.cpp.

References EXPECT_FALSE, EXPECT_TRUE, and value.

187  {
188  using traits = go_invoke_traits;
189 
191  EXPECT_FALSE(
195 }
static const char *const value
Definition: Conv.cpp:50
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
TEST_F ( InvokeTest  ,
free_invoke_swap   
)

Definition at line 197 of file InvokeTest.cpp.

References a, b, EXPECT_EQ, folly::pushmi::invoke, and folly::f14::swap().

197  {
198  using traits = swap_invoke_traits;
199 
200  int a = 3;
201  int b = 4;
202 
203  traits::invoke(a, b);
204  EXPECT_EQ(4, a);
205  EXPECT_EQ(3, b);
206 
207  swappable::Obj x{3};
208  swappable::Obj y{4};
209 
210  traits::invoke(x, y);
211  EXPECT_EQ(3, x.x_);
212  EXPECT_EQ(4, y.x_);
213 
214  std::swap(x, y);
215  EXPECT_EQ(4, x.x_);
216  EXPECT_EQ(3, y.x_);
217 }
Definition: InvokeTest.cpp:58
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::invoke_fn invoke
char b
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1922
char a
Definition: InvokeTest.cpp:65
void swap(SwapTrackingAlloc< T > &, SwapTrackingAlloc< T > &)
Definition: F14TestUtil.h:414
TEST_F ( InvokeTest  ,
member_invoke   
)

Definition at line 219 of file InvokeTest.cpp.

References EXPECT_EQ, EXPECT_FALSE, EXPECT_TRUE, folly::pushmi::invoke, and folly::pushmi::__adl::noexcept().

219  {
220  using traits = test_invoke_traits;
221 
222  Obj fn;
223 
224  EXPECT_TRUE(noexcept(traits::invoke(fn, 1, 2)));
225  EXPECT_FALSE(noexcept(traits::invoke(fn, 1, "2")));
226 
227  EXPECT_EQ('a', traits::invoke(fn, 1, 2));
228  EXPECT_EQ(17, traits::invoke(fn, 1, "2"));
229 }
PUSHMI_INLINE_VAR constexpr struct folly::pushmi::invoke_fn invoke
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1922
requires E e noexcept(noexcept(s.error(std::move(e))))
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
TEST_F ( InvokeTest  ,
member_invoke_result   
)

Definition at line 231 of file InvokeTest.cpp.

References EXPECT_TRUE, and value.

231  {
232  using traits = test_invoke_traits;
233 
234  EXPECT_TRUE(
235  (std::is_same<char, traits::invoke_result_t<Obj, int, char>>::value));
236  EXPECT_TRUE(
237  (std::is_same<int volatile&&, traits::invoke_result_t<Obj, int, char*>>::
238  value));
239 }
static const char *const value
Definition: Conv.cpp:50
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
TEST_F ( InvokeTest  ,
member_is_invocable   
)

Definition at line 241 of file InvokeTest.cpp.

References EXPECT_FALSE, EXPECT_TRUE, and value.

241  {
242  using traits = test_invoke_traits;
243 
247 }
static const char *const value
Definition: Conv.cpp:50
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
TEST_F ( InvokeTest  ,
member_is_invocable_r   
)

Definition at line 249 of file InvokeTest.cpp.

References EXPECT_FALSE, EXPECT_TRUE, and value.

249  {
250  using traits = test_invoke_traits;
251 
255 }
static const char *const value
Definition: Conv.cpp:50
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
TEST_F ( InvokeTest  ,
member_is_nothrow_invocable   
)

Definition at line 257 of file InvokeTest.cpp.

References EXPECT_FALSE, EXPECT_TRUE, and value.

257  {
258  using traits = test_invoke_traits;
259 
263 }
static const char *const value
Definition: Conv.cpp:50
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862
TEST_F ( InvokeTest  ,
member_is_nothrow_invocable_r   
)

Definition at line 265 of file InvokeTest.cpp.

References EXPECT_FALSE, EXPECT_TRUE, and value.

265  {
266  using traits = test_invoke_traits;
267 
271 }
static const char *const value
Definition: Conv.cpp:50
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862