TEST(PipelineTest, HandlerInPipelineTwice) { auto handler = std::make_shared<IntHandler>(); EXPECT_CALL(*handler, attachPipeline(_)).Times(2); Pipeline<int, int> pipeline; pipeline.addBack(handler); pipeline.addBack(handler); pipeline.finalize(); EXPECT_FALSE(handler->getContext()); EXPECT_CALL(*handler, detachPipeline(_)).Times(2); }
TEST(Pipeline, DynamicConstruction) { { Pipeline<std::string, std::string> pipeline; pipeline.addBack(StringHandler()); pipeline.addBack(StringHandler()); // Exercise both addFront and addBack. Final pipeline is // StI <-> ItS <-> StS <-> StS <-> StI <-> ItS EXPECT_NO_THROW( pipeline .addFront(IntToStringHandler{}) .addFront(StringToIntHandler{}) .addBack(StringToIntHandler{}) .addBack(IntToStringHandler{}) .finalize()); } }