#define BOOST_PROTO17_CONVERSION_OPERATOR_TEMPLATE #include "expression.hpp" #include #include template using term = boost::proto17::terminal; namespace bp17 = boost::proto17; TEST(left, depth_stress_test) { term unity{1.0}; { auto expr = (unity + (unity + (unity + (unity + (unity + (unity + (unity + unity))))))); double result = expr; EXPECT_EQ(result, 8.0); } { auto expr = (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); double result = expr; EXPECT_EQ(result, 64.0); } { auto expr = (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); double result = (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); EXPECT_EQ(result, 64.0 * 64.0); } }