9 #include "gtest/gtest.h" 
   11 #include "boost/smart_ptr.hpp" 
   12 #include "boost/tuple/tuple.hpp" 
   13 #include "boost/variant/get.hpp" 
   14 #include "boost/variant/variant.hpp" 
   23         double value = boost::get<double>(args[0]);
 
   24         if (value < 0.0) 
return boost::make_tuple(0.0, 
false);
 
   25         return boost::make_tuple(
sqrt(value), 
true);
 
   33         double base = boost::get<double>(args[0]);
 
   34         double exponent = boost::get<double>(args[1]);
 
   35         return boost::make_tuple(
pow(base, exponent), 
true);
 
   40     class FromFileExpressionTest : 
public ::testing::Test {
 
   43         FromFileExpressionTest() {
 
   47         virtual ~FromFileExpressionTest() {
 
   54         virtual void SetUp() {
 
   59         virtual void TearDown() {
 
   66     TEST_F(FromFileExpressionTest, EvaluateFromFileExpression) {
 
   69         double expected = 0.3126 + 0.3561 + 0.4242;
 
   74         funcs.insert(std::pair<std::string, client::function::type>
 
   77         std::string testexpr = 
"fromFile(\"resources/fromfile_test.dat\")";
 
   78         boost::scoped_ptr<Expression> 
e(
new Expression(testexpr, funcs));
 
   81             result = 
e->evaluate(vars);
 
   84         ASSERT_NEAR(expected, boost::get<0>(result), 1
e-6);
 
   85         ASSERT_TRUE(boost::get<1>(result));
 
   88     TEST_F(FromFileExpressionTest, EvaluateCombinedFromFileExpression) {
 
   91         double expected = 
sqrt(
pow(0.3126 + 0.3561 + 0.4242, 2) + 
pow(0.1263 - 0.5613 + 0.2424, 2));
 
   96         funcs.insert(std::pair<std::string, client::function::type>
 
   99         sqrt_func = my_sqrt();
 
  100         funcs.insert(std::pair<std::string, client::function::type>
 
  101                 (
"sqrt", sqrt_func));
 
  104         funcs.insert(std::pair<std::string, client::function::type>
 
  107         std::string testexpr = 
"sqrt(pow(fromFile(\"resources/fromfile_test.dat\"), 2) + " 
  108             "pow(fromFile(\"resources/fromfile_test2.dat\"), 2))";
 
  109         boost::scoped_ptr<Expression> 
e(
new Expression(testexpr, funcs));
 
  112             result = 
e->evaluate(vars);
 
  115         ASSERT_NEAR(expected, boost::get<0>(result), 1
e-6);
 
  116         ASSERT_TRUE(boost::get<1>(result));
 
  121 int main(
int argc, 
char **argv) {
 
  122     ::testing::InitGoogleTest(&argc, argv);
 
  123     return RUN_ALL_TESTS();
 
constexpr double e
The value of . 
Expression to be evaluated in the framework. 
boost::tuple< double, bool > Result_t
std::vector< argument_t > arguments_t
Tps< T > pow(const Tps< T > &x, int y)
Integer power. 
Tps< T > sqrt(const Tps< T > &x)
Square root. 
int main(int argc, char *argv[])
boost::function< boost::tuple< double, bool >arguments_t)> type
double FromFile(std::string file, const std::vector< double > &referencePoint)
std::map< std::string, double > variableDictionary_t
std::map< std::string, client::function::type > functionDictionary_t