pipeline/tests/pipe.test.cpp
2025-08-10 17:30:51 +01:00

64 lines
1.5 KiB
C++

#include <boost/asio/io_context.hpp>
#include <boost/asio/signal_set.hpp>
#include <freepipe/freepipe.hpp>
#include <gtest/gtest.h>
#include <csignal>
#include <iostream>
#include <memory>
#include <tuple>
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<boost::asio::io_context> io_context_ =
std::make_shared<boost::asio::io_context>();
};
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