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 8 #include <boost/test/minimal.hpp> 9 10 #include <sstream> 11 12 13 template <typename T> 14 using term = boost::yap::terminal<boost::yap::expression, T>; 15 16 namespace yap = boost::yap; 17 18 test_main(int,char * [])19int test_main(int, char * []) 20 { 21 { 22 term<double> unity{1.0}; 23 24 { 25 auto expr = (unity + (unity + (unity + (unity + (unity + (unity + (unity + unity))))))); 26 double result = boost::yap::evaluate(expr); 27 BOOST_CHECK(result == 8.0); 28 } 29 30 { 31 auto expr = 32 (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + 33 (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + 34 (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + 35 (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + 36 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 double result = boost::yap::evaluate(expr); 42 BOOST_CHECK(result == 64.0); 43 } 44 45 #if 0 // This makes the Travis VMs barf. 46 { 47 auto expr = 48 (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + 49 (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + 50 (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + 51 (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + 52 53 (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + 54 (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + 55 (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity + 56 (unity + (unity + (unity + (unity + (unity + (unity + (unity + (unity)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); 57 double result = boost::yap::evaluate( 58 (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + 59 (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + 60 (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr + 61 (expr + (expr + (expr + (expr + (expr + (expr + (expr + (expr)))))))))))))))))))))))))))))))) 62 ); 63 BOOST_CHECK(result == 64.0 * 32.0); 64 } 65 #endif 66 } 67 68 return 0; 69 } 70