#define BOOST_YAP_CONVERSION_OPERATOR_TEMPLATE 1 #include #include #include template using term = boost::yap::terminal; namespace yap = boost::yap; 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); } #if 0 // This makes the Travis VMs barf. { 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)))))))))))))))))))))))))))))))); EXPECT_EQ(result, 64.0 * 32.0); } #endif }