proxygen
WillEqualTest.cpp File Reference

Go to the source code of this file.

Functions

 TEST (WillEqual, basic)
 

Function Documentation

TEST ( WillEqual  ,
basic   
)

Definition at line 22 of file WillEqualTest.cpp.

References EXPECT_FALSE, EXPECT_TRUE, folly::Promise< T >::getFuture(), folly::gen::move, and folly::Promise< T >::setValue().

22  {
23  // both p1 and p2 already fulfilled
24  {
25  Promise<int> p1;
26  Promise<int> p2;
27  p1.setValue(27);
28  p2.setValue(27);
29  auto f1 = p1.getFuture();
30  auto f2 = p2.getFuture();
31  EXPECT_TRUE(f1.willEqual(f2).get());
32  }
33  {
34  Promise<int> p1;
35  Promise<int> p2;
36  p1.setValue(27);
37  p2.setValue(36);
38  auto f1 = p1.getFuture();
39  auto f2 = p2.getFuture();
40  EXPECT_FALSE(f1.willEqual(f2).get());
41  }
42  // both p1 and p2 not yet fulfilled
43  {
44  Promise<int> p1;
45  Promise<int> p2;
46  auto f1 = p1.getFuture();
47  auto f2 = p2.getFuture();
48  auto f3 = f1.willEqual(f2);
49  p1.setValue(27);
50  p2.setValue(27);
51  EXPECT_TRUE(std::move(f3).get());
52  }
53  {
54  Promise<int> p1;
55  Promise<int> p2;
56  auto f1 = p1.getFuture();
57  auto f2 = p2.getFuture();
58  auto f3 = f1.willEqual(f2);
59  p1.setValue(27);
60  p2.setValue(36);
61  EXPECT_FALSE(std::move(f3).get());
62  }
63  // p1 already fulfilled, p2 not yet fulfilled
64  {
65  Promise<int> p1;
66  Promise<int> p2;
67  p1.setValue(27);
68  auto f1 = p1.getFuture();
69  auto f2 = p2.getFuture();
70  auto f3 = f1.willEqual(f2);
71  p2.setValue(27);
72  EXPECT_TRUE(std::move(f3).get());
73  }
74  {
75  Promise<int> p1;
76  Promise<int> p2;
77  p1.setValue(27);
78  auto f1 = p1.getFuture();
79  auto f2 = p2.getFuture();
80  auto f3 = f1.willEqual(f2);
81  p2.setValue(36);
82  EXPECT_FALSE(std::move(f3).get());
83  }
84  // p2 already fulfilled, p1 not yet fulfilled
85  {
86  Promise<int> p1;
87  Promise<int> p2;
88  p2.setValue(27);
89  auto f1 = p1.getFuture();
90  auto f2 = p2.getFuture();
91  auto f3 = f1.willEqual(f2);
92  p1.setValue(27);
93  EXPECT_TRUE(std::move(f3).get());
94  }
95  {
96  Promise<int> p1;
97  Promise<int> p2;
98  p2.setValue(36);
99  auto f1 = p1.getFuture();
100  auto f2 = p2.getFuture();
101  auto f3 = f1.willEqual(f2);
102  p1.setValue(27);
103  EXPECT_FALSE(std::move(f3).get());
104  }
105 }
constexpr detail::Map< Move > move
Definition: Base-inl.h:2567
Future< T > getFuture()
Definition: Promise-inl.h:97
#define EXPECT_TRUE(condition)
Definition: gtest.h:1859
std::enable_if< std::is_same< Unit, B >::value, void >::type setValue()
Definition: Promise.h:326
#define EXPECT_FALSE(condition)
Definition: gtest.h:1862