depth_stress_test_left.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Copyright (C) 2016-2018 T. Zachary Laine
  2. //
  3. // Distributed under the Boost Software License, Version 1.0. (See
  4. // accompanying file LICENSE_1_0.txt or copy at
  5. // http://www.boost.org/LICENSE_1_0.txt)
  6. #include <boost/yap/expression.hpp>
  7. #include <boost/test/minimal.hpp>
  8. #include <sstream>
  9. template <typename T>
  10. using term = boost::yap::terminal<boost::yap::expression, T>;
  11. namespace yap = boost::yap;
  12. int test_main(int, char * [])
  13. {
  14. {
  15. term<double> unity{1.0};
  16. {
  17. auto expr = (unity + (unity + (unity + (unity + (unity + (unity + (unity + unity)))))));
  18. double result = boost::yap::evaluate(expr);
  19. BOOST_CHECK(result == 8.0);
  20. }
  21. {
  22. auto expr =
  23. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  24. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  25. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  26. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  27. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  28. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  29. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  30. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
  31. double result = boost::yap::evaluate(expr);
  32. BOOST_CHECK(result == 64.0);
  33. }
  34. #if 0 // This makes the Travis VMs barf.
  35. {
  36. auto expr =
  37. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  38. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  39. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  40. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  41. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  42. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  43. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity +
  44. (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));
  45. double result = boost::yap::evaluate(
  46. (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr +
  47. (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr +
  48. (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr +
  49. (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr))))))))))))))))))))))))))))))))
  50. );
  51. BOOST_CHECK(result == 64.0 * 32.0);
  52. }
  53. #endif
  54. }
  55. return 0;
  56. }