64 lines
1.5 KiB
C++
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
|