21 #include "absl/memory/memory.h"
22 #include "absl/status/status.h"
23 #include "gmock/gmock.h"
24 #include "gtest/gtest.h"
46 TEST(PipeTest, CanSendAndReceive) {
58 EXPECT_EQ(result, std::make_tuple(true, absl::optional<int>(42)));
59 return absl::OkStatus();
67 TEST(PipeTest, CanReceiveAndSend) {
79 EXPECT_EQ(result, std::make_tuple(absl::optional<int>(42), true));
80 return absl::OkStatus();
88 TEST(PipeTest, CanSeeClosedOnSend) {
97 auto receiver = std::make_shared<std::unique_ptr<PipeReceiver<int>>>(
104 Join(sender.Push(43),
107 return absl::OkStatus();
110 [](std::tuple<bool, absl::Status>
result) {
111 EXPECT_EQ(result, std::make_tuple(false, absl::OkStatus()));
112 return absl::OkStatus();
120 TEST(PipeTest, CanSeeClosedOnReceive) {
126 auto sender = std::make_shared<std::unique_ptr<PipeSender<int>>>(
135 Join(receiver.Next(),
138 return absl::OkStatus();
142 EXPECT_EQ(result, std::make_tuple(absl::optional<int>(),
144 return absl::OkStatus();
154 int main(
int argc,
char** argv) {