summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/tests/test_pfunction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/tests/test_pfunction.cpp')
-rw-r--r--src/lib/netlist/tests/test_pfunction.cpp37
1 files changed, 24 insertions, 13 deletions
diff --git a/src/lib/netlist/tests/test_pfunction.cpp b/src/lib/netlist/tests/test_pfunction.cpp
index 847865b4a4f..c82617659ec 100644
--- a/src/lib/netlist/tests/test_pfunction.cpp
+++ b/src/lib/netlist/tests/test_pfunction.cpp
@@ -12,27 +12,27 @@
#include "plib/pfunction.h"
#define PFUNCEXPECT(formula, val) \
- EXPECT_EQ(val, plib::pfunction<double>(formula)());
+ EXPECT_EQ(val, plib::pfunction<double>(formula)())
TEST(pfunction, operators)
{
- PFUNCEXPECT("1==1", 1.0)
- PFUNCEXPECT("1 *0 == 2-1-1", 1.0)
- PFUNCEXPECT("0!=1", 1.0)
- PFUNCEXPECT("0<1", 1.0)
- PFUNCEXPECT("1>0", 1.0)
- PFUNCEXPECT("0<=1", 1.0)
- PFUNCEXPECT("1>=0", 1.0)
- PFUNCEXPECT("1<=1", 1.0)
- PFUNCEXPECT("1>=1", 1.0)
+ PFUNCEXPECT("1==1", 1.0);
+ PFUNCEXPECT("1 *0 == 2-1-1", 1.0);
+ PFUNCEXPECT("0!=1", 1.0);
+ PFUNCEXPECT("0<1", 1.0);
+ PFUNCEXPECT("1>0", 1.0);
+ PFUNCEXPECT("0<=1", 1.0);
+ PFUNCEXPECT("1>=0", 1.0);
+ PFUNCEXPECT("1<=1", 1.0);
+ PFUNCEXPECT("1>=1", 1.0);
EXPECT_EQ(1.0, plib::pfunction<double>("0!=a", {"a"})({1.0}));
}
TEST(pfunction, func_if)
{
- PFUNCEXPECT("if(1>0, 2, 0)", 2.0)
- PFUNCEXPECT("if(0>1, 2, 3)", 3.0)
- PFUNCEXPECT("if(sin(1)>0, 2, 3)", 3.0) // fail
+ PFUNCEXPECT("if(1>0, 2, 0)", 2.0);
+ PFUNCEXPECT("if(0>1, 2, 3)", 3.0);
+ PFUNCEXPECT("if(sin(1)>0, 2, 3)", 3.0); // fail
EXPECT_EQ( 1.0, plib::pfunction<double>("if(A2>2.5, 0-A1, (0.07-(0.005*A1))*if(A0>2.5,1,0-1))", {"A0","A1","A2"})({1.0,-1.0,3.0}));
EXPECT_EQ(-0.065, plib::pfunction<double>("if(A2>2.5, 0-A1, (0.07-(0.005*A1))*if(A0>2.5,1,0-1))", {"A0","A1","A2"})({1.0,1.0,1.0}));
EXPECT_EQ( 0.065, plib::pfunction<double>("if(A2>2.5, 0-A1, (0.07-(0.005*A1))*if(A0>2.5,1,0-1))", {"A0","A1","A2"})({3.0,1.0,1.0}));
@@ -41,3 +41,14 @@ TEST(pfunction, func_if)
EXPECT_TRUE(1.0 == plib::pfunction<double>("0!=a", {"a"})({1.0}));
}
+TEST(pfunction, unary_minus)
+{
+ PFUNCEXPECT("-1>-2", 1.0);
+ PFUNCEXPECT("(-3)*(-4)", 12.0);
+ PFUNCEXPECT("(-3)*-4", 12.0);
+ PFUNCEXPECT("-3*-4", 12.0);
+ EXPECT_EQ( -3.0, plib::pfunction<double>("-A0", {"A0"})({3.0}));
+ PFUNCEXPECT("3*-trunc(3.2)", -9.0);
+ PFUNCEXPECT("3*-(3*2)", -18.0);
+ PFUNCEXPECT("3*-(2*1)^2", -12.0);
+}