depth_stress_test_right.cpp 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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 =
  18. unity + unity + unity + unity + unity + unity + unity + unity;
  19. double result = boost::yap::evaluate(expr);
  20. BOOST_CHECK(result == 8.0);
  21. }
  22. {
  23. auto expr =
  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. unity + unity + unity + unity + unity + unity + unity + unity;
  32. double result = boost::yap::evaluate(expr);
  33. BOOST_CHECK(result == 64.0);
  34. }
  35. #if 0 // This makes the Travis VMs barf.
  36. {
  37. auto expr =
  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. unity + unity + unity + unity + unity + unity + unity + unity;
  46. double result = boost::yap::evaluate(
  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. expr + expr + expr + expr + expr + expr + expr + expr
  51. );
  52. BOOST_CHECK(result == 64.0 * 32.0);
  53. }
  54. #endif
  55. }
  56. return 0;
  57. }