callback_tests.cpp
Go to the documentation of this file.
1 #include <gtest/gtest.h>
2 
3 #include <string>
4 #include <vector>
5 
6 #include <cpr/cpr.h>
7 
8 #include "server.h"
9 
10 using namespace cpr;
11 
12 static Server* server = new Server();
13 auto base = server->GetBaseUrl();
14 auto sleep_time = std::chrono::milliseconds(50);
15 auto zero = std::chrono::seconds(0);
16 
17 int status_callback(int& status_code, Response r) {
18  status_code = r.status_code;
19  return r.status_code;
20 }
21 
22 int status_callback_ref(int& status_code, const Response& r) {
23  status_code = r.status_code;
24  return r.status_code;
25 }
26 
28  expected_text = r.text;
29  return r.text;
30 }
31 
33  expected_text = r.text;
34  return r.text;
35 }
36 
37 TEST(CallbackGetTests, CallbackGetLambdaStatusTest) {
38  auto url = Url{base + "/hello.html"};
39  auto status_code = 0;
40  auto future = cpr::GetCallback([&status_code] (Response r) {
41  status_code = r.status_code;
42  return r.status_code;
43  }, url);
44  std::this_thread::sleep_for(sleep_time);
45  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
46  EXPECT_EQ(status_code, future.get());
47 }
48 
49 TEST(CallbackGetTests, CallbackGetLambdaTextTest) {
50  auto url = Url{base + "/hello.html"};
51  auto expected_text = std::string{};
52  auto future = cpr::GetCallback([&expected_text] (Response r) {
53  expected_text = r.text;
54  return r.text;
55  }, url);
56  std::this_thread::sleep_for(sleep_time);
57  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
58  EXPECT_EQ(expected_text, future.get());
59 }
60 
61 TEST(CallbackGetTests, CallbackGetLambdaStatusReferenceTest) {
62  auto url = Url{base + "/hello.html"};
63  auto status_code = 0;
64  auto future = cpr::GetCallback([&status_code] (const Response& r) {
65  status_code = r.status_code;
66  return r.status_code;
67  }, url);
68  std::this_thread::sleep_for(sleep_time);
69  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
70  EXPECT_EQ(status_code, future.get());
71 }
72 
73 TEST(CallbackGetTests, CallbackGetLambdaTextReferenceTest) {
74  auto url = Url{base + "/hello.html"};
75  auto expected_text = std::string{};
76  auto future = cpr::GetCallback([&expected_text] (const Response& r) {
77  expected_text = r.text;
78  return r.text;
79  }, url);
80  std::this_thread::sleep_for(sleep_time);
81  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
82  EXPECT_EQ(expected_text, future.get());
83 }
84 
85 TEST(CallbackGetTests, CallbackGetFunctionStatusTest) {
86  auto url = Url{base + "/hello.html"};
87  auto status_code = 0;
88  auto callback = std::function<int(Response)>(std::bind(status_callback, std::ref(status_code),
89  std::placeholders::_1));
90  auto future = cpr::GetCallback(callback, url);
91  std::this_thread::sleep_for(sleep_time);
92  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
93  EXPECT_EQ(status_code, future.get());
94 }
95 
96 TEST(CallbackGetTests, CallbackGetFunctionTextTest) {
97  auto url = Url{base + "/hello.html"};
98  auto expected_text = std::string{};
99  auto callback = std::function<std::string(Response)>(std::bind(text_callback,
100  std::ref(expected_text),
101  std::placeholders::_1));
102  auto future = cpr::GetCallback(callback, url);
103  std::this_thread::sleep_for(sleep_time);
104  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
105  EXPECT_EQ(expected_text, future.get());
106 }
107 
108 TEST(CallbackGetTests, CallbackGetFunctionStatusReferenceTest) {
109  auto url = Url{base + "/hello.html"};
110  auto status_code = 0;
111  auto callback = std::function<int(Response)>(std::bind(status_callback_ref,
112  std::ref(status_code),
113  std::placeholders::_1));
114  auto future = cpr::GetCallback(callback, url);
115  std::this_thread::sleep_for(sleep_time);
116  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
117  EXPECT_EQ(status_code, future.get());
118 }
119 
120 TEST(CallbackGetTests, CallbackGetFunctionTextReferenceTest) {
121  auto url = Url{base + "/hello.html"};
122  auto expected_text = std::string{};
123  auto callback = std::function<std::string(Response)>(std::bind(text_callback_ref,
124  std::ref(expected_text),
125  std::placeholders::_1));
126  auto future = cpr::GetCallback(callback, url);
127  std::this_thread::sleep_for(sleep_time);
128  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
129  EXPECT_EQ(expected_text, future.get());
130 }
131 
132 TEST(CallbackDeleteTests, CallbackDeleteLambdaStatusTest) {
133  auto url = Url{base + "/delete.html"};
134  auto status_code = 0;
135  auto future = cpr::DeleteCallback([&status_code] (Response r) {
136  status_code = r.status_code;
137  return r.status_code;
138  }, url);
139  std::this_thread::sleep_for(sleep_time);
140  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
141  EXPECT_EQ(status_code, future.get());
142 }
143 
144 TEST(CallbackDeleteTests, CallbackDeleteLambdaTextTest) {
145  auto url = Url{base + "/delete.html"};
146  auto expected_text = std::string{};
147  auto future = cpr::DeleteCallback([&expected_text] (Response r) {
148  expected_text = r.text;
149  return r.text;
150  }, url);
151  std::this_thread::sleep_for(sleep_time);
152  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
153  EXPECT_EQ(expected_text, future.get());
154 }
155 
156 TEST(CallbackDeleteTests, CallbackDeleteLambdaStatusReferenceTest) {
157  auto url = Url{base + "/delete.html"};
158  auto status_code = 0;
159  auto future = cpr::DeleteCallback([&status_code] (const Response& r) {
160  status_code = r.status_code;
161  return r.status_code;
162  }, url);
163  std::this_thread::sleep_for(sleep_time);
164  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
165  EXPECT_EQ(status_code, future.get());
166 }
167 
168 TEST(CallbackDeleteTests, CallbackDeleteLambdaTextReferenceTest) {
169  auto url = Url{base + "/delete.html"};
170  auto expected_text = std::string{};
171  auto future = cpr::DeleteCallback([&expected_text] (const Response& r) {
172  expected_text = r.text;
173  return r.text;
174  }, url);
175  std::this_thread::sleep_for(sleep_time);
176  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
177  EXPECT_EQ(expected_text, future.get());
178 }
179 
180 TEST(CallbackDeleteTests, CallbackDeleteFunctionStatusTest) {
181  auto url = Url{base + "/delete.html"};
182  auto status_code = 0;
183  auto callback = std::function<int(Response)>(std::bind(status_callback, std::ref(status_code),
184  std::placeholders::_1));
185  auto future = cpr::DeleteCallback(callback, url);
186  std::this_thread::sleep_for(sleep_time);
187  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
188  EXPECT_EQ(status_code, future.get());
189 }
190 
191 TEST(CallbackDeleteTests, CallbackDeleteFunctionTextTest) {
192  auto url = Url{base + "/delete.html"};
193  auto expected_text = std::string{};
194  auto callback = std::function<std::string(Response)>(std::bind(text_callback,
195  std::ref(expected_text),
196  std::placeholders::_1));
197  auto future = cpr::DeleteCallback(callback, url);
198  std::this_thread::sleep_for(sleep_time);
199  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
200  EXPECT_EQ(expected_text, future.get());
201 }
202 
203 TEST(CallbackDeleteTests, CallbackDeleteFunctionStatusReferenceTest) {
204  auto url = Url{base + "/delete.html"};
205  auto status_code = 0;
206  auto callback = std::function<int(Response)>(std::bind(status_callback_ref,
207  std::ref(status_code),
208  std::placeholders::_1));
209  auto future = cpr::DeleteCallback(callback, url);
210  std::this_thread::sleep_for(sleep_time);
211  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
212  EXPECT_EQ(status_code, future.get());
213 }
214 
215 TEST(CallbackDeleteTests, CallbackDeleteFunctionTextReferenceTest) {
216  auto url = Url{base + "/delete.html"};
217  auto expected_text = std::string{};
218  auto callback = std::function<std::string(Response)>(std::bind(text_callback_ref,
219  std::ref(expected_text),
220  std::placeholders::_1));
221  auto future = cpr::DeleteCallback(callback, url);
222  std::this_thread::sleep_for(sleep_time);
223  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
224  EXPECT_EQ(expected_text, future.get());
225 }
226 
227 TEST(CallbackHeadTests, CallbackHeadLambdaStatusTest) {
228  auto url = Url{base + "/hello.html"};
229  auto status_code = 0;
230  auto future = cpr::HeadCallback([&status_code] (Response r) {
231  status_code = r.status_code;
232  return r.status_code;
233  }, url);
234  std::this_thread::sleep_for(sleep_time);
235  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
236  EXPECT_EQ(status_code, future.get());
237 }
238 
239 TEST(CallbackHeadTests, CallbackHeadLambdaTextTest) {
240  auto url = Url{base + "/hello.html"};
241  auto expected_text = std::string{};
242  auto future = cpr::HeadCallback([&expected_text] (Response r) {
243  expected_text = r.text;
244  return r.text;
245  }, url);
246  std::this_thread::sleep_for(sleep_time);
247  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
248  EXPECT_EQ(expected_text, future.get());
249 }
250 
251 TEST(CallbackHeadTests, CallbackHeadLambdaStatusReferenceTest) {
252  auto url = Url{base + "/hello.html"};
253  auto status_code = 0;
254  auto future = cpr::HeadCallback([&status_code] (const Response& r) {
255  status_code = r.status_code;
256  return r.status_code;
257  }, url);
258  std::this_thread::sleep_for(sleep_time);
259  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
260  EXPECT_EQ(status_code, future.get());
261 }
262 
263 TEST(CallbackHeadTests, CallbackHeadLambdaTextReferenceTest) {
264  auto url = Url{base + "/hello.html"};
265  auto expected_text = std::string{};
266  auto future = cpr::HeadCallback([&expected_text] (const Response& r) {
267  expected_text = r.text;
268  return r.text;
269  }, url);
270  std::this_thread::sleep_for(sleep_time);
271  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
272  EXPECT_EQ(expected_text, future.get());
273 }
274 
275 TEST(CallbackHeadTests, CallbackHeadFunctionStatusTest) {
276  auto url = Url{base + "/hello.html"};
277  auto status_code = 0;
278  auto callback = std::function<int(Response)>(std::bind(status_callback, std::ref(status_code),
279  std::placeholders::_1));
280  auto future = cpr::HeadCallback(callback, url);
281  std::this_thread::sleep_for(sleep_time);
282  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
283  EXPECT_EQ(status_code, future.get());
284 }
285 
286 TEST(CallbackHeadTests, CallbackHeadFunctionTextTest) {
287  auto url = Url{base + "/hello.html"};
288  auto expected_text = std::string{};
289  auto callback = std::function<std::string(Response)>(std::bind(text_callback,
290  std::ref(expected_text),
291  std::placeholders::_1));
292  auto future = cpr::HeadCallback(callback, url);
293  std::this_thread::sleep_for(sleep_time);
294  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
295  EXPECT_EQ(expected_text, future.get());
296 }
297 
298 TEST(CallbackHeadTests, CallbackHeadFunctionStatusReferenceTest) {
299  auto url = Url{base + "/hello.html"};
300  auto status_code = 0;
301  auto callback = std::function<int(Response)>(std::bind(status_callback_ref,
302  std::ref(status_code),
303  std::placeholders::_1));
304  auto future = cpr::HeadCallback(callback, url);
305  std::this_thread::sleep_for(sleep_time);
306  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
307  EXPECT_EQ(status_code, future.get());
308 }
309 
310 TEST(CallbackHeadTests, CallbackHeadFunctionTextReferenceTest) {
311  auto url = Url{base + "/hello.html"};
312  auto expected_text = std::string{};
313  auto callback = std::function<std::string(Response)>(std::bind(text_callback_ref,
314  std::ref(expected_text),
315  std::placeholders::_1));
316  auto future = cpr::HeadCallback(callback, url);
317  std::this_thread::sleep_for(sleep_time);
318  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
319  EXPECT_EQ(expected_text, future.get());
320 }
321 
322 TEST(CallbackPostTests, CallbackPostLambdaStatusTest) {
323  auto url = Url{base + "/url_post.html"};
324  auto payload = Payload{{"x", "5"}};
325  auto status_code = 0;
326  auto future = cpr::PostCallback([&status_code] (Response r) {
327  status_code = r.status_code;
328  return r.status_code;
329  }, url, payload);
330  std::this_thread::sleep_for(sleep_time);
331  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
332  EXPECT_EQ(status_code, future.get());
333 }
334 
335 TEST(CallbackPostTests, CallbackPostLambdaTextTest) {
336  auto url = Url{base + "/url_post.html"};
337  auto payload = Payload{{"x", "5"}};
338  auto expected_text = std::string{};
339  auto future = cpr::PostCallback([&expected_text] (Response r) {
340  expected_text = r.text;
341  return r.text;
342  }, url, payload);
343  std::this_thread::sleep_for(sleep_time);
344  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
345  EXPECT_EQ(expected_text, future.get());
346 }
347 
348 TEST(CallbackPostTests, CallbackPostLambdaStatusReferenceTest) {
349  auto url = Url{base + "/url_post.html"};
350  auto payload = Payload{{"x", "5"}};
351  auto status_code = 0;
352  auto future = cpr::PostCallback([&status_code] (const Response& r) {
353  status_code = r.status_code;
354  return r.status_code;
355  }, url, payload);
356  std::this_thread::sleep_for(sleep_time);
357  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
358  EXPECT_EQ(status_code, future.get());
359 }
360 
361 TEST(CallbackPostTests, CallbackPostLambdaTextReferenceTest) {
362  auto url = Url{base + "/url_post.html"};
363  auto payload = Payload{{"x", "5"}};
364  auto expected_text = std::string{};
365  auto future = cpr::PostCallback([&expected_text] (const Response& r) {
366  expected_text = r.text;
367  return r.text;
368  }, url, payload);
369  std::this_thread::sleep_for(sleep_time);
370  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
371  EXPECT_EQ(expected_text, future.get());
372 }
373 
374 TEST(CallbackPostTests, CallbackPostFunctionStatusTest) {
375  auto url = Url{base + "/url_post.html"};
376  auto payload = Payload{{"x", "5"}};
377  auto status_code = 0;
378  auto callback = std::function<int(Response)>(std::bind(status_callback, std::ref(status_code),
379  std::placeholders::_1));
380  auto future = cpr::PostCallback(callback, url, payload);
381  std::this_thread::sleep_for(sleep_time);
382  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
383  EXPECT_EQ(status_code, future.get());
384 }
385 
386 TEST(CallbackPostTests, CallbackPostFunctionTextTest) {
387  auto url = Url{base + "/url_post.html"};
388  auto payload = Payload{{"x", "5"}};
389  auto expected_text = std::string{};
390  auto callback = std::function<std::string(Response)>(std::bind(text_callback,
391  std::ref(expected_text),
392  std::placeholders::_1));
393  auto future = cpr::PostCallback(callback, url, payload);
394  std::this_thread::sleep_for(sleep_time);
395  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
396  EXPECT_EQ(expected_text, future.get());
397 }
398 
399 TEST(CallbackPostTests, CallbackPostFunctionStatusReferenceTest) {
400  auto url = Url{base + "/url_post.html"};
401  auto payload = Payload{{"x", "5"}};
402  auto status_code = 0;
403  auto callback = std::function<int(Response)>(std::bind(status_callback_ref,
404  std::ref(status_code),
405  std::placeholders::_1));
406  auto future = cpr::PostCallback(callback, url, payload);
407  std::this_thread::sleep_for(sleep_time);
408  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
409  EXPECT_EQ(status_code, future.get());
410 }
411 
412 TEST(CallbackPostTests, CallbackPostFunctionTextReferenceTest) {
413  auto url = Url{base + "/url_post.html"};
414  auto payload = Payload{{"x", "5"}};
415  auto expected_text = std::string{};
416  auto callback = std::function<std::string(Response)>(std::bind(text_callback_ref,
417  std::ref(expected_text),
418  std::placeholders::_1));
419  auto future = cpr::PostCallback(callback, url, payload);
420  std::this_thread::sleep_for(sleep_time);
421  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
422  EXPECT_EQ(expected_text, future.get());
423 }
424 
425 TEST(CallbackPutTests, CallbackPutLambdaStatusTest) {
426  auto url = Url{base + "/url_post.html"};
427  auto payload = Payload{{"x", "5"}};
428  auto status_code = 0;
429  auto future = cpr::PutCallback([&status_code] (Response r) {
430  status_code = r.status_code;
431  return r.status_code;
432  }, url, payload);
433  std::this_thread::sleep_for(sleep_time);
434  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
435  EXPECT_EQ(status_code, future.get());
436 }
437 
438 TEST(CallbackPutTests, CallbackPutLambdaTextTest) {
439  auto url = Url{base + "/url_post.html"};
440  auto payload = Payload{{"x", "5"}};
441  auto expected_text = std::string{};
442  auto future = cpr::PutCallback([&expected_text] (Response r) {
443  expected_text = r.text;
444  return r.text;
445  }, url, payload);
446  std::this_thread::sleep_for(sleep_time);
447  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
448  EXPECT_EQ(expected_text, future.get());
449 }
450 
451 TEST(CallbackPutTests, CallbackPutLambdaStatusReferenceTest) {
452  auto url = Url{base + "/url_post.html"};
453  auto payload = Payload{{"x", "5"}};
454  auto status_code = 0;
455  auto future = cpr::PutCallback([&status_code] (const Response& r) {
456  status_code = r.status_code;
457  return r.status_code;
458  }, url, payload);
459  std::this_thread::sleep_for(sleep_time);
460  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
461  EXPECT_EQ(status_code, future.get());
462 }
463 
464 TEST(CallbackPutTests, CallbackPutLambdaTextReferenceTest) {
465  auto url = Url{base + "/url_post.html"};
466  auto payload = Payload{{"x", "5"}};
467  auto expected_text = std::string{};
468  auto future = cpr::PutCallback([&expected_text] (const Response& r) {
469  expected_text = r.text;
470  return r.text;
471  }, url, payload);
472  std::this_thread::sleep_for(sleep_time);
473  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
474  EXPECT_EQ(expected_text, future.get());
475 }
476 
477 TEST(CallbackPutTests, CallbackPutFunctionStatusTest) {
478  auto url = Url{base + "/url_post.html"};
479  auto payload = Payload{{"x", "5"}};
480  auto status_code = 0;
481  auto callback = std::function<int(Response)>(std::bind(status_callback, std::ref(status_code),
482  std::placeholders::_1));
483  auto future = cpr::PutCallback(callback, url, payload);
484  std::this_thread::sleep_for(sleep_time);
485  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
486  EXPECT_EQ(status_code, future.get());
487 }
488 
489 TEST(CallbackPutTests, CallbackPutFunctionTextTest) {
490  auto url = Url{base + "/url_post.html"};
491  auto payload = Payload{{"x", "5"}};
492  auto expected_text = std::string{};
493  auto callback = std::function<std::string(Response)>(std::bind(text_callback,
494  std::ref(expected_text),
495  std::placeholders::_1));
496  auto future = cpr::PutCallback(callback, url, payload);
497  std::this_thread::sleep_for(sleep_time);
498  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
499  EXPECT_EQ(expected_text, future.get());
500 }
501 
502 TEST(CallbackPutTests, CallbackPutFunctionStatusReferenceTest) {
503  auto url = Url{base + "/url_post.html"};
504  auto payload = Payload{{"x", "5"}};
505  auto status_code = 0;
506  auto callback = std::function<int(Response)>(std::bind(status_callback_ref,
507  std::ref(status_code),
508  std::placeholders::_1));
509  auto future = cpr::PutCallback(callback, url, payload);
510  std::this_thread::sleep_for(sleep_time);
511  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
512  EXPECT_EQ(status_code, future.get());
513 }
514 
515 TEST(CallbackPutTests, CallbackPutFunctionTextReferenceTest) {
516  auto url = Url{base + "/url_post.html"};
517  auto payload = Payload{{"x", "5"}};
518  auto expected_text = std::string{};
519  auto callback = std::function<std::string(Response)>(std::bind(text_callback_ref,
520  std::ref(expected_text),
521  std::placeholders::_1));
522  auto future = cpr::PutCallback(callback, url, payload);
523  std::this_thread::sleep_for(sleep_time);
524  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
525  EXPECT_EQ(expected_text, future.get());
526 }
527 
528 TEST(CallbackOptionsTests, CallbackOptionsLambdaStatusTest) {
529  auto url = Url{base + "/hello.html"};
530  auto status_code = 0;
531  auto future = cpr::OptionsCallback([&status_code] (Response r) {
532  status_code = r.status_code;
533  return r.status_code;
534  }, url);
535  std::this_thread::sleep_for(sleep_time);
536  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
537  EXPECT_EQ(status_code, future.get());
538 }
539 
540 TEST(CallbackOptionsTests, CallbackOptionsLambdaTextTest) {
541  auto url = Url{base + "/hello.html"};
542  auto expected_text = std::string{};
543  auto future = cpr::OptionsCallback([&expected_text] (Response r) {
544  expected_text = r.text;
545  return r.text;
546  }, url);
547  std::this_thread::sleep_for(sleep_time);
548  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
549  EXPECT_EQ(expected_text, future.get());
550 }
551 
552 TEST(CallbackOptionsTests, CallbackOptionsLambdaStatusReferenceTest) {
553  auto url = Url{base + "/hello.html"};
554  auto status_code = 0;
555  auto future = cpr::OptionsCallback([&status_code] (const Response& r) {
556  status_code = r.status_code;
557  return r.status_code;
558  }, url);
559  std::this_thread::sleep_for(sleep_time);
560  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
561  EXPECT_EQ(status_code, future.get());
562 }
563 
564 TEST(CallbackOptionsTests, CallbackOptionsLambdaTextReferenceTest) {
565  auto url = Url{base + "/hello.html"};
566  auto expected_text = std::string{};
567  auto future = cpr::OptionsCallback([&expected_text] (const Response& r) {
568  expected_text = r.text;
569  return r.text;
570  }, url);
571  std::this_thread::sleep_for(sleep_time);
572  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
573  EXPECT_EQ(expected_text, future.get());
574 }
575 
576 TEST(CallbackOptionsTests, CallbackOptionsFunctionStatusTest) {
577  auto url = Url{base + "/hello.html"};
578  auto status_code = 0;
579  auto callback = std::function<int(Response)>(std::bind(status_callback, std::ref(status_code),
580  std::placeholders::_1));
581  auto future = cpr::OptionsCallback(callback, url);
582  std::this_thread::sleep_for(sleep_time);
583  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
584  EXPECT_EQ(status_code, future.get());
585 }
586 
587 TEST(CallbackOptionsTests, CallbackOptionsFunctionTextTest) {
588  auto url = Url{base + "/hello.html"};
589  auto expected_text = std::string{};
590  auto callback = std::function<std::string(Response)>(std::bind(text_callback,
591  std::ref(expected_text),
592  std::placeholders::_1));
593  auto future = cpr::OptionsCallback(callback, url);
594  std::this_thread::sleep_for(sleep_time);
595  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
596  EXPECT_EQ(expected_text, future.get());
597 }
598 
599 TEST(CallbackOptionsTests, CallbackOptionsFunctionStatusReferenceTest) {
600  auto url = Url{base + "/hello.html"};
601  auto status_code = 0;
602  auto callback = std::function<int(Response)>(std::bind(status_callback_ref,
603  std::ref(status_code),
604  std::placeholders::_1));
605  auto future = cpr::OptionsCallback(callback, url);
606  std::this_thread::sleep_for(sleep_time);
607  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
608  EXPECT_EQ(status_code, future.get());
609 }
610 
611 TEST(CallbackOptionsTests, CallbackOptionsFunctionTextReferenceTest) {
612  auto url = Url{base + "/hello.html"};
613  auto expected_text = std::string{};
614  auto callback = std::function<std::string(Response)>(std::bind(text_callback_ref,
615  std::ref(expected_text),
616  std::placeholders::_1));
617  auto future = cpr::OptionsCallback(callback, url);
618  std::this_thread::sleep_for(sleep_time);
619  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
620  EXPECT_EQ(expected_text, future.get());
621 }
622 
623 TEST(CallbackPatchTests, CallbackPatchLambdaStatusTest) {
624  auto url = Url{base + "/url_post.html"};
625  auto payload = Payload{{"x", "5"}};
626  auto status_code = 0;
627  auto future = cpr::PatchCallback([&status_code] (Response r) {
628  status_code = r.status_code;
629  return r.status_code;
630  }, url, payload);
631  std::this_thread::sleep_for(sleep_time);
632  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
633  EXPECT_EQ(status_code, future.get());
634 }
635 
636 TEST(CallbackPatchTests, CallbackPatchLambdaTextTest) {
637  auto url = Url{base + "/url_post.html"};
638  auto payload = Payload{{"x", "5"}};
639  auto expected_text = std::string{};
640  auto future = cpr::PatchCallback([&expected_text] (Response r) {
641  expected_text = r.text;
642  return r.text;
643  }, url, payload);
644  std::this_thread::sleep_for(sleep_time);
645  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
646  EXPECT_EQ(expected_text, future.get());
647 }
648 
649 TEST(CallbackPatchTests, CallbackPatchLambdaStatusReferenceTest) {
650  auto url = Url{base + "/url_post.html"};
651  auto payload = Payload{{"x", "5"}};
652  auto status_code = 0;
653  auto future = cpr::PatchCallback([&status_code] (const Response& r) {
654  status_code = r.status_code;
655  return r.status_code;
656  }, url, payload);
657  std::this_thread::sleep_for(sleep_time);
658  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
659  EXPECT_EQ(status_code, future.get());
660 }
661 
662 TEST(CallbackPatchTests, CallbackPatchLambdaTextReferenceTest) {
663  auto url = Url{base + "/url_post.html"};
664  auto payload = Payload{{"x", "5"}};
665  auto expected_text = std::string{};
666  auto future = cpr::PatchCallback([&expected_text] (const Response& r) {
667  expected_text = r.text;
668  return r.text;
669  }, url, payload);
670  std::this_thread::sleep_for(sleep_time);
671  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
672  EXPECT_EQ(expected_text, future.get());
673 }
674 
675 TEST(CallbackPatchTests, CallbackPatchFunctionStatusTest) {
676  auto url = Url{base + "/url_post.html"};
677  auto payload = Payload{{"x", "5"}};
678  auto status_code = 0;
679  auto callback = std::function<int(Response)>(std::bind(status_callback, std::ref(status_code),
680  std::placeholders::_1));
681  auto future = cpr::PatchCallback(callback, url, payload);
682  std::this_thread::sleep_for(sleep_time);
683  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
684  EXPECT_EQ(status_code, future.get());
685 }
686 
687 TEST(CallbackPatchTests, CallbackPatchFunctionTextTest) {
688  auto url = Url{base + "/url_post.html"};
689  auto payload = Payload{{"x", "5"}};
690  auto expected_text = std::string{};
691  auto callback = std::function<std::string(Response)>(std::bind(text_callback,
692  std::ref(expected_text),
693  std::placeholders::_1));
694  auto future = cpr::PatchCallback(callback, url, payload);
695  std::this_thread::sleep_for(sleep_time);
696  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
697  EXPECT_EQ(expected_text, future.get());
698 }
699 
700 TEST(CallbackPatchTests, CallbackPatchFunctionStatusReferenceTest) {
701  auto url = Url{base + "/url_post.html"};
702  auto payload = Payload{{"x", "5"}};
703  auto status_code = 0;
704  auto callback = std::function<int(Response)>(std::bind(status_callback_ref,
705  std::ref(status_code),
706  std::placeholders::_1));
707  auto future = cpr::PatchCallback(callback, url, payload);
708  std::this_thread::sleep_for(sleep_time);
709  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
710  EXPECT_EQ(status_code, future.get());
711 }
712 
713 TEST(CallbackPatchTests, CallbackPatchFunctionTextReferenceTest) {
714  auto url = Url{base + "/url_post.html"};
715  auto payload = Payload{{"x", "5"}};
716  auto expected_text = std::string{};
717  auto callback = std::function<std::string(Response)>(std::bind(text_callback_ref,
718  std::ref(expected_text),
719  std::placeholders::_1));
720  auto future = cpr::PatchCallback(callback, url, payload);
721  std::this_thread::sleep_for(sleep_time);
722  EXPECT_EQ(future.wait_for(zero), std::future_status::ready);
723  EXPECT_EQ(expected_text, future.get());
724 }
725 
726 int main(int argc, char** argv) {
727  ::testing::InitGoogleTest(&argc, argv);
729  return RUN_ALL_TESTS();
730 }
std::string text_callback(std::string &expected_text, Response r)
auto HeadCallback(Then then, Ts...ts) -> std::future< decltype(then(Head(std::move(ts)...)))>
Definition: api.h:122
Environment * AddGlobalTestEnvironment(Environment *env)
Definition: gtest.h:1342
#define bind
Definition: setup-os400.h:211
Definition: server.h:12
std::string Url
Definition: cprtypes.h:14
auto DeleteCallback(Then then, Ts...ts) -> std::future< decltype(then(Delete(std::move(ts)...)))>
Definition: api.h:145
::std::string string
Definition: gtest-port.h:1129
std::string text
Definition: response.h:28
auto zero
auto PostCallback(Then then, Ts...ts) -> std::future< decltype(then(Post(std::move(ts)...)))>
Definition: api.h:76
auto OptionsCallback(Then then, Ts...ts) -> std::future< decltype(then(Options(std::move(ts)...)))>
Definition: api.h:168
static Server * server
std::string text_callback_ref(std::string &expected_text, const Response &r)
auto sleep_time
TEST(CallbackGetTests, CallbackGetLambdaStatusTest)
int main(int argc, char **argv)
int status_callback(int &status_code, Response r)
Url GetBaseUrl()
Definition: server.cpp:625
auto GetCallback(Then then, Ts...ts) -> std::future< decltype(then(Get(std::move(ts)...)))>
Definition: api.h:53
#define EXPECT_EQ(expected, actual)
Definition: gtest.h:2015
std::int32_t status_code
Definition: response.h:27
Definition: auth.cpp:3
auto base
int status_callback_ref(int &status_code, const Response &r)
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
Definition: gtest.h:2325
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
Definition: gtest.cc:5292
auto PutCallback(Then then, Ts...ts) -> std::future< decltype(then(Put(std::move(ts)...)))>
Definition: api.h:99
auto PatchCallback(Then then, Ts...ts) -> std::future< decltype(then(Patch(std::move(ts)...)))>
Definition: api.h:192
static size_t callback(char *ptr, size_t size, size_t nmemb, void *data)


rc_tagdetect_client
Author(s): Monika Florek-Jasinska , Raphael Schaller
autogenerated on Sat Feb 13 2021 03:42:08