1 #include "exprtkTools.hpp"
2 
3 #include <gmock/gmock.h>
4 #include <gtest/gtest.h>
5 
TEST(TestExprtkTools,max)6 TEST(TestExprtkTools, max)
7 {
8     std::vector<double> v(3, 0.1);
9     FuncMaxIgnoreNaN<double> funcMaxIgnoreNaN;
10     EXPECT_DOUBLE_EQ(funcMaxIgnoreNaN(v), 0.1);
11 
12     v[0] = std::numeric_limits<double>::quiet_NaN();
13     EXPECT_DOUBLE_EQ(funcMaxIgnoreNaN(v), 0.1);
14 
15     v[1] = std::numeric_limits<double>::quiet_NaN();
16     EXPECT_DOUBLE_EQ(funcMaxIgnoreNaN(v), 0.1);
17 
18     v[2] = std::numeric_limits<double>::quiet_NaN();
19     EXPECT_TRUE(std::isnan(funcMaxIgnoreNaN(v)));
20 }
21 
TEST(TestExprtkTools,sum)22 TEST(TestExprtkTools, sum)
23 {
24     std::vector<double> v(3, 0.1);
25     FuncSumIgnoreNaN<double> funcSumIgnoreNaN;
26     EXPECT_DOUBLE_EQ(funcSumIgnoreNaN(v), 0.3);
27 
28     v[0] = std::numeric_limits<double>::quiet_NaN();
29     EXPECT_DOUBLE_EQ(funcSumIgnoreNaN(v), 0.2);
30 
31     v[1] = std::numeric_limits<double>::quiet_NaN();
32     EXPECT_DOUBLE_EQ(funcSumIgnoreNaN(v), 0.1);
33 
34     v[2] = std::numeric_limits<double>::quiet_NaN();
35     EXPECT_TRUE(std::isnan(funcSumIgnoreNaN(v)));
36 }
37 
TEST(TestExprtkTools,ifNan)38 TEST(TestExprtkTools, ifNan)
39 {
40     double a = 1.0;
41     double b = 2.0;
42 
43     FuncIfNan<double> funcIfNan;
44     EXPECT_DOUBLE_EQ(funcIfNan(a, b), 1.0);
45 
46     a = std::numeric_limits<double>::quiet_NaN();
47     EXPECT_DOUBLE_EQ(funcIfNan(a, b), 2.0);
48 
49     b = std::numeric_limits<double>::quiet_NaN();
50     EXPECT_TRUE(std::isnan(funcIfNan(a, b)));
51 
52     a = 1.0;
53     EXPECT_DOUBLE_EQ(funcIfNan(a, b), 1.0);
54 }
55