#include #include #include #include #include #include #include #include namespace freepipe { class PipeTest : public testing::Test { protected: void SetUp() override { boost::asio::signal_set signals{*io_context_, SIGINT, SIGTERM}; // signals.async_wait([this](auto, auto) { io_context_->stop(); }); } void TearDown() override { io_context_->run(); // Any cleanup code can go here if needed } protected: std::shared_ptr io_context_ = std::make_shared(); }; TEST_F(PipeTest, Single) { Pipe const p{io_context_}; auto r = p | [] { return 42; } | [](auto result) { EXPECT_EQ(result, 42); return result; } | std::cout | [] { SUCCEED(); return 0; } | [](auto result) { EXPECT_EQ(result, 0); } | [] { return 0; }; EXPECT_EQ(*r, std::tuple{0}); } // TEST_F(PipeTest, Fork) { // Pipe p; // auto r = p | // std::tuple{[] { return 42; } | [](auto exp) { EXPECT_EQ(exp, 42); }, [] { return 2; }} // | // [](auto life, auto mul) { return life * mul; } | // std::tuple{std::cout, [](auto res) { return res; }} | [](auto res) { // EXPECT_EQ(res, 84); // return res; // }; // EXPECT_EQ(*r, std::tuple{84}); // } } // namespace freepipe