From d71717e75b11caa2bd5370246b36e455917312d8 Mon Sep 17 00:00:00 2001 From: couriersud Date: Sun, 5 Jul 2020 21:49:47 +0200 Subject: netlist: pfunction now supports unary minus operators. --- src/lib/netlist/tests/test_pfunction.cpp | 37 +++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 13 deletions(-) (limited to 'src/lib/netlist/tests/test_pfunction.cpp') 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(formula)()); + EXPECT_EQ(val, plib::pfunction(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("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("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("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("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("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("-A0", {"A0"})({3.0})); + PFUNCEXPECT("3*-trunc(3.2)", -9.0); + PFUNCEXPECT("3*-(3*2)", -18.0); + PFUNCEXPECT("3*-(2*1)^2", -12.0); +} -- cgit v1.2.3-70-g09d2